Skip to content

Commit 2c83eb5

Browse files
committed
release: cljw 1.0.1 — memory-safety patch (user-authorized tag)
Smell-audited: 1: version bump + CHANGELOG only; fixes shipped in prior commits
1 parent 51ffda7 commit 2c83eb5

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

‎CHANGELOG.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,38 @@ All notable changes to ClojureWasm are documented here. The format follows
55
[SemVer](https://semver.org/). SemVer compatibility guarantees start at the
66
first stable `1.0.0` tag; pre-1.0 `alpha` / `rc` tags may still change surfaces.
77

8+
## [1.0.1] - 2026-07-02
9+
10+
Patch release: memory-safety fixes found by a post-release audit. No API
11+
changes. Users on 1.0.0 should upgrade — the first item is reachable from
12+
ordinary code.
13+
14+
### Fixed
15+
16+
- **Stack overflow on deep lazy chains** — realizing or counting a lazy
17+
sequence / cons chain longer than ~400k elements (e.g.
18+
`(count (repeat 1000000 1))`) crashed the process: the GC mark phase
19+
descended the object graph recursively on the native stack. Marking now
20+
uses an explicit gray worklist (O(1) stack for any depth).
21+
- **Use-after-free family during analysis/compilation** — GC values created
22+
while a form is analyzed, compiled, or AOT-deserialized (literal strings,
23+
quoted data, chunk constants, macro-expansion intermediates) were not GC
24+
roots until execution, so a collection mid-analysis (large file loads,
25+
user-macro expansion) could recycle them — surfacing as per-run-varying
26+
`Unable to resolve symbol: '<garbage>'` errors, index-out-of-bounds
27+
panics, or spurious "host-marker method not yet wired" errors when
28+
loading bigger libraries (instaparse, math.combinatorics). A per-thread
29+
analysis-roots frame now keeps them alive; `deftype` / `reify` method
30+
tables are also traced (their method functions could be collected out
31+
from under a live type).
32+
- **Namespace reflection errors are now catchable** — `ns-resolve`,
33+
`ns-map`, `ns-name`, `intern`, `create-ns`, `alias`, `find-var` and
34+
friends raised an uncatchable "not supported" error on a missing
35+
namespace or wrong-typed argument; Clojure raises a plain catchable
36+
exception there, and libraries rely on that for capability probes
37+
(`(try (ns-resolve …) (catch Exception e nil))`). They now match
38+
Clojure's exception classes.
39+
840
## [1.0.0] - 2026-07-01
941

1042
The first **stable** release. ClojureWasm is a JVM-free Clojure runtime written

‎build.zig.zon‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.{
22
.name = .cljw,
3-
.version = "1.0.0",
3+
.version = "1.0.1",
44
.fingerprint = 0x1869d207073beffa,
55
.minimum_zig_version = "0.16.0",
66
.dependencies = .{

0 commit comments

Comments
 (0)