Releases: wasmi-labs/wasmi
Releases · wasmi-labs/wasmi
v0.40.0 - 2024-11-28
This release focuses on compile time improvements for Wasmi,
significantly reducing the time it takes to compile Wasmi and
decrease its compiled artifact size.
Added
- Added optimization for
load
andstore
lowering. #1303- This reduces the total number of Wasmi instructions.
- Added
prefix-symbols
crate feature towasmi_c_api_impl
crate. #1315- This allows to prefix all exported symbols with
wasmi_
in order to
avoid duplicate symbols when linking multiple Wasm runtimes implementing
the Wasm C-API.
- This allows to prefix all exported symbols with
Fixed
- C-API
- Conditionally forward the
string-interner/std
crate feature. #1304 - Fix Wasmtime fuzzer oracle config usage. #1314
Changed
- Bumped minimum supported Rust version from v1.79 -> v1.80. #1318
- Replace the
wasmparser-nostd
fork with upstreamwasmparser
. #1141- This allows Wasmi to implement new Wasm proposals.
- Unfortunately this update also regresses Wasmi translation performance
by roughly 5-15% depending on the exact Wasm blob and translation mode.
- Update the
string-interner
andhashbrown
dependencies. #1305
Internal
v0.39.1 - 2024-11-06
Fixed
- Fixed a bug when translating double negations in expression contexts. #1293
v0.39.0 - 2024-11-04
Added
- Add new
Linker
APIs. #1281Linker::instance
: conveniently add exports from an instance to a linker.Linker::alias_module
: alias module definitions via another name.Linker::allow_shadowing
: enable to shadow previous definitions without errors.
- Add
hash-collections
andprefer-btree-collections
crate features to thewasmi
crate. #1265- This allows for more fine grained control over Wasmi
dependencies to further decrease compile times.
- This allows for more fine grained control over Wasmi
- Add lowering of compare instructions and fused branch+compare instructions. #1243
- This improved performance for certain workloads and
reduced the total Wasmi instruction count significantly. - Wasm coremark results improved to 1830 (v0.39) from 1701 (v0.38).
- This improved performance for certain workloads and
Fixed
- Fixed a bug in translation of fused
cmp+branch
instructions with huge offsets.- This was fixed as a side product in #1243.
Removed
- Removed the
no-hash-maps
crate feature. #1265 - Removed some minor
wasmi
crate dependencies. #1266 #1267- This should improve compile times of the
wasmi
crate slightly.
- This should improve compile times of the
Internal
- Modernize fuzzer and significantly improve fuzzing test coverage.
- Modernize Wasmi
.wast
directives runner. #1279- Overall this significantly improved readability and maintainability
of the Wasmi.wast
directives runner.
- Overall this significantly improved readability and maintainability
v0.36.5 - 2024-10-11
Fixed
- Fixed a bug with
table.get
translation whenindex
is a preserved register. [#commit-b4e78d]
v0.38.0 - 2024-10-06
v0.37.2 - 2024-10-04
Added
-
Added a new
extra-checks
crate feature to thewasmi
crate. #1217- This improves unreachability checks in when
debug-assertions
orextra-checks
are enabled. - If
extra-checks
are disabled, some technically unnecessary runtime checks are no longer performed. - Use
extra-checks
if your focus is on safety, disable if your focus is on performance.
- This improves unreachability checks in when
Fixed
- Fixed a bug in local preservation when translating Wasm
loop
control flow. #1218
v0.36.4 - 2024-10-03
Fixed
- Fixed a bug in local preservation when translating Wasm
loop
control flow. [#1218]
v0.37.1 - 2024-10-01
Fixed
- Fixed a bug in
select
translation constant propagation. #1213
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.