NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2874 most downloaded on crates.io
Specialized data structures for the Wasmi interpreter
Last release 16 days ago
01 Sep 2026
Ships unpredictably
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 57 of 59 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
75 releases · first in 2024
Added support for the official Wasm C-API.
wasmi_c_api_impl crate allows to use Wasmi via the Wasm C-API from Rust code.Instance::new API. (https://github.com/wasmi-labs/wasmi/pull/1134)
Clone implementation for Module. (https://github.com/wasmi-labs/wasmi/pull/1130)
Error instead of FuelError. (https://github.com/wasmi-labs/wasmi/pull/1131)
FuelError is still accessible via the Error::kind method.Fixed a dead-lock that prevented users from compiling Wasm modules in host functions called from Wasmi's executor.
CodeMap::alloc_funcs API and use it when compiling Wasm modules. (https://github.com/wasmi-labs/wasmi/pull/1125)
Module::new) by up to 23%.One column per month.
Allows Wasmi CLI to be installed with locked dependencies. ([#1096])
cargo install --locked wasmi_cliFuncType to 1000, each. (#1116)Added Error trait impls for all Wasmi error types impleemnting Display.
Error trait impls for all Wasmi error types impleemnting Display. (https://github.com/wasmi-labs/wasmi/pull/1089)
clippy warning about map_err. (https://github.com/wasmi-labs/wasmi/pull/1094)Added support for Wasm custom sections processing.
Module.Config::ignore_custom_sections flag to disable this functionality.Config::ignore_custom_sections flag to disable processing custom sections if this is unwanted. (https://github.com/wasmi-labs/wasmi/pull/1085)Memory::{data_ptr, data_size, size} methods. (https://github.com/wasmi-labs/wasmi/pull/1082)Memory::grow signature to mirror Wasmtime's Memory::grow method. (https://github.com/wasmi-labs/wasmi/pull/1082)Memory::current_pages method. (https://github.com/wasmi-labs/wasmi/pull/1082)
Memory::size method instead.Fix overlapping reuse of local preservation slots.
Refine and generalize the fix for v0.32.1.
Fixes a miscompilation when merging two copy instructions where the result of the first copy is also the input to the second copy and vice versa.
Updated CI jobs to use dtolnay/rust-toolchain instead of actions-rs because the latter was deprecated.
Note:
Engine executes roughly 80-100% faster and
compiles roughly 30% slower according to benchmarks conducted so far.Module::new_unchecked API. (https://github.com/wasmi-labs/wasmi/pull/829)
Module::new Wasmi eagerly compiles Wasm bytecode into Wasmi bytecode
which is optimized for efficient execution. However, this compilation can become very
costly especially for large Wasm binaries.CompilationMode::Eager: Eager compilation, what Wasmi did so far. (default)CompilationMode::LazyTranslation: Eager Wasm validation and lazy Wasm translation.CompilationMode::Lazy: Lazy Wasm validation and translation.CompilationMode::LazyTanslation: Usually improves startup performance by a factor of 2 to 3.CompilationMode::Lazy: Usually improves startup performance by a factor of up to 27.CompilationMode::Lazy can lead to partially validated Wasm modules
which can introduce non-determinism when using different Wasm implementations.
Therefore users should know what they are doing when using CompilationMode::Lazy if this is a concern.let mut config = wasmi::Config::default();
config.compilation_mode(wasmi::CompilationMode::Lazy);
CompilationMode::Lazy or CompilationMode::LazyTranslation and fuel metering is enabled
the first function access that triggers compilation (and validation) will charge fuel respective
to the number of bytes of the Wasm function body. (https://github.com/wasmi-labs/wasmi/pull/876)Module::new and
Module::new_unchecked are now non-streaming with insane performance improvements of up
to 80% in certain configurations.Module::new_streaming and Module::new_streaming_unchecked APIs.Module::validate API. (https://github.com/wasmi-labs/wasmi/pull/840)
Engine config.Module::new or Module::new_unchecked
might still fail due to translation errors.--compilation-mode argument to enable lazy Wasm compilation. (https://github.com/wasmi-labs/wasmi/pull/849)--verbose mode to Wasmi CLI by @tjpalmer. (https://github.com/wasmi-labs/wasmi/pull/957)
Memory::new_static constructor by @Ddystopia. (https://github.com/wasmi-labs/wasmi/pull/939)
Memory from a static byte array
which is especially handy for certain embedded use cases.LinkerBuilder type. (https://github.com/wasmi-labs/wasmi/pull/989)
LinkerBuilder to create new Linkers with the same set of host functions is a lot more
efficient than creating those Linkers the original way. However, the initial LinkerBuilder
construction will be as inefficient as building up a Linker previously.EnforcedLimits configuration option to Config. (https://github.com/wasmi-labs/wasmi/pull/985)
let mut config = wasmi::Config::default();
config.enforced_limits(wasmi::EnforcedLimits::strict());
In future updates we might relax this to make EnforcedLimits fully customizable.EngineWeak constructed via Engine::weak. (https://github.com/wasmi-labs/wasmi/pull/1003)
Engine.no-hash-maps crate feature to the wasmi crate. (https://github.com/wasmi-labs/wasmi/pull/1007)
wasmi crate to avoid using hash based data structures which can be beneficial for
running Wasmi in some embedded environments such as wasm32-unknown-unknown that do not support
random sources and thus are incapable to spawn hash maps that are resilient to malicious actors.Default implementation for Store<T> where T: Default. (https://github.com/wasmi-labs/wasmi/pull/1031)
WasmTy implementations for f32 and f64 Rust primitives. (https://github.com/wasmi-labs/wasmi/pull/1031)
Linker::func_wrap calls that take those primitives as arguments.
Before this change users had to use F32 and F64 instead which is a bit cumbersome.tail-calls and extend-const proposals by default. (https://github.com/wasmi-labs/wasmi/pull/849)
Debug and Display impls for NaNs of Wasm f32 and f64 values.
nan:0x{bytes} where {bytes} is their respective raw bytes.Sync for ResumableInvocation and TypedResumableInvocation. (https://github.com/wasmi-labs/wasmi/pull/870)Config::tail_call and Config::extended_const by default. (https://github.com/wasmi-labs/wasmi/pull/1031)
Engine backend. (https://github.com/wasmi-labs/wasmi/pull/818)
Engine is more promising
and the Wasmi team does not want to maintain two different engine backends.FuelConsumptionMode from Config. (https://github.com/wasmi-labs/wasmi/pull/877)
FuelConsumptionMode was required to differentiate between lazy and eager fuel consumption.
This was necessary due to how lazy fuel consumption was implemented in that it would pre-charge
for instruction execution were the exact amount of required fuel was not possible to determine
at compilation time. Examples are memory.grow and table.copy instructions. The linked PR
improved lazy fuel consumption to no longer pre-charge and instead pre-check if the operation
is going to succeed and only charge fuel in that case.dtolnay/rust-toolchain instead of actions-rs because the latter was deprecated. (https://github.com/wasmi-labs/wasmi/pull/842)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →