Skip to content

Releases: wasmi-labs/wasmi

v0.37.1 - 2024-10-01

01 Oct 12:46
v0.37.1
cdb09d8
Compare
Choose a tag to compare

Fixed

  • Fixed a bug in select translation constant propagation. #1213

v0.36.3 - 2024-10-01

01 Oct 12:53
v0.36.3
8a1c6d8
Compare
Choose a tag to compare

Fixed

  • Fixed a bug in select translation constant propagation. #1213

v0.37.0 - 2024-09-30

30 Sep 11:51
v0.37.0
2efb508
Compare
Choose a tag to compare

Added

  • Added support for Wasm multi-memory proposal. #1191
  • Added Store::call_hook API. #1144

Changed

  • Updated WASI dependencies. #1140
    • This fixes some long-standing bugs in the wasmi_wasi crate.

Fixed

  • This release includes all fixes that have been backported to v0.36.1 and v0.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.
    • MemoryGrowBy now takes u32 delta. #1193
    • Improved storeN encoding with immediates. #1194

v0.36.2 - 2024-09-28

28 Sep 11:26
v0.36.2
06b475b
Compare
Choose a tag to compare

Fixed

  • Fix miri reported UB in FuncRef and ExternRef conversions. #1201
  • Fix bug in table.init from imported global.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

23 Sep 19:49
v0.36.1
b38cb60
Compare
Choose a tag to compare

Fixed

  • Fixed ref.is_null translation constant propagation issue. #1189
  • Fixed invalid overwrite of preserved local register. #1177
  • Removed faulty br_table optimization.
  • Fix a few clippy warnings.

v0.36.0 - 2024-07-24

24 Jul 15:04
v0.36.0
02621ad
Compare
Choose a tag to compare

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 for Module. (#1130)
    • This was mainly needed to support the Wasm C-API.

Changed

  • The store fuel API now returns Error instead of FuelError. (#1131)
    • This was needed to support the Wasm C-API.
    • The FuelError is still accessible via the Error::kind method.

v0.35.0 - 2024-07-11

11 Jul 12:54
v0.35.0
b957725
Compare
Choose a tag to compare

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. via Module::new) by up to 23%.

v0.34.0 - 2024-07-08

08 Jul 08:31
v0.34.0
3016673
Compare
Choose a tag to compare

Added

  • Allows Wasmi CLI to be installed with locked dependencies. (#1096)
    • This can be done as follows: cargo install --locked wasmi_cli

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

  • Significantly improved and Wasmi's CI and made it a lot faster.
  • Refactored and cleaned-up call based and Rust sourced Wasmi benchmarks.

v0.33.1 - 2024-07-01

01 Jul 08:46
v0.33.1
116e716
Compare
Choose a tag to compare

Added

  • Added Error trait impls for all Wasmi error types impleemnting Display. (#1089)

Fixed

  • Fixed compilation for Rust versions <1.78. (#1093)
  • Fixed nightly clippy warning about map_err. (#1094)

v0.33.0 - 2024-06-24

24 Jun 14:55
v0.33.0
c37f314
Compare
Choose a tag to compare

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.
  • 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:
  • Changed Memory::grow signature to mirror Wasmtime's Memory::grow method. (#1082)

Removed

  • Removed Memory::current_pages method. (#1082)
    • Users should use the new Memory::size method instead.