Releases: wasmi-labs/wasmi
Releases · wasmi-labs/wasmi
v0.37.1 - 2024-10-01
v0.36.3 - 2024-10-01
Fixed
- Fixed a bug in
select
translation constant propagation. #1213
v0.37.0 - 2024-09-30
Added
- Added support for Wasm
multi-memory
proposal. #1191 - Added
Store::call_hook
API. #1144- Contributed by emiltayl.
Changed
- Updated WASI dependencies. #1140
- This fixes some long-standing bugs in the
wasmi_wasi
crate.
- This fixes some long-standing bugs in the
Fixed
- This release includes all fixes that have been backported to
v0.36.1
andv0.36.2
.
Internal
- Add new Wasmi bytecode. #1152
- This was a major undertaking with lots of sub-issues and PRs.
- The Wasmi bytecode definitions now reside in their own
wasmi_ir
crate. - Most of the definitions are sourced from a single Rust macro to reduce maintenance friction.
- Remove unnecessary
iextend
instructions. #1147 - Changed encoding for Wasmi
call_indirect
instructions. #1156- The new encoding improves performance and reduces the number of function local constants.
- Changed encoding for Wasmi
select
instructions. #1157- The new encoding is more straight-forward and aims to simplify the Wasmi executor and translator.
- Changed encoding for Wasmi
br_table
instruction. #1158- The new encoding improves performance and memory consumption for certain use cases.
- Minor improvements to Wasmi bytecode.
v0.36.2 - 2024-09-28
Fixed
- Fix miri reported UB in FuncRef and ExternRef conversions. #1201
- Fix bug in
table.init
from importedglobal.get
values. #1192
Changed
- Changed some
inline
annotations in the Wasmi executor. #commit-b4e78d- This change had minor positive effects on the performance of commonly executed Wasmi instructions.
v0.36.1 - 2024-09-20
v0.36.0 - 2024-07-24
Added
- Added support for the official Wasm C-API. (#1009)
- This allows to use Wasmi from any program that can interface with C code.
- The
wasmi_c_api_impl
crate allows to use Wasmi via the Wasm C-API from Rust code. - Visit the Wasmi C-API readme to learn more.
- Added
Instance::new
API. (#1134)- This was mainly needed to support the Wasm C-API.
- The new API offers a more low-level way for Wasm module instantiation
that may be more efficient for certain use cases.
- Added
Clone
implementation forModule
. (#1130)- This was mainly needed to support the Wasm C-API.
Changed
- The store fuel API now returns
Error
instead ofFuelError
. (#1131)- This was needed to support the Wasm C-API.
- The
FuelError
is still accessible via theError::kind
method.
v0.35.0 - 2024-07-11
Fixed
- Fixed a dead-lock that prevented users from compiling Wasm modules in host functions
called from Wasmi's executor. (#1122)- This was a very long-standing bug in the Wasmi interpreter and it is now finally closed.
- Note that this regressed performance of call-intense workloads by roughly 5-10%.
Future work is under way to hopefully fix these regressions. - Before this fix, users had to use a work-around using resumable function calls to
cirumvent this issue which is no longer necessary, fortunately.
Internals
- Add
CodeMap::alloc_funcs
API and use it when compiling Wasm modules. (#1125)- This significantly improved performance for (lazily) compiling
Wasm modules (e.g. viaModule::new
) by up to 23%.
- This significantly improved performance for (lazily) compiling
v0.34.0 - 2024-07-08
Added
- Allows Wasmi CLI to be installed with locked dependencies. (#1096)
- This can be done as follows:
cargo install --locked wasmi_cli
- This can be done as follows:
Fixed
- Allow Wasm module instantiation in host functions called from Wasmi's executor. (#1116)
Changed
- Limit number of parameter and result types in
FuncType
to 1000, each. (#1116)
Dev. Note
v0.33.1 - 2024-07-01
v0.33.0 - 2024-06-24
Added
- Added support for Wasm custom sections processing. (#1085)
- It is now possible to query name and data of Wasm custom sections of a
Module
. - Use the new
Config::ignore_custom_sections
flag to disable this functionality.
- It is now possible to query name and data of Wasm custom sections of a
- Added
Config::ignore_custom_sections
flag to disable processing custom sections if this is unwanted. (#1085) - Add
Memory::{data_ptr, data_size, size}
methods. (#1082) - Added a Wasmi usage guide documentation. (#1072)
Changed
- Optimized the Wasmi executor in various ways.
- In summary the Wasmi executor now more optimally caches the currently used
Wasm instance and optimizes access to instance related data.
In particular access to the default linear memory bytes as well as the global
variable at index 0 (often used as shadow stack pointer) are more efficient. - The following PRs are part of this effort:
- In summary the Wasmi executor now more optimally caches the currently used
- Changed
Memory::grow
signature to mirror Wasmtime'sMemory::grow
method. (#1082)
Removed
- Removed
Memory::current_pages
method. (#1082)- Users should use the new
Memory::size
method instead.
- Users should use the new