Chez inc 3k: converter + string-op RT shims

str/subs/vec/keyword/symbol/compare/int/double/gensym — host-coupled seed natives
the overlay assumes, now def-var!'d into clojure.core via host/chez/converters.ss
(loaded last, str reuses jolt-pr-str). Semantics match the seed: str-render-one
for str (nil->"", bare chars, regex source), the 3-way core-compare port, int
truncates. The symbol no-ns sentinel is #f to match emit's quoted-symbol lowering
(jolt-symbol #f "x"), so (= 'x (symbol "x")) holds — jolt= compares ns with strict
equal?, and jolt-nil vs #f would otherwise diverge.

Prelude parity 1220 -> 1326/2497, 0 new divergences. Floor raised to 1326; three
newly-reached *ns*/var-rendering cases added to the allowlist (Phase 2). run-prelude
and the per-case program file are now PID-unique so concurrent chez runs don't read
each other's half-written files.
This commit is contained in:
Yogthos 2026-06-17 21:36:42 -04:00
parent 0c9c7931fe
commit bb8b2d201c
5 changed files with 175 additions and 12 deletions

View file

@ -104,16 +104,21 @@ corpus case with all of core present, bucketing the result —
JOLT_CHEZ_PRELUDE_CORPUS=1 janet test/chez/run-corpus-prelude.janet
JOLT_CORPUS_LIMIT=200 … (every-Nth stride, fast)
First parity baseline (inc 3j): **1220/2497** evaluated cases pass, 0 NEW
divergences (10 allowlisted: dynamic vars `*ns*`/`*clojure-version*`/`*unchecked-math*`,
class names, eval-order, with-open — all deferred Phase-2 / dynamic-var gaps).
Parity baseline: inc 3j **1220/2497**; inc 3k (converters, jolt-t6cr) **1326/2497**,
0 NEW divergences (13 allowlisted: dynamic vars `*ns*`/`*clojure-version*`/
`*unchecked-math*`, var/`*ns*` rendering, class names, eval-order, with-open — all
deferred Phase-2 / dynamic-var gaps). inc 3k added `host/chez/converters.ss`:
`str`/`subs`/`vec`/`keyword`/`symbol`/`compare`/`int`/`double`/`gensym` (seed natives,
matching `core_print.janet`/`core_io.janet` semantics — `str` reuses the printer,
`compare` is the 3-way port, the symbol no-ns sentinel is `#f` to match emit's
quoted-symbol lowering so `(= 'x (symbol "x"))` holds).
The remaining buckets are the punch-list the next increments chase: ~360 emit-fail
(genuine host interop — qualified Java/Janet refs, runtime `defmacro`/`eval`, out of
the analyzer's subset) and ~900 runtime crashes, dominated by core fns calling
host-coupled seed natives with no Chez shim yet (`str`/`format`/`vec`/transients —
inc 3k/3l, jolt-t6cr/jolt-kl2l), plus smaller buckets (`##Inf`/`##NaN` literals →
unbound `inf`/`nan`, seq-prim transducer arities — inc 3m jolt-q3w8; multimethod
dispatch — Phase 2 jolt-9ls5).
the analyzer's subset) and ~800 runtime crashes, dominated by core fns calling
host-coupled seed natives with no Chez shim yet (transients — inc 3l jolt-kl2l),
plus smaller buckets (`##Inf`/`##NaN` literals → unbound `inf`/`nan`, seq-prim
transducer arities — inc 3m jolt-q3w8; multimethod dispatch — Phase 2 jolt-9ls5).
Two host shims landed with the prelude. `host/chez/atoms.ss`: atom/deref/swap!/
reset! (+ compare-and-set!/swap-vals!/reset-vals!) — host-coupled mutable cells the