Skip to content

Releases: wasmi-labs/wasmi

v2.0.0-beta.3 - 2026/06/22

22 Jun 16:21
v2.0.0-beta.3
e6189ed

Choose a tag to compare

Pre-release

Added

  • Added a new validate crate feature to wasmi and wasmi_cli crates. 🚀
    • This feature controls whether Wasmi support Wasm validation.
    • The feature is enabled by default with --no-default-features.
    • Users who have full control over the Wasm inputs to Wasmi may
      have a great need for this as this can reduce binary artifact sizes
      by ~200-300kB.
    • PR: #1902
  • Added new libm crate feature to Wasmi. #1860
    • This allows to enforce libm usage.
  • Added support to Wasmi CLI to print funcref and externref with null value. #1839
  • Add support for hexdec encoded integer args to Wasmi CLI. #1851

Changed

  • Wasmi IR operators now store their results in accumulator registers. 🚀
    • With this, Wasmi uses the same interpreter architecture as the fastest Wasm interpreters, Wasm3 and Stitch.
    • Benchmarks concluded that Wasmi is on par and sometimes even exceeds performance of its competition now.
    • PRs:
      • #1827: Definitions for new Wasmi IR
      • #1855: Adjustments Wasmi Translator & Executor
    • Follow-up Optimizations:
      • #1895: Adds specialized i{32,64}.add operator variants.
      • #1896: Adds lowering from isub to iadd operators.
      • #1905: Make more SIMD operators return results in accumulator registers.
  • New Wasmi execution optimizations: 🚀
    • Re-designed CodeMap to be lock-free & append-only. #1898
      • Wasmi makes full use of these CodeMap attributes which significantly
        improves Wasm to Wasm function call performance.
    • Only zero-initialize non-parameter function locals upon Wasm call. #1893
      • This significantly improves Wasm to Wasm function call performance.
    • CLI: disallow v128 argument types. #1848
      • With this Wasmi CLI now mirrors Wasmtime CLI's behavior.
    • Improve instance preservation of same-instance calls. #1878
    • Translate ref.is_null via i32.eqz instead of i64.eqz. #1861

Fixed

  • Fix operand order in v128_select_ssss translation. #1834
  • Fix re-extraction of mem0 after host function calls. #1837
  • Fixed incorrect NaN behavior for f{32,64}.{ceil,floor,trunc}. #1860

Internal

  • Automatically create release artifacts for Wasmi GitHub releases. #1906
  • Added flag to steer LLVM away from bad codegen. #1873
  • Added missing std crate feature forward from wasmi to wasmi_ir. #1862
  • Update Wasmtime fuzzing oracle to v45. #1867
  • Make benchmarks test properly under Windows. #1885
  • Fixed a bug that wat based tests were not ignored on !wat. #1883
  • Added a whole variety of new Rust based benchmarks:
    • PRs:
      • #1870 : sort, matrix_mul, prime_sieve
      • #1871 : n-body: physics simulation
      • #1872 : argon2: password hashing
      • #1877 :
        • mandelbrot
        • spetralnorm
        • json_parsing
        • compression
        • word_count

v1.1.0 - 2026/06/12

12 Jun 12:44
v1.1.0
8273dfb

Choose a tag to compare

Changed

  • Updated the wasmparser dependency from v0.228 to v0.239.
  • Add convenience From<{f32,f64}> for Val impls.

v2.0.0-beta.2 - 2026/03/03

03 Mar 14:12
v2.0.0-beta.2
e097f8c

Choose a tag to compare

Pre-release

Added

  • Added unstable crate feature to wasmi, wasmi_wast and wasmi_cli crates. #1825
    • This enables unstable rustc features available in nightly Rust releases.
    • Concretely, this enables usage of Rust's unstable become keyword to enforce
      tail-calls in its instruction dispatch when portable-dispatch is disabled.
    • Enable become with cargo build --no-default-features --features unstable.
  • Added proper README.md to Wasmi's CLI application. #1824

Changed

  • Clean-up ResourceLimiter API. #1817
    • StoreLimits now properly enforce panics if trap_on_grow_failure was enabled.
    • memory_grow_failed and table_grow_failed now take MemoryError and TableError respectively.
    • LimiterError is now a single variant enum making its use much simpler.

Fixed

  • CLI: fixed a panic when using the run command without arguments. #1810
  • Fixed an integer-overflow bug in the internal Table::set_raw API. #1818
    • Thanks to sumleo for reporting the issue.
  • Fixed a potential bug with local.set translation and SIMD. #1821

Internal

  • Redesigned Wasmi's internal select operators. #1823
    • The new design is simpler, performs similarly and requires fewer select operators.

v2.0.0-beta.1 - 2026/02/19

