v0.1.2 - Performance pipeline and benchmark expansion
[0.1.2] — 2026-05-21 — Performance pipeline and benchmark expansion
This release adds the first performance gap-closure pass for benchmarked native
codegen and expands the local benchmark suite.
Codegen and runtime
- Added MIR-derived panic-effect facts so pure scalar statements and pure
byte/list push values do not force unnecessaryzmeu_panic_active()polls. - Marked ordinary generated Zmeu helper functions private/internal and added
inlining, symbol DCE,mem2reg,sroa, canonicalization, and CSE cleanup to
the release MLIR pipeline. - Removed impossible negative bounds checks for
usizeindexes and skipped
proven redundant bounds checks for compiler-generatedforloop element
access. - Added defended LLVM attributes for runtime declarations whose C contracts are
already explicit, includingnounwindandnoreturnfor process exit and
fatal panic helpers. - Changed list/byte-buffer initial growth from 1 to 8 and added a release
runtime mode that disables the debug allocation registry while preserving
overflow, null, allocator-tag, and allocation-failure checks.
Benchmarks and inspection
- Added
benchmarks/ir_counts.shfor repeatable LLVM IR artifact counts. - Expanded
benchmarks/run.shto discover benchmark fixture directories
automatically. - Added benchmark fixtures for branch-heavy scalar loops, helper calls, fixed
array indexing, optional narrowing, borrowed range slicing, and struct field
reads. - Added
docs/performance.mdanddocs/performance_plan.mdas active
performance tracking documents.
Validation
- Verified with
python3 tools/gen_mlir_abi.py --check,
cargo check --features mlir-backend, and
cargo test --features mlir-backend.