jolt/host/chez/java
Yogthos a028cab04f Unchecked / *unchecked-math* arithmetic wraps to signed 64-bit
clojure.core's unchecked-* (and +/-/*/inc/dec under *unchecked-math*) are long
ops that WRAP on overflow; jolt's checked arithmetic is arbitrary-precision and
its unchecked-* were plain non-wrapping (+ x y), diverging from the JVM. Now they
truncate to the low 64 bits as a signed long, matching Clojure:

  (unchecked-add 9223372036854775807 1)        => -9223372036854775808
  (unchecked-multiply 9223372036854775807 …)   => 1

- host/chez/seq.ss: jolt-wrap64 + binary jolt-unc{add,sub,mul,inc,dec,neg}2 and
  the variadic clojure.core/unchecked-* fns (def-var!'d in natives-seq.ss, where
  def-var! is bound). The overlay's plain unchecked-* defns are removed.
- backend lng-ops: unchecked-+/-/* emit the wrapping jolt-unc* helpers (the
  raising fx ops can't wrap on Chez's 61-bit fixnums); unchecked-inc/dec too.
- *unchecked-math* is honored: the analyzer reads it (jolt.host/unchecked-math?)
  and rewrites +/-/*/inc/dec to their unchecked-* for the rest of a file that
  (set!)s it, like the JVM.
- jolt->fx: a ^long value that overflows the 61-bit fixnum range passes through
  as an exact integer instead of erroring (a full-width long from wrapping math).

Also adds Long/bitCount / numberOfLeadingZeros / reverse and Math/getExponent /
scalb (test.check's splittable PRNG uses them).

This lets clojure.test.check load and run quick-check on jolt. re-mint (analyzer/
backend/overlay are seed sources). make test green (+6 corpus rows, 0 new
divergences, numeric gate updated), shakesmoke byte-identical.
2026-06-27 15:41:35 -04:00
..
async.ss core.async: higher-level API over native channels + two general fixes 2026-06-27 13:05:19 -04:00
bigdec.ss Add bigdec min/max (review follow-up) 2026-06-25 20:22:26 -04:00
byte-buffer.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
concurrency.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
dot-forms.ss General fixes shaken out by running core.logic's test suite 2026-06-27 09:20:11 -04:00
ffi.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
host-class.ss Add java.lang.Byte / Short / Float class tokens + Byte/Short statics 2026-06-26 23:04:55 -04:00
host-static-classes.ss data.csv: fully passes, three general fixes 2026-06-27 15:02:32 -04:00
host-static-methods.ss Unchecked / *unchecked-math* arithmetic wraps to signed 64-bit 2026-06-27 15:41:35 -04:00
host-static.ss General fixes shaken out by clojure/tools.reader 2026-06-27 14:11:02 -04:00
inst-time.ss type returns the JVM class (Clojure semantics) (#244) 2026-06-26 21:14:06 +00:00
io-streams.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
io.ss General fixes shaken out by running core.logic's test suite 2026-06-27 09:20:11 -04:00
java-time.ss java.time: complete LocalTime/LocalDate/Year/YearMonth ChronoField coverage (#239) 2026-06-26 19:12:40 +00:00
math.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
natives-array.ss type returns the JVM class (Clojure semantics) (#244) 2026-06-26 21:14:06 +00:00
natives-queue.ss Group the JVM interop shims under host/chez/java/ 2026-06-25 18:35:44 -04:00
natives-str.ss General fixes shaken out by running core.logic's test suite 2026-06-27 09:20:11 -04:00
records-interop.ss Two general fixes shaken out by core.typed's runtime contract suite 2026-06-27 13:33:30 -04:00