Releases: leifericf/mino
Releases · leifericf/mino
v0.149.1
release: cut v0.149.1 Bug-fix roll-up over v0.149.0. Highlights: sequential hash now satisfies equal-implies-equal-hash across vector / list / chunked seq / realized lazy; sorted-map and sorted-set hashes match their hash-map / hash-set cross-type-equal counterparts; sorted dissoc of an absent key no longer corrupts count; ex-info accepts the 3-arity cause form; catch preserves the thrown value's metadata; fmt_ensure and (sh ...) no longer leak buffers on realloc OOM; (sh ...) detects pclose's -1 sentinel; safepoint header comment matches the should_yield-setting STW path. See CHANGELOG.md for the full set. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.149.0
v0.149.0 — clojure-test-suite conformance pass: 220/220 files, 5340/5…
v0.148.0
release: bump version to 0.148.0 and refresh CHANGELOG Releases the recent C ports as v0.148.0 and rewrites the v0.146.0 / v0.147.0 entries to drop internal phase / cycle planning vocabulary and describe each change user-facingly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.145.0
release: ship 0.145.0 fusion cycle Six phases shipped; each commit kept its own bench delta and parity tests. Top wins: sum-1-to-1M reduce + range 180x via the wrapper fix, vec-1M reduce 1.9x, map-10k reduce 1.6x, assoc-noop HAMT 2.0x.
v0.144.6
release: ship 0.144.6 with bc adversarial fixes Single-version cover for four bc bug fixes landed under this tag: - IC cache shadowed closure free vars - catch landing leaked dyn frames - arity mismatch returned silent NULL - OP_PUSHCATCH at MAX_TRY_DEPTH returned silent NULL Each fix has its own commit and regression test; this commit ships the user-facing version bump and a consolidated CHANGELOG entry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.144.5
v0.144.5: read OP_PUSHCATCH td from catch-stack, not stack-local The longjmp-return branch of OP_PUSHCATCH was reading try_stack[td].exception where td was a stack local captured before setjmp. C99 does not promise that distinct case-scope locals occupy distinct stack slots, and gcc with -O2 reuses the slot for a sibling PUSHCATCH. When inner PUSHCATCH ran, inner's td overwrote outer's td. On longjmp back to outer, outer's td read inner's value, indexing the wrong try_stack slot and returning the inner-thrown exception instead of the re-thrown one. Apple clang's codegen happened to keep the slots distinct, so the bug only surfaced on Linux gcc. The fix reads try_depth_at_push from bc_catch_stack[d] -- a heap-backed field already populated at PUSHCATCH arm time -- instead of from the stack local. Same value, but it survives longjmp regardless of compiler slot-sharing choices. Regression test bc-try-finally / "finally runs on re-throw from handler" now passes on Linux gcc as well as Apple clang. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.104.0
Bump version to v0.104.0 and finalize CHANGELOG The eval-floor performance cycle: alloc profiler, var registry hash indices, monomorphic inline call cache with version-counter invalidation, argv/argc calling convention for hot prims plus variadic + - * / and the comparison ops, closure-shape pre-compile, binary numeric int+int fast lane, reduce/range fast paths, multi- arity recur env reuse, cached symbol hash on the val, inline truthiness for branch dispatch, and a fix for ns-unmap missing the IC invalidation. Microbenchmark gate: average per-op cost reduced about 24 percent across 15 benches; allocation per op unchanged. Tight integer loop/recur bench dropped from 941 ms to 375 ms.
v0.101.1
v0.101.1: STM and agent hardening pass Bump MINO_VERSION_PATCH to 1; finalize CHANGELOG header for v0.101.1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.101.0
v0.101.0: STM, agents, var watches
v0.100.34
Add aset for host arrays; tighten vec bad-shape rejection aset on MINO_HOST_ARRAY mutates vals[i] in place. This is the only mutation path outside MINO_ATOM / MINO_VOLATILE; it exists because the host-array tier mirrors JVM array semantics. seq_iter_init / done / val now handle MINO_HOST_ARRAY and MINO_MAP_ENTRY so into / mapv / etc. iterate uniformly. vec in src/core.clj rejects bad shapes (numbers, booleans, chars, keywords, symbols, regexes, transients) up front. vec.cljc 13/15 errors -> 19/20. The remaining failure is the (aset arr 0 -1) (= [-1 2 3] (vec arr)) storage-aliasing assertion -- JVM's LazilyPersistentVector.createOwning reuses small Object[] arrays as the persistent vector's tail, which is incompatible with mino's persistent-trie vec that genuinely copies its input. JVM-internal optimization, not portable. Internal 1476 / 7091 / 0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>