RFCs (Design Notes)

RFCs

Design notes for non-obvious language and compiler decisions. An RFC records why a thing is built the way it is; the code is the source of truth for how.

#TitleStatusGoverns
0001A Specification for the Clojure LanguageDraftThe conformance target — what "is Clojure" means for jolt.
0003TransientsAcceptedtransient/persistent! semantics + the Chez mutable backing.
0004Type hints + keyword-lookup specializationAccepted^Type/^:struct hints → the bare-get fast path.
0005Structural collection-type inferenceImplementedThe :struct/:vec/:set lattice in passes/types.
0006Success typing (provably-wrong-code detection)ImplementedThe error-domain checker in passes/types.
0007Compilation modes + binary outputImplementedrelease/--opt/--dev, --direct-link, --tree-shake, numeric lowering, inlining.
0008Splitting time between core and the libraryImplementedThe base java.time value types are in core; formatting and zones are jolt-lang/time.
0009Program image dump and restoreImplementedjolt.image — writing program state to a file and restoring it on another machine or architecture.
0010The portable Scheme layerImplementedContract + adapter isolating the host from Chez, with capability degradations — the boundary a second target (Guile, WASM) ports against.
0011Tail calls are guaranteedImplementedProper tail calls for any tail-position call; recur stays as the JVM-compatible spelling.
0012There is no interpreterImplementedEvery entry point compiles to native code — -e, REPL, nREPL, eval, builds.
0013The numeric towerImplementedHost-native integers/ratios with a JVM-shaped class surface; lowering opts out per-site.
0014Host classes are provided by declarationImplemented:jolt/provides — a library declares the host classes it supplies; core names no library.