Bring the docs in line with the actual implementation now that Chez is the sole substrate. Deleted the migration/spike/handoff artifacts that only documented the Janet era or the port effort: the port plan, phase-0 and foundational-runtime spike writeups (+ the stray root-level copy), the self-hosting design notes, the architecture-refactor plan, and spike/chez/RESULTS.md. Rewrote the current reference docs against the Chez facts: building-and-deps and tools-deps (no jpm/build step — bin/joltc off the checked-in seed, deps via jolt.deps into ~/.jolt/gitlibs), libraries (SQLite is built-in jdbc.core over libsqlite3, not a Janet driver), the conformance/spec test-flow docs (the Chez corpus runner + certify, no .janet harnesses), and the transient / type-hint / seed-overlay design notes (Chez representations: mutable transients, flat copy-on-write vectors, HAMT maps, the seed/overlay twin). Fixed the README collections line (vectors aren't 32-way tries) and added the ffi/transient gate targets. rfc 0001's numerics open-question is resolved (the Scheme tower). Renamed the built-in HTTP adapter to jolt.http.server only (dropped the ring-janet.adapter alias — a Janet-era name).
25 lines
1.3 KiB
Markdown
25 lines
1.3 KiB
Markdown
# Chez bootstrap seed
|
|
|
|
These two files are the **bootstrap compiler** for jolt — the seed that makes
|
|
the build self-hosting:
|
|
|
|
- `prelude.ss` — the `clojure.core` prelude (all tiers + clojure.string/walk/
|
|
template/edn/set/pprint) as Scheme `def-var!` forms.
|
|
- `image.ss` — the compiler image (`jolt.ir` + `jolt.analyzer` +
|
|
`jolt.backend-scheme`) as Scheme `def-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.
|