Skip to content

Commit 12cc1d0

Browse files
committed
Bump version strings to v0.2.0, update READMEs and benchmarks
- CLI --version and --help now show v0.2.0 - README: startup ~4ms, bench CW column updated - bench/README: zwasm 0.2.0, CW values refreshed - history.yaml: fix vector_ops outlier (0ms → 6ms) - future.md: zwasm version reference
1 parent 5f27625 commit 12cc1d0

5 files changed

Lines changed: 32 additions & 32 deletions

File tree

.dev/future.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
| GC | MarkSweepGc (D69, D70) |
2727
| Benchmark suite | 31 benchmarks (20 native + 11 wasm) |
2828
| Backends | VM (bytecode) + TreeWalk |
29-
| Wasm engine | zwasm v0.1.0 (external dependency) |
29+
| Wasm engine | zwasm v0.2.0 (external dependency) |
3030

3131
---
3232

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ a native implementation targeting behavioral compatibility with Clojure.
1818

1919
## Highlights
2020

21-
- **Fast startup**~5ms to evaluate an expression (ReleaseSafe)
21+
- **Fast startup**~4ms to evaluate an expression (ReleaseSafe)
2222
- **Small binary**~4MB single executable (ReleaseSafe)
2323
- **Single binary distribution**`cljw build app.clj -o app`, runs without cljw installed
2424
- **Wasm FFI** — call WebAssembly modules from Clojure (523 opcodes including SIMD + GC)
@@ -225,7 +225,7 @@ All tests verified on both VM and TreeWalk backends.
225225
Once production-ready, ClojureWasm could enable workloads where the JVM
226226
is too heavy:
227227

228-
- **Serverless functions**~4MB image + ~5ms cold start for AWS Lambda
228+
- **Serverless functions**~4MB image + ~4ms cold start for AWS Lambda
229229
or Fly.io, eliminating JVM warm-up penalties
230230
- **Wasm plugin host** — embed user-supplied .wasm modules as extensibility
231231
points (e.g., Cloudflare Workers-style logic, game scripting)

