Releases: wasmi-labs/wasmi
Releases · wasmi-labs/wasmi
v0.51.0 - 2025-08-13
Final deprecations before Wasmi 1.0.
Changed
- Redesign the stack limits
Config
API. #1631- Deprecated the
StackLimits
type andConfig::set_stack_limits
method. - Deprecated the
Config::cached_stacks
method. - Added
Config::set_{max_recursion_depth,min_stack_height,max_stack_height}
methods.
- Deprecated the
v0.50.0 - 2025-08-11
This is supposedly the final release before Wasmi 1.0.0.
Added
- This version ships with an entirely new Wasm bytecode to Wasmi bytecode translator.
- The new translator is ~5-10% faster than the old one.
- Fuel-metering is no longer an afterthought and thus comes nearly for free.
- The new codebase is much simpler to maintain and reason about.
- Wasmi bytecode generated by the new translator shows similar performance as the old one.
- The new translator provides a lot more information to Wasmi's optimizer
which allows for new optimizations in upcoming Wasmi releases. - PRs: #1512 #1618
- Add lowerings for xor instructions when used in comparisons.
- This reduced the number of Wasmi bytecode instructions by a whopping 20
which might have positive effects on execution performance due to decreased cache
pressure. - PRs: #1625
- This reduced the number of Wasmi bytecode instructions by a whopping 20
Changed
- Removed Wasmi bytecode instructions that are no longer generated by the new translator.
Internal
v0.49.1 - 2025-08-10
Fixes
- Fix negated
f{32,64}.cmp+select
op-code fusion. #1612
v0.49.0 - 2025-08-07
This version prepares Wasmi for its 1.0 release.
Changed
- Deprecate
wasmi::core
module re-export. #1605- Public facing definitions are now re-exported from
wasmi
's
crate root which users should use instead.
- Public facing definitions are now re-exported from
- Improve Wasmi's Wasmtime API mirror:
- Make
ExternRef
non-nullable and introduce new nullableRef
type. #1603- Wasmtime uses
Option<ExternRef>
instead which is very similar. Ref<ExternRef>
can be converted toOption<ExternRef>
using theval
method.
- Wasmtime uses
- Remove
FuncRef
type in favor ofRef<Func>
#1604- Wasmtime uses
Option<Func>
instead which is very similar. Ref<Func>
can be converted toOption<Func>
using theval
method.
- Wasmtime uses
- Deprecate
InstancePre
andLinker::instantiate
#1602- Enable fuel metering and set fuel to zero before instantiation
in order to prevent running a Wasm module'sstart
function upon
instantiation.
- Enable fuel metering and set fuel to zero before instantiation
- Deprecate
LinkerBuilder
type. #1601- Use
Linker
orInstance::new
instead.
- Use
- Make
Internal
v0.48.0 - 2025-07-21
Added
- Added Wasm
reinterpret
operators towasmi_core::wasm
API.
Changed
- Marked
Module::new_streaming[_unchecked]
API deprecated. #1540- Reason for the deprecation:
- The streaming Wasm module creation is not a great fit for Wasmi's target usage.
- No users are known that depend on this functionality - please inform us if you do!
- Streaming Wasm module creating has a performance overhead when not needed.
- Reason for the deprecation:
- Changed
CompilationMode
default toCompilationMode::LazyTranslation
. #1530- With this default Wasm is still validated eagerly but tranlated to Wasmi IR lazily.
This gives the best of both worlds: fast startup times while avoiding partial validation.
- With this default Wasm is still validated eagerly but tranlated to Wasmi IR lazily.
- Update Wasmtime dependencies to v34. #1563
Fixed
- Fixed a bug that
f{32,64}.copysign
with immediaterhs
operands won't bump fuel. #1539 - Fixed incorrect optimization application for
i64.mul_wide_s
. #1545 #1546 - Fixed an
integer-overflow
that could happen when reading or writing memory. #1554
Internal
v0.47.0 - 2025-05-30
Changed
- Remove the
downcast-rs
dependency from Wasmi crates. #1517 - Bump the minimum supported Rust version (MSRV) to Rust 1.86. #1518
- This change was necessitated by the removal of
downcast-rs
.
- This change was necessitated by the removal of
Internal
- Lower
select
instructions more aggressively. #1526- This significantly reduced the number of different
select
instruction
variants and thus might have positive effects on Wasmi's execution performance.
- This significantly reduced the number of different
v0.46.0 - 2025-05-08
v0.45.0 - 2025-05-06
Added
- Added support for Wasm function call resumption after running out of fuel. #1498
- This feature is very useful when using Wasmi inside a scheduler that works with
Wasmi's fuel metering to provide amount of compute units to different Wasm execution
threads for example.
- This feature is very useful when using Wasmi inside a scheduler that works with
- Added missing
wasmi_core::simd
API functions forrelaxed-simd
. #1447 - Added implementations for Rust's
Error
trait for allwasmi
error types onno_std
. #1462
Changed
- Avoid performing duplicate type and validation checks in
Linker::instantiate
. #1476 - Updated
wasm-tools
dependencies to v228. #1463 - Removed most of
wasmi_core::TypedVal
's API. #1457- The newer
wasmi_core::wasm
API is to be preferred and provides the same functionality.
- The newer
Fixed
- Fixed a bug that Wasmi did not make
wasmparser
's parser aware of enabled Wasm features. #1502- Making
wasmparser
aware of the enabled Wasm features allows it to detect malformed Wasm
binaries during parsing.
- Making
Internal
- Make Wasmi's executor non-generic over the
Store
'sT
. #1449 - Changes to Wasmi's IR:
- Removed all conditional return instructions. #1486
- This allows Wasmi to apply its powerful cmp+branch fusion in more places.
- Remove most of the
bulk-memory
(andbulk-table
) instruction variants. #1489- Wasmi still has optimized variants for the most common cases.
- Add new logical-comparator instructions. #1494
- This further enhances Wasmi's powerful cmp+branch instruction fusion.
- Add negated
f{32,64}.{lt,le}
instructions. #1496- This allows Wasmi to apply its cmp+nez fusion for
f{32,64}.{le,lt}
instructions as well.
- This allows Wasmi to apply its cmp+nez fusion for
- Re-design Wasmi's
select
instructions. #1497- This allows to use Wasmi's powerful cmp op-code fusion for
select
instructions.
- This allows to use Wasmi's powerful cmp op-code fusion for
- Removed all conditional return instructions. #1486
- Moved many
wasmi
internals intowasmi_core
:
v0.44.1 - 2025-05-04
Fixed
- Fixed a bug with executing SIMD
store_lane
instructions. #1450
v0.44.0 - 2023-03-29
Added
- Add support for the Wasm
relaxed-simd
proposal. #1443- All
relaxed-simd
operators behave deterministically on all platforms supported by Wasmi. - Users have to enable the
simd
crate feature in order to userelaxed-simd
capabilities. - Note that enabling the
simd
crate feature may regress Wasm execution and memory consumption
performance.
- All
Changed
- Wasmi's CLI now prints multiple results on a new line each. #1438
- With this change Wasmi's CLI and Wasmtime's CLI have the same behavior.