This allows for more flexible C interop from DLLs. Users can skip the
usual extension loading mechanism and manage function pointers manually
if they need to.
commit fbb0711ae1bb8bf1cc3738c46682b96938c50f78
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 12:07:55 2023 -0500
Distinguish between subprocess when testing.
commit 676b233566fa8fdb90af9ff801c29d7b4703c255
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:59:17 2023 -0500
Hack for qemu based testing (also should work with valgrind)
commit d7431c7cdbf0509ebe3e42888189dfe3cf6c7910
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:54:04 2023 -0500
Revert "Test removing 32bit ptr marshalling."
This reverts commit 566b45ea443d1d1c9b0bc6c345c4c33b3e07ed0e.
commit 566b45ea443d1d1c9b0bc6c345c4c33b3e07ed0e
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:52:22 2023 -0500
Test removing 32bit ptr marshalling.
commit ff2f71d2bca868206bee1923dcc8cd3ae5ec066e
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:42:10 2023 -0500
Conditionally compile marshal_ptr code.
commit bd420aeb0e51b4905fb7976fc379943cb55dc777
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:38:34 2023 -0500
Add range checking to bit-shift code to prevent undefined behavior.
commit b738319f8d4037dba639da1a310b52a441e4ba34
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:17:30 2023 -0500
Remove range check on 32 bit arch since it will always pass.
commit 72486262357aef3a5eaa4652e6288328c381ea7f
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:56:45 2023 -0500
Quiet some build warnings.
commit 141c1de946ff8376de6ecff3534e875fff047928
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:50:13 2023 -0500
Add marshal utilities for pointers.
commit c2d77d67207b1d4e71cab47a3b12ac27f801e72c
Merge: 677b8a6f ff90b81e
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:40:35 2023 -0500
Merge branch 'master' into armtest
commit 677b8a6f320e9170ea047fea9af74602881c4659
Author: Ico Doornekamp <ico@zevv.nl>
Date: Mon Jun 12 21:01:26 2023 +0200
Added ARM32 test
The use cases involve user-expandable grammars.
For example, consider the IRC nickname specification.
> They SHOULD NOT contain any dot character ('.', 0x2E).
> Servers MAY have additional implementation-specific nickname restrictions.
To implement this, we can do something along these lines:
```janet
(def nickname @{:main '(some :allowed)
:allowed (! (+ :forbidden/dot :forbidden/user))
# for lax mode, (put nickname :forbidden/dot false)
:forbidden/dot "."
# to add your own requirements
# (put nickname :forbidden/user 'something)
:forbidden/user false})
```
Additionally, it's common in parsing theory to allow matches of the
empty string (epsilon). `true` essentially allows for this.
Note that this does not strictly add new functionality, you could
emulate this previously using `0` and `(! 0)` respectively, but this
should be faster and more intuitive.
The speed improvement primarily comes from `(! 0)` which is now a single
step.
Previously, `*macro-lints*` was set after the `macroexpand1` fiber was
resumed, rather than just before. And, `*macro-lints*` was never
cleared. This behavior was typically fine since the main users of
`compile` pass the same lint array repeatedly, and the first macro
expansion (somewhere in boot.janet) never produces a lint. But, when
compiling with a fresh lint array, if the first macro invocation
produced a lint, the lint was always lost.