jolt/test
Yogthos e8cb4605ac feat: core.async Phase 2 — dynamic var binding conveyance
Jolt's dynamic-var binding stack was a single global array, so concurrent go
blocks interleaved each other's bindings and a go block didn't see the bindings
in effect when it was spawned.

Move the binding stack into Janet's fiber-local dyn (:jolt/binding-stack): each
fiber (go block) lazily gets its own array, so bindings can't interleave. Janet
ev/go fibers inherit the parent's dyn, but go-spawn now snapshots the binding
stack at spawn time and installs a private copy in the new fiber — Clojure
binding conveyance. A go block's own (binding ...) shadows the conveyed frame.

types.janet: cur-binding-stack / snapshot-bindings / install-bindings; var-get/
var-set/push/pop use the fiber-local stack. async.janet: go-spawn conveys.

spec: core.async/binding-conveyance (4 cases — conveyance, isolation, no leak to
root, inner shadowing). jpm test green.
2026-06-05 15:22:38 -04:00
..
integration feat: distinguish map entries from vectors; min-key NaN ordering; subvec float coercion 2026-06-05 14:22:06 -04:00
spec feat: core.async Phase 2 — dynamic var binding conveyance 2026-06-05 15:22:38 -04:00
support feat: read N/M/ratio/radix/exponent number literals; clean suite measurement 2026-06-05 09:54:14 -04:00
unit test: restructure into unit / integration / spec layers + shared harness 2026-06-05 00:00:16 -04:00