Calvin Rose
fc46030e7d
Add options to not include docstrings in binary.
...
This lets us build a smaller binary. The minimal tested
binary on x86-64 (with -Os, -s, and all options that shrink binary size
turned on) is about 240 kB.
2019-06-19 19:43:38 -04:00
Calvin Rose
19a0444f41
Appease MSVC
2019-06-19 09:45:56 -04:00
Calvin Rose
0102a72538
Update module/paths for saner defaults.
...
Relative imports will only check the paths
directly concerning relative imports.
2019-06-19 09:01:21 -04:00
Calvin Rose
264c5bc02b
Change default module/path.
...
Disallow loading directly with extension to be more
consistent and keep things simpler.
2019-06-19 00:34:15 -04:00
Calvin Rose
9ba8728176
Update module system.
...
Add relative imports and path normalization. This should
help towards a more composable build/dependency system.
2019-06-18 22:10:13 -04:00
Calvin Rose
e88a9af2f6
Add bytecode verification for peg unmarshaling.
2019-06-18 13:01:49 -04:00
Calvin Rose
a5e50a0f65
Fix windows getline.
2019-06-18 00:04:29 -04:00
Calvin Rose
7c35acca75
One more MSVC warning.
2019-06-17 23:53:38 -04:00
Calvin Rose
4bb57550c8
Silence some windows build warnings.
2019-06-17 23:50:39 -04:00
Calvin Rose
446ab037b0
Allow marshaling pegs.
2019-06-17 23:40:02 -04:00
Calvin Rose
4adfb9f2d3
Update changelog.
2019-06-17 22:46:38 -04:00
Calvin Rose
9c89d1c658
Inline yield when called with no arguments.
...
It was already inline when called with one argument.
2019-06-15 12:21:08 -04:00
Calvin Rose
3598f056bb
Reformat capi.c
2019-06-15 11:04:24 -04:00
Calvin Rose
779fcf2d54
Merge pull request #124 from ALSchwalm/parse-state
...
Add support for getting more detailed parser state
2019-06-15 11:00:06 -04:00
Adam Schwalm
3bbc121c6a
Add support for getting more detailed parser state
2019-06-15 07:37:01 -05:00
Calvin Rose
82edc19137
Update cook to take headers for natives.
...
This should help incremental building.
2019-06-13 00:41:20 -04:00
Calvin Rose
5689ef1af1
Add keyword flag utility for modules.
2019-06-12 12:05:48 -04:00
Calvin Rose
647139cdf9
Fix string/check-set.
...
Also change external unification identifier in match macro
to @. This means we can more easily match symbol literals.
2019-06-10 14:00:51 -04:00
Calvin Rose
6225f8d334
Fix defn docstring typo.
2019-06-09 09:18:16 -04:00
Calvin Rose
43520ac67d
Add parser/clone. ( #120 )
2019-06-08 17:16:36 -04:00
Calvin Rose
802a2d6b71
Add more dynamic bindings for printing.
2019-06-08 15:27:13 -04:00
Calvin Rose
d9a4ef05ac
Update docstring format.
...
Also add :p flag to fiber/new, change implemntation of with-dyns, and
make meson build install static library by default.
2019-06-08 10:30:43 -04:00
Andrew Chambers
2b7428ed2b
Add file/{fdopen,fileno} functions.
2019-06-08 10:33:29 +12:00
Calvin Rose
64a80c57e3
Tables created via table_init cannot leak memory.
...
Before, if Janet paniced without calling table_deinit
on a table created via table_init, Janet leaked memory.
This changes tables so that tables created via table_init
us scratch memory for auto cleanup instead of normal
malloc/free.
2019-06-05 17:08:49 -04:00
Calvin Rose
efb2ab06cb
Remove array_init and array_deinit
...
These functions made it very easy to create memory
leaks, and are better replaced with functions in vector.h or
simply using non-stack allocated arrays.
2019-06-05 16:19:51 -04:00
Calvin Rose
6e8beff0a0
Add optional argument to parser/where to set index.
...
DSLs that use the parser API can use this to more accurately
report source location.
2019-06-03 10:48:16 -04:00
Calvin Rose
c21eaa5474
Fix redefinition.
2019-06-02 20:09:16 -04:00
Calvin Rose
13667292c6
Expose signal, type, and status name arrays.
...
Makes it easier to print status stuff.
2019-06-02 20:05:17 -04:00
Adam Schwalm
64bf52372a
Allow all-bindings and dynamics to search specific env
2019-06-02 10:12:46 -05:00
Calvin Rose
0a9715a94c
Bump version to 1.0.0
2019-06-01 23:52:01 -04:00
Calvin Rose
c82aac1365
Refer to @ as atsign not ampersand.
2019-06-01 23:40:59 -04:00
Calvin Rose
e697cc3811
Make os/execute not leak memory on panics.
...
Since many calls can panic, it's best
to only use scratch memory for temporary values.
2019-06-01 23:38:10 -04:00
Calvin Rose
c150f2f2c1
Add scratch memory API.
...
This should make it easier to write
code that does not leak memory on panics.
2019-06-01 23:31:39 -04:00
Calvin Rose
3d76d988c3
More work on installation and moving files around.
...
Move all installed libraries into auxlib.
Move all installed executable scripts into auxbin.
2019-06-01 10:38:28 -04:00
Calvin Rose
bea6dbbf3d
Hint utf8 output on windows console.
2019-05-31 15:30:23 -04:00
Calvin Rose
e1bd24c2ab
Make os/execute on windows closer to posix version
2019-05-31 15:02:44 -04:00
Calvin Rose
1f30ea66e9
Windows quick fix.
2019-05-31 13:45:39 -04:00
Calvin Rose
c43aaf8986
More work to os/execute.
...
Use environ when eflag not given. Also try to escape windows
command line strings correctly.
2019-05-31 13:44:14 -04:00
Calvin Rose
2acc81d1c5
Add noreturn attribute to panic functions.
2019-05-31 10:10:20 -04:00
Calvin Rose
d005ac6888
Appease MSVC.
2019-05-30 19:21:11 -04:00
Calvin Rose
7fdb098a20
Add process.h.
2019-05-30 19:14:54 -04:00
Calvin Rose
a4a200e037
Spawn.h not found in windows.
2019-05-30 19:13:13 -04:00
Calvin Rose
15d95d8803
Windows include issue.
2019-05-30 18:50:52 -04:00
Calvin Rose
46950a8cb3
Convert os/execute to use posix_spawn.
2019-05-30 18:40:10 -04:00
Calvin Rose
c8cf7c2445
Appease MSVC.
2019-05-29 22:12:24 -04:00
Calvin Rose
1b63215aad
Remove extra functions.
2019-05-29 22:00:47 -04:00
Calvin Rose
bcbe42ab23
Add API version checking for modules.
...
Checking now actively implemented for dynamic modules
in a fully backwards compatible way.
2019-05-29 21:58:20 -04:00
Calvin Rose
31f502b508
Add more to util.h to help with amalg build.
2019-05-29 12:07:53 -04:00
Calvin Rose
4d47d92a4a
Windows WEXITSTATUS fix?
2019-05-29 11:53:57 -04:00
Calvin Rose
b39ad97a87
Fix up close to return proper exit code.
2019-05-29 11:50:46 -04:00
Calvin Rose
af23040d9c
file/close returns an integer.
...
If opened with popen, returns the exit code. Otherwise
returns nil.
2019-05-29 11:40:58 -04:00
Calvin Rose
fd2d706e33
Add os/remove.
2019-05-29 11:31:19 -04:00
Calvin Rose
7a7f586094
Merge branch 'master' of github.com:janet-lang/janet
2019-05-28 23:03:08 -04:00
Calvin Rose
db55277b58
Work on windows installer.
...
We will probably shift to NSIS as the default
installation method for windows. Shipping around a
single binary just doesn't cut it if we want to be able
to reliably use tools like `jpm` to build things.
2019-05-28 20:45:39 -04:00
Calvin Rose
486b80fa7b
Update changelog, change version to 0.6.0
2019-05-28 13:59:12 -04:00
Andrew Chambers
3c304ddc35
Add api for checking build compatibilty.
2019-05-28 13:51:40 +12:00
Calvin Rose
1696de233c
Add jpm tool, based on cook.
...
Modify cook as well.
2019-05-27 16:50:57 -04:00
Calvin Rose
ce9cd4fcef
Issue #113 Color console support for windows 10
...
Use SetConsoleMode winapi function to enable ANSI
escape codes if we can.
2019-05-26 22:31:30 -04:00
Calvin Rose
698e89aba4
Fix comment macro arity #110
2019-05-25 22:50:15 -04:00
Calvin Rose
4c8dd4b96c
Fix shell like scripts.
2019-05-25 19:28:00 -04:00
Calvin Rose
11998b3913
Remove resolver element in path tuple.
...
Try to simplify module/paths back to how it used to be.
2019-05-25 17:27:56 -04:00
Calvin Rose
840610facf
Add urlloader example.
...
Demonstrate loading files from URL.
2019-05-25 17:10:25 -04:00
Calvin Rose
0280deccae
Allow filters on templates in module/paths
...
This lets us make loaders depend on file suffixes, which
lets us more efficiently use full paths.
2019-05-25 16:13:02 -04:00
Calvin Rose
5deb13d73e
Update version 1.0.0 instead of 1.0.0-dev
2019-05-24 17:49:33 -04:00
Calvin Rose
010e2e4652
Add keyword arguments via &keys.
...
This makes it easier to document functions that
take keyword arguments and also prevents some allocations
with these functions. Before, this was possible via normal
variadic functions but created an intermediate tuple, and
the generated docstrings did not document the keys.
2019-05-24 17:03:22 -04:00
Calvin Rose
ddedae6831
Reenable computed gotos - they were disabled.
2019-05-24 13:54:23 -04:00
Calvin Rose
a303704a7d
Add some tests for the amalgamated source/
...
Adds tests to Makefile and CI on Poisx platforms.
2019-05-23 10:34:01 -04:00
Calvin Rose
b5e6c0b8fc
Address #109
...
Make repl work when default chunks not supplied.
2019-05-22 23:56:59 -04:00
Calvin Rose
98c46fcfb1
Update
2019-05-21 15:35:39 -04:00
Calvin Rose
409da697dd
Update JANET_TFLAG_CALLABLE.
...
Most datatypes in Janet are callable.
2019-05-21 15:33:35 -04:00
Calvin Rose
91c3685705
Remove JANET_WALIGN
...
It was not used anywhere in the source after some
refactoring to make better use of structs and unions for automatic
alignment.
2019-05-21 11:12:56 -04:00
Calvin Rose
411fc77ecf
Make env optional for compile.
2019-05-20 11:34:07 -04:00
Calvin Rose
55d8e8b56b
Fix issue with compilation with source name.
...
Also add tuple/sourcemap and tuple/setmap.
2019-05-20 04:02:38 -04:00
Calvin Rose
97ad4c4f89
Update manpage and make -k mode not exit on error.
2019-05-19 15:20:59 -04:00
Adam Schwalm
f444bd25ef
Add a 'compile-only' flag to the command line
...
This allows syntax checkers like the emacs 'flycheck-mode' to check
the source without side effects.
2019-05-19 12:55:28 -05:00
Andrew Chambers
ec43afb426
Minor documentation fixes.
2019-05-17 20:58:06 +12:00
Calvin Rose
56d903d75b
Remove extra closing paren.
2019-05-16 12:12:55 -04:00
Calvin Rose
7054e878fb
Add module/loaders for custom file types.
...
This will allow other languages/DSLs to very easily
integrate with Janet.
2019-05-16 12:05:40 -04:00
Calvin Rose
dde5351d11
Small changes to some doc strings.
2019-05-16 11:43:21 -04:00
Calvin Rose
7d49e3e6f1
Add unification to match macro.
...
Using a quote on a symbol prevents the match
macro from trying to create a binding to it, and
instead tells it that we are binding to a symbol
that is already in scope.
2019-05-16 10:05:54 -04:00
Calvin Rose
f35b5765d6
Set module/*headerpath* during bootstrap
...
Cook also uses module/*headerpath* for finding headers
rather than using module/*syspath*.
2019-05-15 10:49:16 -04:00
Calvin Rose
ad0f7d9b0d
Merge branch 'master' of github.com:janet-lang/janet
2019-05-15 00:05:00 -04:00
Calvin Rose
f647ac5631
Address #95
...
A very minimal code change made partition take strings.
2019-05-15 00:04:25 -04:00
Calvin Rose
e4c5eb4c76
Merge pull request #97 from Crestwave/haiku
...
Add support for Haiku
2019-05-14 21:53:40 -04:00
Crestwave
3b6a51df24
Add support for Haiku
2019-05-15 01:03:17 +00:00
Calvin Rose
f2313b9959
file/read on eof will return nil.
...
Also add documentation for :exit in import.
Address issue #91
Partially adress issue #93
2019-05-14 11:05:19 -04:00
Calvin Rose
805b3bbb88
Numbers require at least 1 significant digit.
...
Address issue #96
2019-05-14 08:44:38 -04:00
Calvin Rose
232ea22dc5
Add string/triml, string/trimr, and string/trim.
2019-05-10 16:09:49 -04:00
Calvin Rose
3388acd2db
Add dofile function.
...
Abstracts the actually running of a file from
the require function, so a file can be easily
evaluated without being cached.
2019-05-10 10:19:51 -04:00
Calvin Rose
52ab9fb475
Update cook tool and headers.
2019-05-09 17:37:46 -04:00
Calvin Rose
7a313f6038
Update CHANGELOG, string/has-suffix?|prefix?
...
string/has-suffix? and string/has-prefix? can now accept
all byte data types for both arguments.
2019-05-09 13:42:14 -04:00
Calvin Rose
bbcfaf1289
Fix use after free bug in buffer/format when printing self.
2019-05-08 15:25:25 -04:00
Calvin Rose
bfb0cb331e
No temporary buffer in PR #87
2019-05-08 10:53:23 -04:00
Andrew Chambers
1759252071
Fix use after free in buffer/push-string.
2019-05-08 10:49:25 -04:00
Calvin Rose
fff60b053b
Use memmove in buffer/blit when needed.
2019-05-08 09:29:21 -04:00
Calvin Rose
65ac17986a
Address similar issue to #86
...
buffer/blit could trigger a use after free if a buffer is
blitted with itself and modifies its length.
2019-05-08 08:55:43 -04:00
Calvin Rose
ff720f1320
Expose current fiber via janet_current_fiber().
2019-05-04 19:07:04 -04:00
Calvin Rose
88b8418253
Add simple tracing functionality to VM.
...
Also disable debugger for normal errors.
2019-05-04 15:05:00 -04:00
Calvin Rose
4fa1b28cad
Update changelog (string module)
...
Also run `make format` on code.
2019-05-04 10:11:52 -04:00
Andrew Chambers
c70d59edee
Add string/has-prefix? and string/has-suffix?.
2019-05-04 10:05:58 -04:00
Calvin Rose
1cfc7b3b0d
Add preliminary debugger to default repl.
...
Also upddate colors, and fix formatting.
2019-05-02 17:11:30 -04:00
Calvin Rose
bfb354b469
Fix 32 bit platforms.
2019-04-28 16:22:24 -04:00
Calvin Rose
25a93ac4a6
Fix loop :iterate.
2019-04-28 00:34:32 -04:00
Calvin Rose
0bad523913
Fix wrap functions.
2019-04-27 19:47:32 -04:00
Calvin Rose
5b36199aea
Fix MSVC warning.
2019-04-27 16:50:40 -04:00
Calvin Rose
f10028d41a
Add function versions of macro API bindings.
...
This should help address #81 . Also hide janet_exit
and janet_assert, as they are really meant for internal usage.
I have not verified that this yet actually works with Rust's
bindgen.
2019-04-27 15:47:12 -04:00
Calvin Rose
73b81e0253
Fix os/date doc typo.
2019-04-23 22:43:51 -04:00
Calvin Rose
20e94adb61
Update documentation for update function.
2019-04-21 15:44:03 -04:00
Calvin Rose
9100794cea
Drop leading and trailing newlines in longstrings.
...
Long, heredoc style strings can now have
a non semantic leading newline character. This makes it
easier to define large columns of text.
2019-04-21 13:34:41 -04:00
Calvin Rose
4ddf90e301
Make nanboxing on 64 bit platforms not the default.
...
64 bit nanboxing is kind of sketchy on non x86 architectures.
32 bit architectures seem to work better as the 32 implementation
doesn't rely on the format of the address space and layout of
double's in memory.
2019-04-18 12:52:28 -04:00
Calvin Rose
d1eca1cf52
Add all-dynamics to list current dynamic bindings.
2019-04-17 09:47:33 -04:00
Calvin Rose
7918add47d
Allow dynamically setting output for printers
...
Some functions like print and debug/stacktrace print
to a file, usually stdout. This file can now be optionally set
via a dynamic variable.
2019-04-16 21:44:19 -04:00
Calvin Rose
513d551df6
Move print in source code to io module.
...
print now reads the dynamic binding for :out
when choosing where to write to.
2019-04-16 19:10:01 -04:00
Calvin Rose
ddaa5e34e6
Fix web versinon repl colors.
2019-04-16 16:06:52 -04:00
Calvin Rose
208eb7520a
Update CHANGELOG.md and bump version.
2019-04-16 15:48:53 -04:00
Calvin Rose
2d7df6b78e
Many changes for adding dynamic (fiber-level) scope.
...
- Allow passing a table to fibers, which make fiber level scope easier.
- Add fiber/getenv, fiber/setenv, dyn, and setdyn
- Remove meta, *env*, and *doc-width*
- Some functions changed dignatures, and no longer take an env
2019-04-16 15:41:45 -04:00
Calvin Rose
7527142549
Prepare for 0.4.1 release
2019-04-14 11:42:41 -04:00
Calvin Rose
4e6193b67e
Fix parse insert bug.
2019-04-13 14:38:30 -04:00
Calvin Rose
1596511175
Fix undefined behavior bug with errors.
...
janet_vm_return_reg should only be set when janet_continue
is called. Otherwise, a panic may dump it's error message in
the wrong place, resulting in undefined behavior (often showing
the last return value or worse, segfaulting).
2019-04-10 23:29:40 -04:00
Calvin Rose
5287007cd6
Fix typo in comment.
2019-04-09 09:05:47 -04:00
Calvin Rose
e5a56174e2
Switch fexists to use os/stat when available.
...
When os/stat is not available, we first
try to read one byte from the file before
saying it is good. If that fails, it is not
a file that we can read from so it counts as not found.
2019-04-09 09:01:52 -04:00
Calvin Rose
6c68c7a35f
Address issue #78
...
(file/open path :r+) should help. On windows, result
is unknown as of now.
2019-04-09 08:38:56 -04:00
Calvin Rose
675c1030fd
Fix error message on an arity mismatch.
...
janet_call had a bad janet_printf.
2019-04-07 23:53:50 -04:00
Calvin Rose
ed65d04b81
Fix peg bug with arguments.
...
By holding on a reference to argv for a long time, we
may trigger a use after free bug if the stack is resized. In
janet c function, argv is only vvalid up until the next stack operation
on the fiber. We could say that this is the dynamic lifetime of
argv.
To fix this, we copy extra arguments into a tuple, which is properly
garbage collected.
2019-04-07 15:14:54 -04:00
Calvin Rose
fa1c5c85b5
Remove no-capture mode in pegs.
...
Some peg grammars could not capture values based on their position in a
larger grammar. This is a design limitation inheritted from LPeg, but no
longer needed as the replace mode is superseded by the accumulator mode,
which is more general if slightly harder to use.
2019-04-06 11:38:00 -04:00
Calvin Rose
ee35786c8f
semicolon
2019-04-05 14:45:45 -04:00
Calvin Rose
ec6e2cfd62
os/stat returns nil if file does not exist.
2019-04-05 14:45:04 -04:00
Calvin Rose
7d48e7fd1f
Remove some extra search paths.
2019-04-01 14:07:13 -04:00
Calvin Rose
0063e3a69d
Fix module path typo.
2019-04-01 13:48:30 -04:00
Calvin Rose
cd6c009c03
Reformat and use new os/stat capabilities.
2019-04-01 11:21:45 -04:00
Calvin Rose
b15cf193a0
Update os/stat
...
os/stat can now take a keyword as the second argument
to avoid creating a table if one only wants on value
from stat.
2019-04-01 11:11:15 -04:00
Calvin Rose
e239980da7
Quasiquoting bracketed tuples.
2019-03-31 14:15:26 -04:00
Calvin Rose
1709bce77e
Add os/rm and os/rmdir
2019-03-30 15:39:24 -04:00
Calvin Rose
d6ba2de888
Fix os/dir on windows.
2019-03-30 13:46:52 -04:00
Calvin Rose
61c0a4bc87
Windows has different defines for file modes.
2019-03-30 13:09:35 -04:00
Calvin Rose
8af28d3fa5
Windows bump.
2019-03-30 13:06:24 -04:00
Calvin Rose
970923d0e5
Update os/dir for windows.
2019-03-30 13:01:57 -04:00
Calvin Rose
5d7dc0a57c
Add os/dir support for linux/posix.
2019-03-30 12:36:27 -04:00
Calvin Rose
c5090606a4
Add os/stat function.
...
Allows getting more information about files. This
is really useful for writing software that needs to inspect
the file system (like a static site generator). We still need
a way to iterate directories though.
2019-03-30 12:06:14 -04:00
Calvin Rose
bf2d9ae634
Mess with includes for os.c
2019-03-28 23:34:24 -04:00
Calvin Rose
53c7f2eedd
Add more os module functions.
2019-03-28 23:23:58 -04:00
Calvin Rose
bfd3845218
Fix cfunction debugging issue
...
Cfunction were not describing themselves very well, as
their names were not be added to the registry.
2019-03-27 00:14:51 -04:00
J.-F. Cap
22d75d017f
fix AbstractType get/set error message
2019-03-26 21:47:12 -04:00
Calvin Rose
082639319e
Add colors to repl and string/format.
...
This makes the repl look nicer using ANSI
color codes, which are widely supported. The codes
can also be turned off via the -m flag.
2019-03-24 15:00:22 -04:00
Calvin Rose
2c9195b507
More updates to meson
...
Redo amalg script so we can more easily run
it from Meson.
2019-03-23 13:50:50 -04:00
Calvin Rose
7f1b5d4d70
Merge core.janet into boot.janet
...
This simplifies the build machinery a bit.
core.janet is never actually included in the final
binary, it is just used to generate an image file.
2019-03-22 18:34:50 -04:00
Calvin Rose
25aa7a26c5
Add experimental meson build.
...
Should help with IDE integration.
2019-03-22 18:07:10 -04:00
Calvin Rose
cb2caecbb3
Add janetconf.h for configuring builds.
...
Rather than edit the Makefile or the janet.h header yourself, use
janetconf.h to configure builds. This has the benefit of making it
easier to configure janet in a persitent but easy way.
2019-03-22 14:33:30 -04:00
Calvin Rose
94a2084723
Add tostring method for abstract types.
...
This lets abstract types customize how they
print for debugging.
2019-03-19 13:36:26 -04:00
Calvin Rose
22e24fb47b
Remove some dead code in bigint.
2019-03-19 12:30:44 -04:00