Skip to content

Releases: wasmi-labs/wasmi

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.

v0.32.3 - 2024-06-06

06 Jun 13:07
v0.32.3
3c42a09
Compare
Choose a tag to compare

Fixed

  • Fix overlapping reuse of local preservation slots. (#1057)
    • Thanks again to kaiavintr for reporting the bug.

v0.32.2 - 2024-06-03

03 Jun 12:01
v0.32.2
a817996
Compare
Choose a tag to compare

Fixed

  • Refine and generalize the fix for v0.32.1. (#1054)

v0.32.1 - 2024-06-03

03 Jun 09:46
v0.32.1
14118e4
Compare
Choose a tag to compare

Fixed

  • 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. (#1052)