jolt/jolt-core/clojure/core
Yogthos 0e71b193e5 core: Stage 3 — leaf batch 2: sixteen more seed fns to the overlay; retire MIGRATION.md
key/val/select-keys/zipmap/merge/merge-with/get-in/memoize/partial/
trampoline/some?/true?/false?/max/min/reverse move to 20-coll.clj as the
canonical Clojure definitions, plus find — which was previously missing from
jolt entirely (select-keys/merge-with/memoize build on it). Two behavior
fixes ride along: memoize now caches nil results (the kernel fn re-computed
them — canonical find-based impl), and conj of nil onto a map is a no-op as
in Clojure (it errored; the canonical merge relies on it). max/min keep the
JVM NaN behavior by construction (pairwise >/<). not= stays: the kernel tier
(subvec) uses it.

One new tier-ordering rule, learned the hard way: a tier may only use macros
from tiers that load BEFORE it — memoize's if-let (30-macros) broke compiled
init while interpret mode passed, because compile expands macros at tier
load and the interpreter expands lazily. Now documented in the migration
workflow note.

MIGRATION.md is gone — task tracking lives in beads (jolt-ded; the per-batch
workflow, tier-order rules, perf wall, and remaining candidates are in bd
memory core-migration-workflow). The doc's candidate lists had gone stale
against the actual seed anyway.

43 new spec rows. Gate green: conformance 326x3, suite >= baseline, full
jpm test, bench at parity with main back-to-back (4851 vs 4831 TOTAL).
2026-06-10 15:16:47 -04:00
..
00-kernel.clj Compiler research (#10) 2026-06-09 07:30:25 +08:00
00-syntax.clj Jank derived spec tests (#17) 2026-06-10 09:39:33 +08:00
10-seq.clj Compiler research (#10) 2026-06-09 07:30:25 +08:00
20-coll.clj core: Stage 3 — leaf batch 2: sixteen more seed fns to the overlay; retire MIGRATION.md 2026-06-10 15:16:47 -04:00
25-sorted.clj core: Stage 3 — sorted collections are pure Clojure (canonical port) 2026-06-10 14:39:02 -04:00
30-macros.clj core: Stage 3 turn 2b — host IO, ns introspection, thread-binding family 2026-06-10 12:53:47 -04:00
40-lazy.clj Stage1 analyzer parity (#11) 2026-06-09 12:24:37 +08:00
50-io.clj core: Stage 3 — the *in* reader family is Clojure (50-io tier) 2026-06-10 14:52:40 -04:00