A macro body can now read &form (the call form) and &env (a map of the in-scope local symbols), like Clojure. This is what core.logic's matche/defne use to tell a pattern symbol that names an enclosing local from a fresh pattern var — so locals-membero and the recursive checko in `matches` now compute correctly. The suite reaches 535/2/0 (the last two are constraint reification ORDER, where the constraint set is right but it is spliced from a set whose iteration order differs from the JVM — a host set-ordering divergence, not a bug). &form/&env are clojure.core dynamic vars bound around each expander call rather than prepended params, so the macro calling convention is unchanged and the mint stays consistent (the seed prelude is byte-identical; only the analyzer carries the env into form-expand-1). macroexpand-1 passes an empty env. corpus.edn: the ~@ unquote row is now a boolean compare (a bare clojure.core/ unquote-splicing symbol evaluates to an unbound var, not the symbol). |
||
|---|---|---|
| .. | ||
| image.ss | ||
| prelude.ss | ||
| README.md | ||
Chez bootstrap seed
These two files are the bootstrap compiler for jolt — the seed that makes the build self-hosting:
prelude.ss— theclojure.coreprelude (all tiers + clojure.string/walk/ template/edn/set/pprint) as Schemedef-var!forms.image.ss— the compiler image (jolt.ir+jolt.analyzer+jolt.backend-scheme) as Schemedef-var!forms.
Both are generated, not hand-written. They are checked in because a fresh
checkout must be able to build jolt-on-Chez using only Chez: host/chez/bootstrap.ss
loads this seed, then rebuilds the prelude + image from the .clj/.ss sources via
the on-Chez compiler (read → analyze → emit, all on Chez). The seed is a joint
byte-fixpoint: rebuilding from an up-to-date seed reproduces it exactly.
make selfhost (host/chez/selfcheck.sh) runs host/chez/bootstrap.ss and diffs
the rebuilt artifacts against the checked-in seed.
Re-minting
When the seed sources change (the core tiers, the compiler namespaces, the host
contract, the reader, emit-image.ss), the seed drifts and make selfhost
fails. Re-mint it by running host/chez/bootstrap.ss and writing the freshly
rebuilt prelude/image back to host/chez/seed/prelude.ss /
host/chez/seed/image.ss, then commit the refreshed files.