jolt/host/chez
Yogthos a16ec63db3 Hintless whole-program double inference
The closed-world fixpoint (#226) flowed record types across fn boundaries; this
adds a numeric refinement so a hintless fn whose every call site passes a flonum
has its param unboxed to fl-ops, no ^double hint needed.

Lattice gains :double, a flonum refinement of :num: two doubles join to :double,
a double joined with anything else widens to :num — so a param is :double only
when every contributing value is a flonum, which is what makes the fl-op sound.
infer types a flonum literal and flonum arithmetic (+ - * / min max inc dec over
double/int-literal operands) as :double, and the fixpoint joins those across call
sites and return types like any other lattice value.

The bridge to the existing hint-directed pass is a synthetic [param :double]
nhint: wp-infer! stashes the :double params separately from the structural seeds,
and run-passes injects them as nhints before numeric/annotate, so the fl-op
emission and the exact->inexact entry coercion (a no-op on a proven flonum) apply
unchanged.

Sound subset only: :double, never :long — an untyped integer can be a bignum and
fx-ops would overflow/diverge from jolt's arbitrary precision. So an integer
caller leaves a param generic; an escaped fn (unknown callers) keeps :any.

run-numwp.ss gate: cross-fn :double propagation incl. through a flonum-returning
helper, the integer-caller and escape negatives, and the full run-passes path
emitting fl* + entry coercion. make test / shakesmoke green, selfhost holds, 0
new divergences.
2026-06-26 10:14:55 -04:00
..
java Add bigdec min/max (review follow-up) 2026-06-25 20:22:26 -04:00
seed Hintless whole-program double inference 2026-06-26 10:14:55 -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-smoke.sh Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
build.ss Whole-program param-type inference (closed world) (#226) 2026-06-26 10:57:45 +00:00
cli.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
collections.ss Persistent vector as a 32-way trie (#225) 2026-06-26 06:32:18 +00:00
compile-eval.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
converters.ss Replace str-render/instance-check set! chains with registries 2026-06-23 09:05:36 -04:00
dce.ss refactor: extract host/chez/dce.ss; tag the runtime manifest (tier 1) 2026-06-23 22:20:48 -04:00
dyn-binding.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
dynamic-var-defaults.ss Define *print-meta* as a bindable dynamic var 2026-06-24 10:22:10 -04:00
emit-image.ss Auto-resolve ::keywords; honor clojure.edn reader opts 2026-06-24 09:13:14 -04:00
host-contract.ss Whole-program param-type inference (closed world) (#226) 2026-06-26 10:57:45 +00:00
host-table.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
lazy-bridge.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -04:00
loader.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
multimethods.ss defmethod on a referred multifn resolves to its home ns 2026-06-24 09:13:28 -04:00
natives-coll.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -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 Native record representation + inline nil?/some? (#222) 2026-06-26 05:42:24 +00:00
natives-misc.ss Tagged literals are value-equal 2026-06-24 11:03:33 -04:00
natives-num.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
natives-reader.ss refactor: consolidate transducers, dissolve natives-parity.ss (jolt-jcs7) 2026-06-23 23:50:42 -04:00
natives-seq.ss Collection fns: JVM-faithful return types + laziness (#219) 2026-06-26 03:01:36 +00:00
natives-transduce.ss Collection fns: JVM-faithful return types + laziness (#219) 2026-06-26 03:01:36 +00:00
ns.ss refactor: registry pattern for jolt-pr-str/pr-readable + remaining arms (jolt-lmot) 2026-06-23 23:22:25 -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 Auto-resolve ::keywords; honor clojure.edn reader opts 2026-06-24 09:13:14 -04:00
predicates.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
printing.ss Port real clojure.pprint (pretty-printer + cl-format) 2026-06-24 16:09:09 -04:00
reader.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
records.ss Devirt: fall back to dispatch when the static tag has no direct impl (#229) 2026-06-26 13:58:23 +00:00
regex.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
remint.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
rt.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00: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: fall back to dispatch when the static tag has no direct impl (#229) 2026-06-26 13:58:23 +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-numwp.ss Hintless whole-program double inference 2026-06-26 10:14:55 -04: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 Whole-program param-type inference (closed world) (#226) 2026-06-26 10:57:45 +00:00
selfcheck.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
seq.ss Collection fns: JVM-faithful return types + laziness (#219) 2026-06-26 03:01:36 +00:00
smoke.sh Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
source-registry.ss Source locations: reader positions, error locations, native stack traces (#218) 2026-06-26 02:14:34 +00:00
syntax-quote.ss Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
transients.ss Collection ops carry the receiver's metadata 2026-06-24 13:46:58 -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 Native record representation + inline nil?/some? (#222) 2026-06-26 05:42:24 +00:00
vars.ss refactor: consolidate transducers, dissolve natives-parity.ss (jolt-jcs7) 2026-06-23 23:50:42 -04:00