bench/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -197,22 +197,22 @@ launch to exit) — languages with heavy runtimes (JVM, V8) pay startup cost.
197197
| Benchmark | CW | Python | Ruby | Node | Java* | C | Zig | TinyGo |
198198
|----------------------|------|--------|------|------|-------|-----|-----|--------|
199199
| fib_recursive | 19 | 17.1 | 37.7 | 25.2 | 20.3 | 1.2 | 1.7 | 3.3 |
200-
| fib_loop | 4 | 12.7 | 37.9 | 21.8 | 20.6 | 3.8 | 0.6 | 2.6 |
201-
| tak | 7 | 13.2 | 33.6 | 24.2 | 21.0 | 1.7 | 2.9 | 2.0 |
200+
| fib_loop | 5 | 12.7 | 37.9 | 21.8 | 20.6 | 3.8 | 0.6 | 2.6 |
201+
| tak | 8 | 13.2 | 33.6 | 24.2 | 21.0 | 1.7 | 2.9 | 2.0 |
202202
| arith_loop | 5 | 60.7 | 54.5 | 25.2 | 21.4 | 1.7 | 1.2 | 1.7 |
203-
| map_filter_reduce | 7 | 13.0 | 35.9 | 23.7 | 21.4 | 1.4 | 1.4 | 2.6 |
203+
| map_filter_reduce | 6 | 13.0 | 35.9 | 23.7 | 21.4 | 1.4 | 1.4 | 2.6 |
204204
| vector_ops | 6 | 13.5 | 31.6 | 22.7 | 24.1 | 1.3 | 1.4 | 2.3 |
205-
| map_ops | 5 | 12.8 | 30.8 | 22.3 | 18.7 | 1.0 | 1.7 | 2.4 |
206-
| list_build | 5 | 14.6 | 34.6 | 25.7 | 21.9 | 1.5 | 1.8 | 2.5 |
205+
| map_ops | 6 | 12.8 | 30.8 | 22.3 | 18.7 | 1.0 | 1.7 | 2.4 |
206+
| list_build | 6 | 14.6 | 34.6 | 25.7 | 21.9 | 1.5 | 1.8 | 2.5 |
207207
| sieve | 6 | 12.2 | 35.8 | 24.4 | 23.8 | 1.4 | 1.2 | 1.6 |
208208
| nqueens | 15 | 16.2 | 51.6 | 23.5 | 20.9 | 0.5 | 0.9 | 1.9 |
209-
| atom_swap | 6 | 11.7 | 36.2 | 24.0 | 20.9 | 1.4 | 2.9 | 3.5 |
210-
| gc_stress | 28 | 30.5 | 41.4 | 26.7 | 30.5 | 2.6 | --- | 20.2 |
211-
| lazy_chain | 8 | 15.4 | 33.0 | 26.1 | 22.2 | 2.6 | 1.6 | 2.2 |
209+
| atom_swap | 5 | 11.7 | 36.2 | 24.0 | 20.9 | 1.4 | 2.9 | 3.5 |
210+
| gc_stress | 26 | 30.5 | 41.4 | 26.7 | 30.5 | 2.6 | --- | 20.2 |
211+
| lazy_chain | 7 | 15.4 | 33.0 | 26.1 | 22.2 | 2.6 | 1.6 | 2.2 |
212212
| transduce | 6 | 12.6 | 36.2 | 23.5 | 23.7 | 1.3 | 1.7 | 1.9 |
213-
| keyword_lookup | 12 | 19.4 | 37.0 | 27.4 | 23.9 | 1.6 | 0.0 | 4.9 |
214-
| protocol_dispatch | 7 | 12.7 | 32.8 | 24.3 | 22.0 | 2.3 | 1.7 | 2.2 |
215-
| nested_update | 11 | 12.6 | 32.9 | 24.0 | 23.7 | 0.2 | 1.3 | 3.1 |
213+
| keyword_lookup | 11 | 19.4 | 37.0 | 27.4 | 23.9 | 1.6 | 0.0 | 4.9 |
214+
| protocol_dispatch | 6 | 12.7 | 32.8 | 24.3 | 22.0 | 2.3 | 1.7 | 2.2 |
215+
| nested_update | 10 | 12.6 | 32.9 | 24.0 | 23.7 | 0.2 | 1.3 | 3.1 |
216216
| string_ops | 25 | 25.2 | 38.0 | 24.5 | 24.8 | 4.3 | 2.0 | 1.5 |
217217
| multimethod_dispatch | 6 | 13.3 | 33.8 | 24.6 | 20.0 | 2.6 | 0.9 | 2.1 |
218218
| real_workload | 10 | 13.6 | 37.1 | 24.7 | 26.6 | 0.9 | 1.0 | 1.7 |
@@ -232,7 +232,7 @@ Measured as ReleaseSafe builds on ARM64 macOS.
232232

233233
| Runtime | Version | Binary Size |
234234
|----------------|--------------|-------------|
235-
| **zwasm** | 0.1.0 | **1.1 MB** |
235+
| **zwasm** | 0.2.0 | **1.1 MB** |
236236
| wasmtime | 41.0.1 | 56.3 MB |
237237
| bun | 1.3.8 | 57.1 MB |
238238
| node | v24.13.0 | 61.7 MB |
@@ -243,7 +243,7 @@ Full Wasm 3.0 support (all 9 proposals including GC) in 1.1 MB.
243243

244244
## Latest Wasm Runtime Results (2026-02-14)
245245

246-
CW's built-in Wasm runtime (zwasm, Register IR + ARM64/x86_64 JIT)
246+
CW's built-in Wasm runtime (zwasm v0.2.0, Register IR + ARM64/x86_64 JIT)
247247
vs 4 other Wasm runtimes. Apple M4 Pro, 48GB RAM.
248248
21 benchmarks (WAT 5, TinyGo 11, Shootout 5), hyperfine 3 runs + 1 warmup.
249249

