jolt/host/chez
Yogthos 467ad75ff7 Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al)
jolt was all-flonum (one :number type, inherited from Janet whose only number
type is a double). The Chez runtime has a full numeric tower, so the zero-Janet
path now carries it = JVM Clojure semantics:

  (/ 1 2)      => 1/2      (exact Ratio, was 0.5)
  (integer? 3) => true   (integer? 3.0) => false   (float? 3.0) => true
  (ratio? (/ 1 2)) => true   (= 3 3.0) => false   (== 3 3.0) => true
  (+ 1 2) => 3 (exact)   (/ 1.0 2) => 0.5 (double)

jolt= was already exactness-aware (values.ss) and == is value-equality, so
=/== match the JVM split. The reader preserves exactness (integer literals exact,
a/b ratios exact rationals, decimals/exponents flonums); backend_scheme emit-const
renders exact ints/ratios and flonums faithfully; the value-position arithmetic,
count, int, compare, bit ops, parseLong, string .length/.indexOf, range,
timestamps, and array bytes return exact integers (= JVM int/long) instead of
coercing to flonum. double/parseDouble/clojure.math floor|ceil|signum stay double.

Only the zero-Janet path carries the tower (the Janet reader loses exactness into
a double before emit). The prelude/all-flonum path is unaffected for compiled code;
the runtime reader is shared, so a couple of all-flonum reader assertions become
value (==) assertions. ~16 numeric corpus cases now give the JVM tower value vs the
Janet-era :expected and are allowlisted as tower divergences (Chez == reference
JVM) pending the corpus flip to JVM (jolt-ecz0). No BigDecimal type (1M).

Re-minted. zero-janet 2682 (floor 2698->2682, the reclassified tower cases), 0 new
divergences; fixpoint 10/10, bootstrap 6/6, spine 35/35, cli 49/49; Janet gate 155
files 0 failed.
2026-06-20 23:09:27 -04:00
..
seed Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
async.ss Chez concurrency pt.2: clojure.core.async on real-thread blocking channels 2026-06-20 13:48:10 -04:00
atoms.ss Chez concurrency pt.1: real OS-thread futures + blocking promises (shared heap) 2026-06-20 13:11:31 -04:00
bootstrap.ss Chez Phase 3 inc9a: self-contained Chez bootstrap (no Janet in the loop) 2026-06-20 06:46:05 -04:00
cli.ss Chez Phase 3 inc9b: pure-Chez runtime CLI (bin/joltc, no Janet) 2026-06-20 06:53:05 -04:00
collections.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
compile-eval.ss Chez: runtime eval / load-string / defmacro on the zero-Janet spine 2026-06-20 12:14:08 -04:00
concurrency.ss Chez parity: delay / force / realized? (jolt-cf1q.7) 2026-06-20 17:02:42 -04:00
converters.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
dot-forms.ss Chez Phase 2 (inc R): . / .-field dot-form desugar (jolt-kuic) 2026-06-19 00:32:30 -04:00
driver.janet Chez corpus: eval ACTUAL top-level so runtime defmacro cases run (jolt-cf1q.7) 2026-06-20 16:53:20 -04:00
dyn-binding.ss Chez concurrency pt.1: real OS-thread futures + blocking promises (shared heap) 2026-06-20 13:11:31 -04:00
dynamic-vars.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
emit-image.ss Chez: runtime eval / load-string / defmacro on the zero-Janet spine 2026-06-20 12:14:08 -04:00
emit.janet Chez Phase 2 (inc X): #inst / #uuid literals + java.time (jolt-at0a) 2026-06-19 11:05:22 -04:00
host-class.ss Chez Phase 2 (inc T): class native + bare class-token resolution (jolt-13zk) 2026-06-19 08:41:45 -04:00
host-contract.ss Chez parity: analyze any seq as a list form (macro/eval-built forms) (jolt-cf1q.7) 2026-06-20 18:15:30 -04:00
host-static.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
host-table.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
inst-time.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
io.ss Chez parity: STM stub + portable line-seq (janet.* audit, jolt-0obq) 2026-06-20 18:49:28 -04:00
jolt-chez.janet Chez Phase 3 inc6b: runtime macros on the zero-Janet spine 2026-06-19 23:21:13 -04:00
lazy-bridge.ss Chez Phase 2 (inc M): dynamic var binding (jolt-2o7x) 2026-06-18 18:29:55 -04:00
math.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
multimethods.ss Chez Phase 1 (increment 3q): multimethod dispatch + late-bind 2026-06-18 01:24:01 -04:00
natives-array.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
natives-coll.ss Chez Phase 2 (inc A): collection ctors + real map entries 2026-06-18 10:44:33 -04:00
natives-meta.ss Chez Phase 2 (inc N): type (jolt-fmm4) 2026-06-18 19:40:17 -04:00
natives-misc.ss Chez Phase 2 (inc X): #inst / #uuid literals + java.time (jolt-at0a) 2026-06-19 11:05:22 -04:00
natives-num.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
natives-parity.ss Chez parity: delay / force / realized? (jolt-cf1q.7) 2026-06-20 17:02:42 -04:00
natives-seq.ss Chez Phase 1 (increment 3o): transducer arities 2026-06-17 23:51:06 -04:00
natives-str.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
natives-xform.ss Chez Phase 2 (inc H): volatiles + sequence/transduce 2026-06-18 14:47:03 -04:00
ns.ss Chez parity: missing native core fns + ns runtime fns (jolt-cf1q.7) 2026-06-20 15:46:11 -04:00
post-prelude.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
predicates.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
printing.ss Chez Phase 2 (inc B): readable printer + output seams 2026-06-18 11:20:56 -04:00
reader.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
records.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
regex.ss Chez Phase 1 (increment 3p): misc seq/regex gaps + bug tracking 2026-06-18 00:44:21 -04:00
rt.ss Chez parity: Java arrays + reader/macroexpand fns (jolt-cf1q.7) 2026-06-20 16:35:32 -04:00
seq.ss Chez numeric tower: exact ints / Ratio / double for JVM parity (jolt-n6al) 2026-06-20 23:09:27 -04:00
syntax-quote.ss Chez Phase 3 inc6b: runtime macros on the zero-Janet spine 2026-06-19 23:21:13 -04:00
transients.ss Chez parity: realized? on lazy-seq + conj! 1-arity identity 2026-06-20 19:40:05 -04:00
values.ss Chez Phase 1 (increment 3b): seq tier + dynamic IFn dispatch on the Chez RT 2026-06-17 15:19:18 -04:00
vars.ss Chez Phase 2 (inc I+J): first-class vars + scalar natives 2026-06-18 15:44:10 -04:00