jolt/host/chez
Yogthos e66a91750e Numbers-style category dispatch for binary numeric ops
Arithmetic and comparisons lowered to raw Chez ops, so an operand outside
Chez's tower (BigDecimal) crashed with a raw condition, and Chez contagion
leaked: (* 1.0 0) gave exact 0 where the JVM gives 0.0, (* ##Inf 0) gave 0
instead of ##NaN, (/ 1 0) raised an untyped error.

One seam now (host/chez/seq.ss): call position emits jolt-n* macros with the
both-Chez-numbers fast path open-coded; value position folds through the same
binary ops. Anything outside the tower falls to per-op slow hooks that
java/bigdec.ss extends, so bigdec arithmetic works in every position (the old
static-only :bigdec typing limitation is gone). JVM rules patched into the
fast path: a double operand wins, an exact zero divisor throws
ArithmeticException while a double zero divisor yields Inf/NaN, quot/rem/mod
cover ratios and doubles, min/max return the original operand with NaN
winning, a nil operand is NPE and a non-number CCE, zero-arg -// throw
ArityException at runtime instead of failing expansion.

Also: with-precision now binds *math-context* and bigdec results round with
real RoundingMode semantics (UNNECESSARY throws; division rounds to precision
instead of throwing); rationalize goes through the shortest decimal print
like BigDecimal.valueOf (the identity stub is gone); ratios coerce to bigdec
like Numbers.toBigDecimal; min/max int-literal operands no longer coerce to
flonum in the numeric pass.

Perf neutral: fib and seq benches unchanged (the fast path is two type checks
the optimizer folds); hinted fl/fx paths untouched. 19 JVM-certified corpus
rows; cts baseline 5614->5730 pass, 192->88 errors, 84->79 baselined
namespaces.
2026-07-02 06:41:45 -04:00
..
java Numbers-style category dispatch for binary numeric ops 2026-07-02 06:41:45 -04:00
seed Numbers-style category dispatch for binary numeric ops 2026-07-02 06:41:45 -04:00
stub Self-contained build foundation: embedded-bytes helpers, launcher stub, in-process app link 2026-06-29 20:48:44 -04:00
atoms.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
bootstrap.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
build-joltc.ss Link joltc with -rdynamic so build can spill its boots on Linux 2026-07-01 17:31:18 -04:00
build-smoke.sh Compile data readers that return code forms 2026-07-01 10:57:55 -04:00
build.ss Embed runtime source so a self-contained joltc can build apps 2026-07-01 17:24:50 -04:00
cli.ss Make the REPL read multi-line forms and render real error messages 2026-06-30 20:36:06 -04:00
collections.ss Fix seven more JVM divergences (rewrite-clj full suite) 2026-07-01 14:17:03 -04:00
compile-eval.ss Fix seven more JVM divergences (rewrite-clj full suite) 2026-07-01 14:17:03 -04:00
converters.ss spec.alpha: (symbol var), Compiler/demunge, MultiFn .dispatchFn/.getMethod, fn .applyTo 2026-06-27 20:46:33 -04:00
cts.sh Vendor clojure-test-suite as a standing gate (make cts) 2026-07-02 03:46:57 -04:00
dce.ss Embed runtime source so a self-contained joltc can build apps 2026-07-01 17:24:50 -04:00
dyn-binding.ss backend: cache resolved var cells per reference site (run-path ~5x) 2026-06-28 12:36:35 -04:00
dynamic-var-defaults.ss Honor *print-length* / *print-level* / *default-data-reader-fn* 2026-06-26 19:04:42 -04:00
emit-image.ss Compile data readers that return code forms 2026-07-01 10:57:55 -04:00
host-contract.ss Fix six JVM divergences surfaced by rewrite-clj 2026-07-01 12:25:05 -04:00
host-table.ss Fix general gaps the hiccup suite shook out 2026-06-26 20:15:39 -04:00
joltc-selfbuild-smoke.sh Static-link :jolt/native C libraries into built binaries by default 2026-07-01 09:52:00 -04:00
lazy-bridge.ss Migrate list?/ratio?/rational? to the overlay; narrow jolt.host exposure 2026-06-30 11:10:36 -04:00
loader.ss Compile data readers that return code forms 2026-07-01 10:57:55 -04:00
multimethods.ss defmethod on a referred multifn resolves to its home ns 2026-06-24 09:13:28 -04:00
natives-coll.ss Migrate clojure.core/set from a native shim to the kernel overlay tier 2026-06-30 10:35:57 -04:00
natives-format.ss read-string constructs sets; format %x lowercase; extend/extends? on nil 2026-06-24 14:03:47 -04:00
natives-meta.ss Chunk range/map/filter to match JVM Clojure 2026-06-29 22:02:06 -04:00
natives-misc.ss Tagged literals are value-equal 2026-06-24 11:03:33 -04:00
natives-num.ss ^long is a 64-bit long: fast-path-with-fallback ops + logical unsigned shift 2026-06-27 16:04:19 -04:00
natives-reader.ss Document why reader-conditional stays a native shim 2026-06-30 10:42:49 -04:00
natives-seq.ss seq fns are lazy by default, like Clojure (LazySeq, not eager-headed) 2026-06-28 00:16:47 -04:00
natives-transduce.ss Remove dead native transduce shim (overlay already provides it) 2026-06-30 10:27:27 -04:00
ns.ss core.async: higher-level API over native channels + two general fixes 2026-06-27 13:05:19 -04:00
png.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
post-prelude.ss Fix general divergences surfaced by clojure-test-suite 2026-07-02 03:46:57 -04:00
predicates.ss Migrate list?/ratio?/rational? to the overlay; narrow jolt.host exposure 2026-06-30 11:10:36 -04:00
printing.ss Honor *print-length* / *print-level* / *default-data-reader-fn* 2026-06-26 19:04:42 -04:00
reader.ss Read an unknown #tag as a tagged-literal value 2026-07-01 16:17:52 -04:00
records.ss Route deftype/reify interface dispatch through one seam 2026-07-01 15:59:01 -04:00
regex.ss Compile capturing regexes with the backtracking matcher 2026-07-01 12:48:12 -04:00
remint.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
rt.ss Derive class identity from one hierarchy graph 2026-07-01 15:38:04 -04:00
run-corpus.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
run-devirt.ss Devirt: cache the resolved impl in a per-site cell (inline cache) (#237) 2026-06-26 18:34:13 +00:00
run-fieldnum.ss Make ^Record param hints work (resolve the record tag) (#232) 2026-06-26 16:03:57 +00:00
run-fieldread.ss Bare-index field reads for statically-known records (#228) 2026-06-26 11:29:14 +00:00
run-infer.ss infer gate: cover the run-inference / take-diags! checker path 2026-06-23 09:38:13 -04:00
run-narrow.ss Nilable record types + flow-sensitive nil narrowing (#235) 2026-06-26 17:16:16 +00:00
run-numwp.ss Hintless whole-program double inference (#230) 2026-06-26 14:18:10 +00:00
run-protoret.ss Infer monomorphic protocol-method return types (#234) 2026-06-26 16:59:35 +00:00
run-sci.ss Run core.memoize's test suite on jolt 2026-06-25 13:23:05 -04:00
run-unit.ss Real Thread/yield + Thread/interrupted (jolt-l2gc) 2026-06-23 00:06:04 -04:00
run-wp.ss WP: don't let a recursive pass-through poison a param to :any (#233) 2026-06-26 16:29:46 +00:00
selfcheck.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
seq.ss Numbers-style category dispatch for binary numeric ops 2026-07-02 06:41:45 -04:00
smoke.sh Fix seven more JVM divergences (rewrite-clj full suite) 2026-07-01 14:17:03 -04:00
source-registry.ss fix tests 2026-06-30 21:25:33 -04:00
static-native-smoke.sh Static-link :jolt/native C libraries into built binaries by default 2026-07-01 09:52:00 -04:00
syntax-quote.ss Small maps preserve insertion order 2026-06-27 05:48:17 -04:00
transients.ss core.logic constraint layer: fixes for the CLP/unifier failures 2026-06-27 10:37:32 -04:00
tree-shake-smoke.sh Tree-shake: count #'x references; multi-app soundness smoke 2026-06-23 20:27:21 -04:00
values.ss Fix general divergences surfaced by clojure-test-suite 2026-07-02 03:46:57 -04:00
vars.ss refactor: consolidate transducers, dissolve natives-parity.ss (jolt-jcs7) 2026-06-23 23:50:42 -04:00