Migrate list?/ratio?/rational? to the overlay; narrow jolt.host exposure

list?, ratio?, and rational? are the predicate-web members that are
genuinely safe to migrate: not extended at runtime, not on the compiler
emit/inference path, not reached by the kernel tier. They now live in the
overlay (clojure/core/20-coll.clj) built on the jolt.host tower/rep tests,
lowering to the same code the native shims did. Removed their native
definitions (predicates.ss) and, for ratio?/rational?, the now-redundant
post-prelude re-assertions. Also dropped the dead all-flonum overlay
ratio?/rational?/decimal? stubs.

The rest of the web stays native and is documented as such: map?/set?/
seq?/coll? are extended with sorted/record/lazy arms, decimal? is extended
by the optional bigdec module, integer?/float? are on the emit/inference
path, vector? is reached by the kernel-tier peek. jolt.host exposure is
therefore narrowed to just the tests these three consume (exact?,
rational-type?, cseq?, cseq-list?, empty-list?).

Numeric probe is byte-identical to pre-migration; list? correct across
list/vector/lazy/empty/cons/rest cases. Selfhost fixpoint holds, values/
unit/smoke/corpus green, bench flat within noise.
This commit is contained in:
Yogthos 2026-06-30 11:10:36 -04:00
parent 12058d2dcf
commit bbca8bc0de
5 changed files with 43 additions and 47 deletions

View file

@ -93,8 +93,3 @@
(def-var! "clojure.core" "make-lazy-seq" jolt-make-lazy-seq)
(def-var! "clojure.core" "coll->cells" jolt-coll->cells)
;; jolt.host/lazyseq? — raw lazy-seq rep test (the other jolt.host type-test
;; primitives are exposed in predicates.ss; this one lives here because
;; jolt-lazyseq? is defined in this file, which loads after predicates.ss).
(def-var! "jolt.host" "lazyseq?" jolt-lazyseq?)