19 Feb 17:07
v2.0.0-beta.1
177f508

Choose a tag to compare

Pre-release

Changed

  • Wasmi's internal Handle trait no longer has a From super-trait. #1804
    • This fixes an issue from users with conflicting From impls for Wasmi handles
      such as Func, Global, etc..

v2.0.0-beta.0 - 2026/02/18

18 Feb 15:14
v2.0.0-beta.0
ce21848

Choose a tag to compare

Pre-release

Added

  • Implemented some improvements for wasmi::Table.
    • Added Ref and RefType and make wasmi::Table operate on Ref instead of Val. #1747
      • This has be beneficial side-effect that wasmi::Table is now unaffected by
        the simd crate feature and no longer suffers from increased memory consumption.
      • Furthermore, this improves Wasmi's Wasmtime API mirror as Wasmtime also uses Ref and RefType.
    • Shrink wasmi::Table elements from 64-bit to 32-bit. #1776
      • This effectively halfs the memory consumption of wasmi::Table instances.
  • Designed and integrated an entirely new internal IR for Wasmi. #1655
    • This affects both execution and translation performance.
    • New crate features have been added:
      • portable-dispatch:
        Enable to compile Wasmi on any platform supported by Rust
        However, this may significantly reduce execution performance.
      • indirect-dispatch:
        Enable to use less encoding space for Wasmi's internal IR.
        However, this may significantly reduce execution performance.
  • Wasmi's executor now uses fixed 64-bits cells. #1755
    • This technically is an internal change but it yields observable improvements for users.
    • Enabling the simd crate feature no longer affects memory consumption or
      execution performance of non-simd Wasm code.
  • Implement a variety of improvements for the Wasmi CLI application.
    • Added a bunch of new crate features to the wasmi_cli crate:
      • PRs: #1784 #1787 #1788
      • wasi: Enable WASI support. (default: ✅)
      • wast: Enable Wast support and wast command. (default: ✅)
      • run: Enable the run command (default: ✅)
      • portable-dispatch: Enable wasmi's portable-dispatch crate feature. (default: ❌)
      • indirect-dispatch: Enable wasmi's indirect-dispatch crate feature. (default: ❌)
    • Similar to Wasmtime's CLI, Wasmi now also features sub-commands: #1799
      • run: Executes a WebAssembly module.
      • wast: Executes a WebAssembly script.
    • The Wasmi CLI's command has been renamed from wasmi_cli to just wasmi. #1798
  • Add wasmi_wasi::add_to_externals API. #1785
    • This is more efficient than the existing add_to_linker API and should
      be used instead if possible.
    • The Wasmi CLI application now makes use of this API in order to prepare
      its WASI environment.

Changed

  • Wasmi now uses Rust edition 2024 in the entire workspace. #1759
    • This does not affect users since Wasmi's MSRV did not change.

Internal

  • Use OIDC in Wasmi coverage CI job. #1745
  • Wasmi differential fuzzing oracles are not optionally included. #1758
    • This allows to exclude fuzzing oracles to speed-up fuzzing and compile times.
  • Add a new GitHub Actions CI job to check via cargo-deny. #1761
  • Refactored wasmi_collections arena data structures. #1771
  • Removed ancient Wasmi v0.31 as oracle for differential fuzzing. #1777
  • Renamed internal Untyped{Val,Ref} types to Raw{Val,Ref}. #1781
  • Refactor and unify Wasmi's internal handle types. #1772

v1.0.9 - 2026/02/09

09 Feb 17:15
v1.0.9
61ba65e

Choose a tag to compare

Fixed

  • Fixed a bug that Wasmi's translator would sometimes incorrectly merge copy instructions. #1779

v1.0.8 - 2026/01/29

29 Jan 12:35
v1.0.8
412301b

Choose a tag to compare

Fixed

  • Fixed another bug with incorrect translation of wide-arithmetic ops followed by local.set. #1762

v1.0.7 - 2026/01/09

09 Jan 21:46
v1.0.7
17ef24d

Choose a tag to compare

Fixed

  • Fixed a bug that local.set fusion with some wide-arithmetic ops was working incorrectly. #1756

v1.0.6 - 2025/12/25

25 Dec 13:42
v1.0.6
b28325a

Choose a tag to compare

Fixed

  • Fixed a bug that local preservation of Wasm loops was missing. #1748
    • Thanks to davnavr for reporting the bug.

v1.0.5 - 2025/12/19

19 Dec 12:13
v1.0.5
b549a8f

Choose a tag to compare

Fixed

  • Fix a bug in the execution of i{32,64}.rem_s(MAX, -1). rev-1c3682f
    • The Wasm spec demanded to return 0 while Wasmi trapped with integer-overflow.
    • Thanks to davnavr for the detailed bug report.