Calvin Rose
fe27df528c
Boot core library from image rather than source
...
This should speed up start time and reduce malloc/free
usage to about 15% of what is what previously for startup.
The current cost is slightly larger binary as the representaion
of the image is currently less compact than source code.
2019-02-08 00:44:30 -05:00
J.-F. Cap
8ab60e475a
typo in janet_indexed_view
...
(no consequence but look strange)
2019-02-08 01:10:07 +01:00
Calvin Rose
6321c30cb1
Add methods for file io.
2019-02-06 17:58:27 -05:00
Calvin Rose
74e1a3273f
Add method syntax to parser.
2019-02-05 19:43:41 -05:00
Calvin Rose
f6a3853131
Merge pull request #30 from jfcap/get-set-abstract
...
Get set abstract
2019-02-05 19:09:56 -05:00
J.-F. Cap
960cf76eb5
Experimental getter/setter for abstract types
2019-02-05 17:14:13 +01:00
Calvin Rose
1b735564fa
Update copyright.
2019-02-03 15:34:41 -05:00
Calvin Rose
cb5263d2d8
Remove extra comment.
2019-02-03 15:32:39 -05:00
Calvin Rose
8a3f512746
Experimental changes to janet_call to make it faster.
...
Remove setjmp and fiber creationg from janet_call. This
adds the constraint to janet_call can only be called when there
is already a current fiber.
2019-02-01 11:56:25 -05:00
Calvin Rose
19e59705b9
Main rule in peg is always 0
...
After we changed peg bytecode emission to
preallocate space for an instruction before
emitting sub rules, the rules are numbered
in the order that they are compiled. This means
that the main rule is always 0.
We can remove the explicitly stored main rule in
the peg structure.
2019-01-31 23:39:33 -05:00
Calvin Rose
367c9da856
Fix some typos and update style.
...
Add bars.janet tool for templating arbitrary
strings, especially HTML.
2019-01-31 22:38:59 -05:00
Calvin Rose
4bcf6565cd
Add parser/insert and bump to 0.4.0
2019-01-31 14:48:28 -05:00
Calvin Rose
0c950d0846
Fix emscripten build.
2019-01-31 13:02:09 -05:00
Calvin Rose
7ba925c50a
Make getline more useful.
2019-01-31 12:34:22 -05:00
Calvin Rose
cb3b9dd76f
Update changelog an fix typos.
2019-01-31 10:09:34 -05:00
Calvin Rose
c76f4e89d8
Remove redundancies in stacktraces.
...
There was an implementation for stacktraces in both
run.c and in core.janet, status-pp. The commit removes
the one in core.janet in favor of the C based stacktrace, which
is exposed via debug/stacktrace. Lots of reshuffling of run-context
ensued as well, which resulted in an api that is a bit cleaner.
2019-01-30 23:11:12 -05:00
Calvin Rose
85a211b26b
Remove extra vector function.
2019-01-30 21:22:40 -05:00
Calvin Rose
46c540b93e
Add math headers for emscripten
...
We now check for NaN in table.c and struct.c
as we disallow NaN keys.
2019-01-29 18:18:14 -05:00
Calvin Rose
32c209ede9
Address #25
2019-01-29 13:59:08 -05:00
Calvin Rose
0d293cd3f5
Update require to use real path name rather than module name.
2019-01-28 21:48:13 -05:00
Calvin Rose
f284776490
Address #24
2019-01-28 20:30:45 -05:00
Calvin Rose
38a7e4faf1
Disallow NaN as table/struct key.
...
Fix bugs and add tests for denormalized tables
and structs.
2019-01-28 11:50:33 -05:00
Calvin Rose
c333cbfa55
0.3.0
2019-01-26 21:40:04 -05:00
Calvin Rose
d85892edc8
0.3.1
2019-01-26 21:34:08 -05:00
Calvin Rose
68e00cdb7a
Update slurp and spit error handler.
2019-01-26 17:27:05 -05:00
Calvin Rose
e755f98300
Address #23
2019-01-25 20:31:08 -05:00
Calvin Rose
611543c48b
Add source amalgamation
...
The amalgamated source concatenates all sources
to a file janet.c which can be used for
embedding janet, much in the same way as sqlite
or mongoose.
2019-01-24 00:15:58 -05:00
Calvin Rose
795e7a9de8
Make os/date results more consistent.
2019-01-20 16:49:39 -05:00
Calvin Rose
090a6a8c5c
Add optional env arguments to eval functions.
2019-01-20 16:06:30 -05:00
Calvin Rose
2bbf9fdcc5
Add os/date to core library.
2019-01-20 14:34:33 -05:00
Calvin Rose
737b2449f0
Update highlight and the mainclient.
2019-01-20 10:05:51 -05:00
Calvin Rose
48b179d67e
Add slurp and spit to the core library.
2019-01-19 22:00:33 -05:00
Calvin Rose
bf8d5da3dc
Fix possible memory leak on buffer overflow.
...
(All buffer push functions can panic (longjmp), skipping
deinit. Instead, we should use the garbage collected api).
2019-01-19 12:32:52 -05:00
Calvin Rose
5ba969f91d
Make match macro prettier.
2019-01-18 15:24:58 -05:00
Calvin Rose
26818a5e5c
Fix doc generation.
2019-01-18 12:26:04 -05:00
Calvin Rose
b84b0e4828
Expose more of the module system.
...
The system path can more easily modified at runtime,
and the module/cache and module/loading tables are now exposed.
Properly cache native modules as well.
2019-01-18 12:04:34 -05:00
Calvin Rose
b4934ceddc
Make parser errors a bit better for files with no closing
...
delimiters.
2019-01-17 23:43:46 -05:00
Calvin Rose
c4114fbcdb
Add quote special to peg syntax to make captures terser.
2019-01-17 19:28:42 -05:00
Calvin Rose
95f2bbe0a0
Add highlight.janet tool which can highlight
...
janet source code and output html or terminal escaped code.
Also made re entrant calls into the vm provide better
error messages.
2019-01-17 18:12:26 -05:00
Calvin Rose
63137b8107
Fix parsing bug for numbers.
2019-01-17 12:32:51 -05:00
Calvin Rose
2c1b506213
Add tagged captures for a better (more correct) form of look behind.
2019-01-16 22:38:11 -05:00
Calvin Rose
612a245961
More work on peg. Disable indexed backrefs and replace substitution
...
with accumulation.
2019-01-16 21:11:55 -05:00
Calvin Rose
82cddef5bb
Update man page and add early exit to number scanning for parser.
2019-01-16 12:32:33 -05:00
Calvin Rose
d0fc29338c
Add error special form in Peg to allow construction of grammar errors
...
for more useful grammars that could eventually be used in a compiler.
2019-01-15 16:04:47 -05:00
Calvin Rose
4eeadd7463
Add optional form to peg (shorthand for (between 0 1 patt)).
2019-01-15 14:08:03 -05:00
Calvin Rose
3a9b50ea4a
Update peg doc and remame some peg specials.
2019-01-14 22:17:13 -05:00
Calvin Rose
1304f9263b
Update peg docs and make bad backrefs not error the whole pattern, but just cause the current match attempt to fail.
2019-01-14 21:47:55 -05:00
Calvin Rose
90313afd40
Update PEG documentation and peg syntax.
...
Disable tail calls in the root scope for better
stacktraces, as the root scope may contain a single call
to a failing function, as in the case of the test suite.
2019-01-14 20:41:32 -05:00
Calvin Rose
99f176f37b
Fix windows build warnings.
2019-01-14 17:48:32 -05:00
Calvin Rose
d0ec89c7c1
Update Matchtime captures to not include all of the
...
matched text automatically, and fix pattern recursion
in grammars.
2019-01-14 17:44:21 -05:00
Calvin Rose
170e785b72
Fix recursion in grammars.
2019-01-14 15:06:35 -05:00
Calvin Rose
e53778d5d8
Remove annoying (fiber) text from stacktrace.
2019-01-14 12:08:36 -05:00
Calvin Rose
192705113e
Add Matchtime captures to peg (Equivalent to LPegs lpeg.Cmt).
...
This allows that pattern to call an external function to
check if some text should match or not. This allows for
matching any possible language a computer can recognize.
2019-01-14 11:45:45 -05:00
Calvin Rose
97a42ea17b
Address some windows issues in buffer.c
2019-01-14 00:12:25 -05:00
Calvin Rose
2cd489b9d4
Address windows build warnings.
2019-01-14 00:09:27 -05:00
Calvin Rose
ff0d3a0081
Compile pegs to bytecode with (peg/compile). Peg
...
performance is improved, and peg syntax has been expanded with a few
more keywords.
2019-01-13 23:54:41 -05:00
Calvin Rose
282c02c475
Update comments and text.
2019-01-12 20:22:03 -05:00
Calvin Rose
798c88b4c8
Update peg to allow functions over captures. Update C API
...
to make janet function calls easier and faster from C (still
needs an object pool for fibers, though). Fix bug in scan-number
and add many more peg tests.
2019-01-12 17:31:15 -05:00
Calvin Rose
83f4a11bf3
Add some more tests, add parameterized captures to patterns,
...
and fix some bugs.
2019-01-12 11:04:47 -05:00
Calvin Rose
d7626f8c57
Add more capturing capabilities including substitutions, as well
...
as back references for PEGs. More documentation is needed for PEG
syntax, but the amount required will need an external document, not
just a docstring.
2019-01-12 10:16:25 -05:00
Calvin Rose
1efca2ebe7
Add some preliminary capturing ability to PEGs.
2019-01-11 21:09:49 -05:00
Calvin Rose
40845b5c1b
Initial peg implementation. Tree walk interpretted with
...
no captures, so not yet ready.
2019-01-11 19:22:24 -05:00
Calvin Rose
84fb07dd5a
Add quiet option to main client.
2019-01-10 17:10:12 -05:00
Calvin Rose
62cb3f81fe
Fix sorting in asm.c. Add README text.
2019-01-09 17:09:16 -05:00
Calvin Rose
16ebb11181
Add buffer/bit functions and buffer/blit. Expose janet_gethalfrange
...
in the C api for less duplicated range checking code.
2019-01-09 13:25:51 -05:00
Calvin Rose
115ed9cbb9
Move pretty printing to separate file pp.c
...
Simplify string.c and remove janet_puts.
2019-01-09 11:47:29 -05:00
Calvin Rose
3ae6f64de5
Fix popen bug.
2019-01-08 21:42:16 -05:00
Calvin Rose
5b1a3b8208
Make grammar tool completely generate grammar from scratch.
...
Remove grammar from source tree.
2019-01-08 19:59:54 -05:00
Calvin Rose
b1e0849a2f
Restore old status logic - (status checks in run_vm should be using
...
the previous status, not the current which is always JANET_STATUS_ALIVE)
2019-01-08 13:42:29 -05:00
Calvin Rose
67f26b7d72
Fix = should have been ==. Add some tests for vm type asserts.
2019-01-08 12:26:01 -05:00
Calvin Rose
aa079e3145
Fix parser regression.
2019-01-07 14:49:38 -05:00
Calvin Rose
d64a57297d
Update examples, add method like semantics to calling keywords.
2019-01-07 14:47:47 -05:00
Calvin Rose
be85196de8
Add callgrind task to Makefile.
...
Unify some parser states.
2019-01-06 21:49:24 -05:00
Calvin Rose
eae4e0dede
Add functionality that allows the set macro to
...
take a tuple as an l-value. Remove the old
multi-sym report in anticipation of a different
mechanism.
2019-01-06 19:33:27 -05:00
Calvin Rose
63dd6d03f4
Fix english
2019-01-06 12:05:40 -05:00
Calvin Rose
2a79d2e749
Remove check for function calls to enable all types,
...
even nil. Now any value can be called as a function, usually
looking itself up in an associative data structure.
2019-01-06 11:56:40 -05:00
Calvin Rose
6f3bc3d577
Update copyright date, fix types, remove trailing whitespace.
2019-01-06 03:23:03 -05:00
Calvin Rose
ef5eed2c21
Add source location to doc macro.
2019-01-06 02:10:56 -05:00
Calvin Rose
5865692401
Surround embedded documentation with a macro so it
...
can be disabled in a future build.
2019-01-06 01:49:56 -05:00
Calvin Rose
b626e73d19
Add extra argument to (native) to allow for passing
...
in custom environment to add stuff to.
2019-01-05 23:37:10 -05:00
Calvin Rose
b535c91ee1
Fix native module issue.
2019-01-05 22:52:28 -05:00
Calvin Rose
7b28032f5c
More explicit casts to please Microsoft compiler.
2019-01-05 21:58:39 -05:00
Calvin Rose
0fdd404a71
Remove duplicate functionality in string.c
2019-01-05 21:23:44 -05:00
Calvin Rose
1f98eff33a
Fix compiler warnings on emscripten.
2019-01-05 20:52:32 -05:00
Calvin Rose
338b31f5a2
Add janet_fixarity. Update emscripten source.
2019-01-05 20:45:24 -05:00
Calvin Rose
b60e3e302a
Update C API to use friendlier functions rather than macros.
...
Error handling is implemented with setjmp/longjmp so code
can be more concise. This required a very large but straight forward refactor for all
of the libraries.
2019-01-05 20:09:03 -05:00
Calvin Rose
5b62c8e6db
Better working panic implementation and more cleanup in main vm loop.
2019-01-05 00:33:20 -05:00
Calvin Rose
cd6a7793e8
WIP panic functionality.
2019-01-04 23:20:34 -05:00
Calvin Rose
5afb00859a
More cleanup in vm.c
2019-01-04 21:15:37 -05:00
Calvin Rose
001917f8d9
Begin clean up of vm.c
...
Replace the oparg macro with 5 named virtual registers, combine
pc++ with vm_next() macro to be more terse, and move setup and
teardown logic of janet_continue into a separate function.
These changes are preparation for using setjmp/longjmp to do
error handling in the VM. Introducing longjmp for error handling in
the VM would allow it to be used in the C API, which could result in
simpler, more compact code.
2019-01-04 20:08:43 -05:00
Calvin Rose
b9c0fc8201
Allow calling keywords and symbols as functions to look
...
themselves up in a data structure. Allow calling a data
structure to look up the argument.
2019-01-03 22:48:43 -05:00
Calvin Rose
d8b0a5ed01
Make parser API more robust - the value queue is now
...
distinct from the parse state, and is queried separately.
2019-01-03 20:48:54 -05:00
Calvin Rose
dd3fc24a1e
Make number syntax a bit stricter - no leading underscores
...
and no underscores in exponent.
2019-01-03 12:13:14 -05:00
Calvin Rose
337a498edb
Fix some keyword related issues.
2019-01-02 22:08:51 -05:00
Calvin Rose
5fff36d047
Remove janet_symbol_from_string api function.
2019-01-02 20:50:31 -05:00
Calvin Rose
58d480539c
Fix assembler labels after keyword update.
2019-01-02 19:55:42 -05:00
Calvin Rose
e9c94598e6
Add native keyword type to replace symbols with leading ':'
...
character.
2019-01-02 19:41:07 -05:00
Calvin Rose
29ec30c79f
Fix number parsing for bases between 2 and 9.
...
Allow multisyms to have number keys.
2019-01-02 16:39:24 -05:00
Calvin Rose
122312dbf6
Fix some typos and update comments.
2019-01-02 12:21:59 -05:00
Calvin Rose
618f8d6818
Add with-syms and combine bignat_add and bignatr mul
...
into a single operation for strtod.c
2019-01-02 10:23:11 -05:00