bench/history.yaml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -907,27 +907,27 @@ entries:
907907
- id: "v0.2.0"
908908
date: "2026-02-14"
909909
reason: "v0.2.0 release"
910-
commit: "d7f4a29"
910+
commit: "5f27625"
911911
build: ReleaseSafe
912912
backend: vm
913913
results:
914-
fib_recursive: {time_ms: 18, mem_mb: 11.6}
914+
fib_recursive: {time_ms: 19, mem_mb: 11.6}
915915
fib_loop: {time_ms: 5, mem_mb: 11.6}
916-
tak: {time_ms: 8, mem_mb: 11.6}
916+
tak: {time_ms: 11, mem_mb: 11.6}
917917
arith_loop: {time_ms: 5, mem_mb: 11.6}
918-
map_filter_reduce: {time_ms: 6, mem_mb: 12.2}
918+
map_filter_reduce: {time_ms: 7, mem_mb: 12.2}
919919
vector_ops: {time_ms: 6, mem_mb: 16.7}
920-
map_ops: {time_ms: 5, mem_mb: 15.6}
921-
list_build: {time_ms: 4, mem_mb: 12.2}
922-
sieve: {time_ms: 5, mem_mb: 15.1}
920+
map_ops: {time_ms: 6, mem_mb: 15.6}
921+
list_build: {time_ms: 6, mem_mb: 12.2}
922+
sieve: {time_ms: 6, mem_mb: 15.1}
923923
nqueens: {time_ms: 15, mem_mb: 22.6}
924924
atom_swap: {time_ms: 5, mem_mb: 11.6}
925925
gc_stress: {time_ms: 26, mem_mb: 17.4}
926-
lazy_chain: {time_ms: 6, mem_mb: 11.6}
927-
transduce: {time_ms: 7, mem_mb: 11.6}
928-
keyword_lookup: {time_ms: 12, mem_mb: 11.6}
929-
protocol_dispatch: {time_ms: 38, mem_mb: 11.6}
926+
lazy_chain: {time_ms: 7, mem_mb: 11.6}
927+
transduce: {time_ms: 6, mem_mb: 11.6}
928+
keyword_lookup: {time_ms: 11, mem_mb: 11.6}
929+
protocol_dispatch: {time_ms: 6, mem_mb: 11.6}
930930
nested_update: {time_ms: 10, mem_mb: 16.8}
931-
string_ops: {time_ms: 24, mem_mb: 21.3}
932-
multimethod_dispatch: {time_ms: 5, mem_mb: 11.6}
931+
string_ops: {time_ms: 25, mem_mb: 21.3}
932+
multimethod_dispatch: {time_ms: 6, mem_mb: 11.6}
933933
real_workload: {time_ms: 10, mem_mb: 18.6}

src/main.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const embed_trailer_size = 12;
4545
fn printHelp() void {
4646
const stdout: std.fs.File = .{ .handle = std.posix.STDOUT_FILENO };
4747
_ = stdout.write(
48-
\\ClojureWasm v0.1.0
48+
\\ClojureWasm v0.2.0
4949
\\
5050
\\Usage:
5151
\\ cljw [options] [file.clj]
@@ -202,7 +202,7 @@ pub fn main() !void {
202202
return;
203203
} else if (std.mem.eql(u8, arg, "--version")) {
204204
const stdout: std.fs.File = .{ .handle = std.posix.STDOUT_FILENO };
205-
_ = stdout.write("ClojureWasm v0.1.0\n") catch {};
205+
_ = stdout.write("ClojureWasm v0.2.0\n") catch {};
206206
return;
207207
} else if (std.mem.eql(u8, arg, "--tree-walk")) {
208208
use_vm = false;
@@ -542,7 +542,7 @@ fn runRepl(allocator: Allocator, env: *Env, gc: *gc_mod.MarkSweepGc) void {
542542
return;
543543
}
544544

545-
_ = stdout.write("ClojureWasm v0.1.0\n") catch {};
545+
_ = stdout.write("ClojureWasm v0.2.0\n") catch {};
546546

547547
var editor = line_editor.LineEditor.init(allocator, env);
548548
defer editor.deinit();

0 commit comments

Comments
 (0)