Releases: wasmi-labs/wasmi
Releases · wasmi-labs/wasmi
v2.0.0-beta.3 - 2026/06/22
Added
- Added a new
validatecrate feature towasmiandwasmi_clicrates. 🚀- 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
libmcrate feature to Wasmi. #1860- This allows to enforce
libmusage.
- This allows to enforce
- Added support to Wasmi CLI to print
funcrefandexternrefwithnullvalue. #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:
- Follow-up Optimizations:
- New Wasmi execution optimizations: 🚀
- Re-designed
CodeMapto be lock-free & append-only. #1898- Wasmi makes full use of these
CodeMapattributes which significantly
improves Wasm to Wasm function call performance.
- Wasmi makes full use of these
- Only zero-initialize non-parameter function locals upon Wasm call. #1893
- This significantly improves Wasm to Wasm function call performance.
- CLI: disallow
v128argument types. #1848- With this Wasmi CLI now mirrors Wasmtime CLI's behavior.
- Improve
instancepreservation of same-instance calls. #1878 - Translate
ref.is_nullviai32.eqzinstead ofi64.eqz. #1861
- Re-designed
Fixed
- Fix operand order in
v128_select_sssstranslation. #1834- Thanks to @shumbo for the fix!
- Fix re-extraction of
mem0after host function calls. #1837- Thanks to @npiesco for the fix!
- 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
stdcrate feature forward fromwasmitowasmi_ir. #1862 - Update Wasmtime fuzzing oracle to v45. #1867
- Make benchmarks test properly under Windows. #1885
- Fixed a bug that
watbased tests were not ignored on!wat. #1883 - Added a whole variety of new Rust based benchmarks:
v1.1.0 - 2026/06/12
v2.0.0-beta.2 - 2026/03/03
Added
- Added
unstablecrate feature towasmi,wasmi_wastandwasmi_clicrates. #1825- This enables unstable
rustcfeatures available in nightly Rust releases. - Concretely, this enables usage of Rust's unstable
becomekeyword to enforce
tail-calls in its instruction dispatch whenportable-dispatchis disabled. - Enable
becomewithcargo build --no-default-features --features unstable.
- This enables unstable
- Added proper
README.mdto Wasmi's CLI application. #1824
Changed
- Clean-up
ResourceLimiterAPI. #1817StoreLimitsnow properly enforce panics iftrap_on_grow_failurewas enabled.memory_grow_failedandtable_grow_failednow takeMemoryErrorandTableErrorrespectively.LimiterErroris now a single variantenummaking its use much simpler.
Fixed
- CLI: fixed a panic when using the
runcommand without arguments. #1810- Thanks to polarathene for reporting the issue.
- Fixed an integer-overflow bug in the internal
Table::set_rawAPI. #1818- Thanks to sumleo for reporting the issue.
- Fixed a potential bug with
local.settranslation and SIMD. #1821
Internal
- Redesigned Wasmi's internal
selectoperators. #1823- The new design is simpler, performs similarly and requires fewer
selectoperators.
- The new design is simpler, performs similarly and requires fewer
v2.0.0-beta.1 - 2026/02/19
Changed
- Wasmi's internal
Handletrait no longer has aFromsuper-trait. #1804- This fixes an issue from users with conflicting
Fromimpls for Wasmi handles
such asFunc,Global, etc..
- This fixes an issue from users with conflicting
v2.0.0-beta.0 - 2026/02/18
Added
- Implemented some improvements for
wasmi::Table.- Added
RefandRefTypeand makewasmi::Tableoperate onRefinstead ofVal. #1747- This has be beneficial side-effect that
wasmi::Tableis now unaffected by
thesimdcrate feature and no longer suffers from increased memory consumption. - Furthermore, this improves Wasmi's Wasmtime API mirror as Wasmtime also uses
RefandRefType.
- This has be beneficial side-effect that
- Shrink
wasmi::Tableelements from 64-bit to 32-bit. #1776- This effectively halfs the memory consumption of
wasmi::Tableinstances.
- This effectively halfs the memory consumption of
- Added
- 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
simdcrate feature no longer affects memory consumption or
execution performance of non-simdWasm code.
- Implement a variety of improvements for the Wasmi CLI application.
- Added a bunch of new crate features to the
wasmi_clicrate:- PRs: #1784 #1787 #1788
wasi: Enable WASI support. (default: ✅)wast: Enable Wast support andwastcommand. (default: ✅)run: Enable theruncommand (default: ✅)portable-dispatch: Enablewasmi'sportable-dispatchcrate feature. (default: ❌)indirect-dispatch: Enablewasmi'sindirect-dispatchcrate 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_clito justwasmi. #1798
- Added a bunch of new crate features to the
- Add
wasmi_wasi::add_to_externalsAPI. #1785- This is more efficient than the existing
add_to_linkerAPI and should
be used instead if possible. - The Wasmi CLI application now makes use of this API in order to prepare
its WASI environment.
- This is more efficient than the existing
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
coverageCI 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_collectionsarena data structures. #1771 - Removed ancient Wasmi v0.31 as oracle for differential fuzzing. #1777
- Renamed internal
Untyped{Val,Ref}types toRaw{Val,Ref}. #1781 - Refactor and unify Wasmi's internal handle types. #1772
v1.0.9 - 2026/02/09
Fixed
- Fixed a bug that Wasmi's translator would sometimes incorrectly merge
copyinstructions. #1779
v1.0.8 - 2026/01/29
Fixed
- Fixed another bug with incorrect translation of
wide-arithmeticops followed bylocal.set. #1762
v1.0.7 - 2026/01/09
Fixed
- Fixed a bug that
local.setfusion with somewide-arithmeticops was working incorrectly. #1756- Thanks to louismerlin for the detailed bug report.
v1.0.6 - 2025/12/25
v1.0.5 - 2025/12/19
Fixed
- Fix a bug in the execution of
i{32,64}.rem_s(MAX, -1). rev-1c3682f- The Wasm spec demanded to return
0while Wasmi trapped withinteger-overflow. - Thanks to davnavr for the detailed bug report.
- The Wasm spec demanded to return