jolt/jolt-core/clojure/core
Yogthos 1e4a0a6d53 core: print-method is a real multimethod (jolt-g1r); records print canonically
print-method/print-dup are now multimethods in the io tier with Clojure's
exact dispatch ((:type meta) keyword, else type — core.clj 3693). On jolt the
dispatch value for a record is its quoted full-name symbol, since class names
aren't values here.

Records used to pr-str as the raw janet table; the renderer's record branch
now prints Clojure's #ns.Type{:k v} syntax, and first consults a callback the
api wires up after the overlay loads — so a user defmethod on a record type
fires everywhere: top level, nested in collections, through pr/prn/pr-str.
Builtin overrides (a :number method) fire only on direct print-method calls;
pr keeps the native fast path (documented divergence).

java.io.Writer arrives as a shim beside the StringReader/StringBuilder ones:
a :jolt/writer tagged value with write/append/flush/toString, a StringWriter
ctor, and a sink variant the renderer callback uses.

Two latent host bugs fixed on the way: the interpreted syntax-quote splice
blew up on ~@nil (an interpreted macro's empty & rest binds nil — first tier
user of defmulti found it; d-realize now treats nil as the empty seq), and
(print-method x nil) now throws like the JVM instead of returning nil.

10 spec rows; bench dead even (sandwich run); greeter green on a fresh
binary.
2026-06-11 18:10:11 -04:00
..
00-kernel.clj Compiler research (#10) 2026-06-09 07:30:25 +08:00
00-syntax.clj core: zero?/pos?/every? to 00-syntax, char? to the overlay; fix rest/next over sets and maps 2026-06-11 13:24:51 -04:00
10-seq.clj Compiler research (#10) 2026-06-09 07:30:25 +08:00
20-coll.clj core: print-method is a real multimethod (jolt-g1r); records print canonically 2026-06-11 18:10:11 -04:00
25-sorted.clj core: staged recompile for early defns; keys/vals/empty? leave the seed (jolt-4j3) 2026-06-10 16:16:23 -04:00
30-macros.clj core: move the pure-leaf fns to the overlay; memfn is a real macro now 2026-06-11 12:38:12 -04:00
40-lazy.clj core: lazy realization is shared across walks (once-only effects); pmap family 2026-06-10 19:14:49 -04:00
50-io.clj core: print-method is a real multimethod (jolt-g1r); records print canonically 2026-06-11 18:10:11 -04:00