ok2
adc4d59caa
Fix formatting (cargo fmt)
2026-04-09 20:09:35 +02:00
ok2
5555202bf0
Self-recursive direct call, UTIME, CONSOLIDATE benchmarks
...
1. Self-recursive direct call: when a word calls itself (RECURSE),
emit `call WORD_FUNC` instead of `call_indirect`. Eliminates
table lookup + signature check for recursive words.
Fibonacci(25): 5003us → 1629us (3x faster, now 2.2x faster than gforth)
2. Add CONSOLIDATE column to performance benchmarks showing
post-consolidation performance (direct calls between all words).
WAFER now beats gforth on all 5 benchmarks:
Fibonacci: 0.45x (2.2x faster)
Factorial: 0.53x (1.9x faster)
GCD: 0.50x (2x faster)
NestedLoops: 0.10x (10x faster)
Collatz: 0.31x (3x faster)
2026-04-09 19:54:40 +02:00
ok2
71ee292c37
Release-mode benchmarks, UTIME word, consolidated promotion
...
Three changes:
1. Add UTIME host function ( -- ud ) for microsecond timing in Forth.
Enables self-timed benchmarks matching gforth's utime approach.
2. Switch comparison benchmarks to release mode: builds wafer binary
with --release, measures via UTIME (excludes startup overhead).
Previously measured debug-mode Rust overhead, not WASM execution.
3. Add stack-to-local promotion to consolidated codegen path. Words
that pass is_promotable now use the StackSim emit path even in
CONSOLIDATE'd modules, preventing performance regression.
Release-mode results (WAFER beats gforth on 4/5 benchmarks):
Factorial: 0.54x (2x faster)
GCD: 0.50x (2x faster)
NestedLoops: 0.10x (10x faster)
Collatz: 0.31x (3x faster)
Fibonacci: 1.47x (call overhead)
2026-04-09 19:44:26 +02:00
ok2
1e2ede58ac
Add cross-engine comparison test suite (WAFER vs gforth)
...
35 behavioral tests across 8 categories verify identical output between
WAFER and gforth. Performance benchmarks compare execution speed for
Fibonacci, Factorial, GCD, NestedLoops, and Collatz workloads.
WAFER-only correctness tests run in CI without gforth; cross-engine
comparison and performance report are opt-in via --ignored.
2026-04-09 16:19:48 +02:00