Replace the correctness-only transient aliases with real mutable scratch collections via host interop: - transient vector -> a Janet array; conj!/assoc!/pop! mutate in place - transient map -> a Janet table keyed by canonical key (collection keys still compare by value); assoc!/dissoc!/conj! mutate in place - transient set -> a Janet table; conj!/disj! mutate in place - persistent! freezes back to a pvec / phm / phs - count/nth/get/contains? work on transients; transient? predicate added Building a map/set this way avoids the persistent path's per-step bucket-array copying (transient map build ~35% faster at 20k here); vectors are comparable since pvec conj is already ~O(1). The mutating ops return the transient and the source collection is untouched. spec/transients-spec (34 cases). conformance 218/218, jpm test green. |
||
|---|---|---|
| .. | ||
| integration | ||
| spec | ||
| support | ||
| unit | ||