Skip to content

v0.1.2 - Performance pipeline and benchmark expansion

Choose a tag to compare

@yxanul yxanul released this 21 May 19:41

[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 unnecessary zmeu_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 usize indexes and skipped
    proven redundant bounds checks for compiler-generated for loop element
    access.
  • Added defended LLVM attributes for runtime declarations whose C contracts are
    already explicit, including nounwind and noreturn for 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.sh for repeatable LLVM IR artifact counts.
  • Expanded benchmarks/run.sh to 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.md and docs/performance_plan.md as 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.