jolt/host/chez
Yogthos fe3fdf6b9c Transients: mutable backing instead of copy-on-write
The Chez port had landed transients as copy-on-write — each conj!/assoc!/etc.
rebuilt the whole persistent collection. Semantics were right but a transient
vector was O(n^2) to build (the persistent vector is a flat array, so every
conj! copied it); maps/sets were ~O(n log n) since the HAMT only path-copies.
This restores the Janet host's approach: true mutable backing, snapshot once on
persistent!.

  vec : a growable Scheme vector (capacity + fill count); conj!/pop! amortized
        O(1), persistent! hands off the buffer (exact fit) or trims once.
  map : a Chez hashtable keyed by key-hash/jolt= (value equality, nil-safe);
        persistent! folds it into a pmap.
  set : a Chez hashtable; persistent! folds into a pset.
  cow : fallback for anything else (e.g. a sorted coll) keeps the old
        copy-on-write path, preserving jolt's superset.

get/count/contains?/nth see through each representation. Building a 400k vector
went from minutes (quadratic) to ~50ms (linear). assoc! keeps the variadic
dangling-key nil-pad on both vectors and maps. test/chez/transient-test.ss pins
the invariants and the linear-time property; wired in as `make transient`.
2026-06-22 08:38:22 -04:00
..
seed Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
async.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
atoms.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
bigdec.ss real BigDecimal type (bigdec, M literals) 2026-06-22 00:01:01 -04:00
bootstrap.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
cli.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
collections.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
compile-eval.ss macroexpand-first analyzer order; one macro path; defmacro/letfn fixes 2026-06-22 00:54:16 -04:00
concurrency.ss Chez parity: delay / force / realized? (jolt-cf1q.7) 2026-06-20 17:02:42 -04:00
converters.ss Bind clojure.core/float (= double on Chez) 2026-06-21 15:39:21 -04:00
dot-forms.ss Host gaps that blocked malli: map .iterator, two clojure.lang builders 2026-06-22 05:35:08 -04:00
dyn-binding.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
dynamic-vars.ss compile (set! *var* val) 2026-06-22 00:40:46 -04:00
emit-image.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
host-class.ss resolve ^Type hint to canonical class name in var :tag 2026-06-21 23:52:47 -04:00
host-contract.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
host-static.ss Host gaps that blocked malli: map .iterator, two clojure.lang builders 2026-06-22 05:35:08 -04:00
host-table.ss sorted-map entries are real map-entries (jolt-jk23) 2026-06-21 16:43:05 -04:00
http-client.ss Make blocking socket FFI collect-safe; fix http-client temp-file race 2026-06-22 08:12:53 -04:00
http-server.ss Make blocking socket FFI collect-safe; fix http-client temp-file race 2026-06-22 08:12:53 -04:00
inst-time.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
io.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
lazy-bridge.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
loader.ss Host gaps that blocked malli: map .iterator, two clojure.lang builders 2026-06-22 05:35:08 -04:00
math.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
multimethods.ss defmethod auto-create copies clojure.core dispatch (fix SCI regression) 2026-06-21 20:04:13 -04:00
natives-array.ss real chunked seqs for vector seqs 2026-06-22 00:21:05 -04:00
natives-coll.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
natives-meta.ss (type record) returns its class-name string, not a symbol 2026-06-22 00:05:08 -04:00
natives-misc.ss jolt.http-client (curl-backed) + format width/justify flags 2026-06-22 02:44:29 -04:00
natives-num.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
natives-parity.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
natives-seq.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
natives-str.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
natives-xform.ss Chez Phase 2 (inc H): volatiles + sequence/transduce 2026-06-18 14:47:03 -04:00
ns.ss Host completeness for the ring stack (ring-app) 2026-06-22 03:20:31 -04:00
png.ss jolt.png: a built-in PNG writer (ray-tracer-multi) 2026-06-22 02:33:27 -04:00
post-prelude.ss real chunked seqs for vector seqs 2026-06-22 00:21:05 -04:00
predicates.ss Host interop fixes: ==/time/subvec/defonce + corpus cleanup 2026-06-21 15:36:41 -04:00
printing.ss Transients: mutable backing instead of copy-on-write 2026-06-22 08:38:22 -04:00
reader.ss More library-compat fixes from porting the examples (markdown, malli) 2026-06-22 02:25:11 -04:00
records.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
regex.ss Host completeness for the ring stack (ring-app) 2026-06-22 03:20:31 -04:00
remint.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
rt.ss real BigDecimal type (bigdec, M literals) 2026-06-22 00:01:01 -04:00
run-corpus.ss More library-compat fixes from porting the examples (markdown, malli) 2026-06-22 02:25:11 -04:00
run-sci.ss mutable deftype fields: (set! field val) in a method 2026-06-22 01:19:03 -04:00
run-unit.ss Cross-ns def/require/use/defmethod through the spine (jolt-c2l1) 2026-06-21 16:56:46 -04:00
selfcheck.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
seq.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
smoke.sh Pure-Chez test gates (no Janet) 2026-06-21 11:22:32 -04:00
sqlite.ss Fix arg evaluation order + host interop gaps so reitit/selmer/honeysql run 2026-06-22 05:26:09 -04:00
syntax-quote.ss Scrub dangling Janet references; drop dead Janet-coupled files 2026-06-21 12:01:04 -04:00
transients.ss Transients: mutable backing instead of copy-on-write 2026-06-22 08:38:22 -04:00
values.ss Chez Phase 1 (increment 3b): seq tier + dynamic IFn dispatch on the Chez RT 2026-06-17 15:19:18 -04:00
vars.ss Chez Phase 2 (inc I+J): first-class vars + scalar natives 2026-06-18 15:44:10 -04:00