jolt/test
Yogthos 1eb2843365 feat: structural-sharing persistent vectors (immutable build) + mutable toggle
Round 2 of the persistent-collections work.

Add a real 32-way branching-trie persistent vector (src/jolt/pv.janet) with a
tail buffer: O(log32 n) conj/assoc/nth/pop, with unchanged subtrees shared by
identity. Vector literals and vec/vector/conj/assoc/subvec/etc. now produce and
maintain these in the default (immutable) build, replacing the old tuple-based
vectors. Every core seq op, the destructurer, IFn application, the printers, =,
and the evaluator's literal/splice paths were taught to handle the pvec type.

Define several Clojure seq fns that were silently leaking to Janet builtins
(some, keep, interleave, flatten, mapcat, interpose) and broke once vectors
became tables; normalize collections through realize-for-iteration everywhere.

Build-time JOLT_MUTABLE flag now selects fast Janet-native mutable collections:
in that mode vectors are arrays (conj appends in place, vector? true, print []),
sharing one representation with lists. Default build is immutable.

Tests: conformance 206/206, features 71/71, jank 119 (baseline). Test helpers
normalized so Janet-level = compares against tuple literals regardless of repr.
The 2 test-load-sci failures (bit-clear/get-method) pre-date this work.
2026-06-04 18:56:55 -04:00
..
api-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
bootstrap-test.janet bootstrap: SCI core deps loading with 284/304 forms passing 2026-06-01 23:24:13 -04:00
cljs-collections-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-core-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-1.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-1a.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-1b.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-2.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-3.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-3b.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-4.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-5.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-6.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-7.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-8.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-9.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-10.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
cljs-port-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
clojure-atom-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
clojure-control-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
clojure-for-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
clojure-logic-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
clojure-macros-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
compiler-test.janet Phase 4: deftype/defrecord completion 2026-06-02 21:10:33 -04:00
conformance.janet feat: map literals evaluate their values (fixes critical latent bug); expand SCI bootstrap to 14 files (ctx_store/deftype/records/core_protocols/hierarchies + sci.impl.io stub), 390/392 forms; fix multi-arity defmethod (builds fn*) and variadic macrofy; SCI test loaders tolerant of the 2 redundant clojure.core registration maps 2026-06-04 17:28:44 -04:00
core-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
eval-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
evaluator-test.janet bootstrap: SCI core deps loading with 284/304 forms passing 2026-06-01 23:24:13 -04:00
features-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
hash-map-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
interop-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
jank-conformance.janet test: add jank-conformance harness — runs jank's Clojure pass-tests from local ~/src/jank (MPL, not vendored; skips if absent) and asserts >=119 pass as a regression baseline 2026-06-04 18:05:03 -04:00
lazy-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
logic-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
macro-test.janet Initial commit: Jolt — Clojure interpreter on Janet 2026-06-01 16:48:56 -04:00
namespace-test.janet Initial commit: Jolt — Clojure interpreter on Janet 2026-06-01 16:48:56 -04:00
phase5-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase6-final.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase6-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase7-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase8-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase10-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase12-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
phase13-test.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
reader-test.janet feat: proper char type ({:jolt/type :jolt/char :ch N}) — reader literals, char?/char/int/str, =, seq/first/rest/nth of strings yield chars, char printing; fix REPL multi-line input accumulation 2026-06-04 15:40:59 -04:00
systematic-coverage.janet feat: structural-sharing persistent vectors (immutable build) + mutable toggle 2026-06-04 18:56:55 -04:00
test-load-sci.janet feat: map literals evaluate their values (fixes critical latent bug); expand SCI bootstrap to 14 files (ctx_store/deftype/records/core_protocols/hierarchies + sci.impl.io stub), 390/392 forms; fix multi-arity defmethod (builds fn*) and variadic macrofy; SCI test loaders tolerant of the 2 redundant clojure.core registration maps 2026-06-04 17:28:44 -04:00
test-sci-runtime.janet feat: map literals evaluate their values (fixes critical latent bug); expand SCI bootstrap to 14 files (ctx_store/deftype/records/core_protocols/hierarchies + sci.impl.io stub), 390/392 forms; fix multi-arity defmethod (builds fn*) and variadic macrofy; SCI test loaders tolerant of the 2 redundant clojure.core registration maps 2026-06-04 17:28:44 -04:00
types-test.janet Initial commit: Jolt — Clojure interpreter on Janet 2026-06-01 16:48:56 -04:00