Skip to content

Releases: wasmi-labs/wasmi

v0.40.0 - 2024-11-28

27 Nov 23:58
v0.40.0
f384f28
Compare
Choose a tag to compare

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 and store lowering. #1303
    • This reduces the total number of Wasmi instructions.
  • Added prefix-symbols crate feature to wasmi_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.

Fixed

  • C-API
    • Fix a minor compilation issue. #1296
    • Fix the name of wasmi_config_compilation_mode_set #1298
  • 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 upstream wasmparser. #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 and hashbrown dependencies. #1305

Internal

  • Update the wast dependency for Wasmi's Wast runner. #1306
  • Update wasm-tools dependencies to v0.221. #1318

v0.39.1 - 2024-11-06

06 Nov 09:40
v0.39.1
68205d4
Compare
Choose a tag to compare

Fixed

  • Fixed a bug when translating double negations in expression contexts. #1293

v0.39.0 - 2024-11-04

04 Nov 10:19
v0.39.0
b604811
Compare
Choose a tag to compare

Added

  • Add new Linker APIs. #1281
    • Linker::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 and prefer-btree-collections crate features to the wasmi crate. #1265
    • This allows for more fine grained control over Wasmi
      dependencies to further decrease compile times.
  • 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).

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.

Internal

  • Modernize fuzzer and significantly improve fuzzing test coverage.
    • Reworked differential fuzzing entirely. #1257
      • This also improves handling of non-deterministic behavior
        between Wasm runtimes in differential fuzzing.
    • Add wasmi_fuzz crate for better code organization. #1252
    • Merged translate and translate_metered fuzzers. #1249
  • Modernize Wasmi .wast directives runner. #1279
    • Overall this significantly improved readability and maintainability
      of the Wasmi .wast directives runner.

v0.36.5 - 2024-10-11

11 Oct 09:07
v0.36.5
d6ca783
Compare
Choose a tag to compare

Fixed

  • Fixed a bug with table.get translation when index is a preserved register. [#commit-b4e78d]

v0.38.0 - 2024-10-06

06 Oct 10:35
v0.38.0
35eb605
Compare
Choose a tag to compare

Added

  • Add no-hash-maps crate feature to Wasmi CLI and enable it by default. #1225

Internal

  • Rename various instructions and add ShiftAmount abstraction. #1221
  • Use Rust's ControlFlow utility. #1223
  • Use get_memory in load and store execution handlers. #1224

v0.37.2 - 2024-10-04

04 Oct 09:50
v0.37.2
d22362a
Compare
Choose a tag to compare

Added

  • Added a new extra-checks crate feature to the wasmi crate. #1217

    • This improves unreachability checks in when debug-assertions or extra-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.

Fixed

  • Fixed a bug in local preservation when translating Wasm loop control flow. #1218

v0.36.4 - 2024-10-03

03 Oct 09:17
v0.36.4
24c1e1a
Compare
Choose a tag to compare

Fixed

  • Fixed a bug in local preservation when translating Wasm loop control flow. [#1218]

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