Skip to content

Releases: wasmi-labs/wasmi

v0.51.0 - 2025-08-13

13 Aug 15:39
v0.51.0
c329218
Compare
Choose a tag to compare

Final deprecations before Wasmi 1.0.

Changed

  • Redesign the stack limits Config API. #1631
    • Deprecated the StackLimits type and Config::set_stack_limits method.
    • Deprecated the Config::cached_stacks method.
    • Added Config::set_{max_recursion_depth,min_stack_height,max_stack_height} methods.

v0.50.0 - 2025-08-11

11 Aug 14:48
v0.50.0
9037273
Compare
Choose a tag to compare

This is supposedly the final release before Wasmi 1.0.0.

Added

  • This version ships with an entirely new Wasm bytecode to Wasmi bytecode translator.
    • The new translator is ~5-10% faster than the old one.
    • Fuel-metering is no longer an afterthought and thus comes nearly for free.
    • The new codebase is much simpler to maintain and reason about.
    • Wasmi bytecode generated by the new translator shows similar performance as the old one.
    • The new translator provides a lot more information to Wasmi's optimizer
      which allows for new optimizations in upcoming Wasmi releases.
    • PRs: #1512 #1618
  • Add lowerings for xor instructions when used in comparisons.
    • This reduced the number of Wasmi bytecode instructions by a whopping 20
      which might have positive effects on execution performance due to decreased cache
      pressure.
    • PRs: #1625

Changed

  • Removed Wasmi bytecode instructions that are no longer generated by the new translator.
    • This also reduces the number of Wasmi bytecode instructions by 8 which
      might have positive effects on execution performance due to decreased cache
      pressure.
    • PRs: #1623 #1624

Internal

  • Remove some Wasmi dependencies.
    • Namely, smallvec, multi-stash and arrayvec.
    • PRs: #1620 #1626

v0.49.1 - 2025-08-10

10 Aug 15:52
v0.49.1
d84b858
Compare
Choose a tag to compare

Fixes

  • Fix negated f{32,64}.cmp+select op-code fusion. #1612

v0.49.0 - 2025-08-07

07 Aug 17:52
v0.49.0
4e1ee4d
Compare
Choose a tag to compare

This version prepares Wasmi for its 1.0 release.

Changed

  • Deprecate wasmi::core module re-export. #1605
    • Public facing definitions are now re-exported from wasmi's
      crate root which users should use instead.
  • Improve Wasmi's Wasmtime API mirror:
    • Make ExternRef non-nullable and introduce new nullable Ref type. #1603
      • Wasmtime uses Option<ExternRef> instead which is very similar.
      • Ref<ExternRef> can be converted to Option<ExternRef> using the val method.
    • Remove FuncRef type in favor of Ref<Func> #1604
      • Wasmtime uses Option<Func> instead which is very similar.
      • Ref<Func> can be converted to Option<Func> using the val method.
    • Deprecate InstancePre and Linker::instantiate #1602
      • Enable fuel metering and set fuel to zero before instantiation
        in order to prevent running a Wasm module's start function upon
        instantiation.
    • Deprecate LinkerBuilder type. #1601
      • Use Linker or Instance::new instead.

Internal

v0.48.0 - 2025-07-21

21 Jul 18:22
v0.48.0
19abcfa
Compare
Choose a tag to compare

Added

  • Added Wasm reinterpret operators to wasmi_core::wasm API.

Changed

  • Marked Module::new_streaming[_unchecked] API deprecated. #1540
    • Reason for the deprecation:
      • The streaming Wasm module creation is not a great fit for Wasmi's target usage.
      • No users are known that depend on this functionality - please inform us if you do!
      • Streaming Wasm module creating has a performance overhead when not needed.
  • Changed CompilationMode default to CompilationMode::LazyTranslation. #1530
    • With this default Wasm is still validated eagerly but tranlated to Wasmi IR lazily.
      This gives the best of both worlds: fast startup times while avoiding partial validation.
  • Update Wasmtime dependencies to v34. #1563

Fixed

  • Fixed a bug that f{32,64}.copysign with immediate rhs operands won't bump fuel. #1539
  • Fixed incorrect optimization application for i64.mul_wide_s. #1545 #1546
  • Fixed an integer-overflow that could happen when reading or writing memory. #1554

Internal

v0.47.0 - 2025-05-30

30 May 16:05
v0.47.0
572b76c
Compare
Choose a tag to compare

Changed

  • Remove the downcast-rs dependency from Wasmi crates. #1517
  • Bump the minimum supported Rust version (MSRV) to Rust 1.86. #1518
    • This change was necessitated by the removal of downcast-rs.

Internal

  • Lower select instructions more aggressively. #1526
    • This significantly reduced the number of different select instruction
      variants and thus might have positive effects on Wasmi's execution performance.

v0.46.0 - 2025-05-08

08 May 13:21
v0.46.0
50ac767
Compare
Choose a tag to compare

Changed

  • Store<T>::new no longer requires T: 'static. #1507
    • The T: 'static requirement was introduced in v0.45.0 in #1449.
  • Improve host function call performance. #1506

Internal

  • Updated dependencies. #1509

v0.45.0 - 2025-05-06

06 May 11:03
v0.45.0
7c1733a
Compare
Choose a tag to compare

Added

  • Added support for Wasm function call resumption after running out of fuel. #1498
    • This feature is very useful when using Wasmi inside a scheduler that works with
      Wasmi's fuel metering to provide amount of compute units to different Wasm execution
      threads for example.
  • Added missing wasmi_core::simd API functions for relaxed-simd. #1447
  • Added implementations for Rust's Error trait for all wasmi error types on no_std. #1462

Changed

  • Avoid performing duplicate type and validation checks in Linker::instantiate. #1476
  • Updated wasm-tools dependencies to v228. #1463
  • Removed most of wasmi_core::TypedVal's API. #1457
    • The newer wasmi_core::wasm API is to be preferred and provides the same functionality.

Fixed

  • Fixed a bug that Wasmi did not make wasmparser's parser aware of enabled Wasm features. #1502
    • Making wasmparser aware of the enabled Wasm features allows it to detect malformed Wasm
      binaries during parsing.

Internal

  • Make Wasmi's executor non-generic over the Store's T. #1449
  • Changes to Wasmi's IR:
    • Removed all conditional return instructions. #1486
      • This allows Wasmi to apply its powerful cmp+branch fusion in more places.
    • Remove most of the bulk-memory (and bulk-table) instruction variants. #1489
      • Wasmi still has optimized variants for the most common cases.
    • Add new logical-comparator instructions. #1494
      • This further enhances Wasmi's powerful cmp+branch instruction fusion.
    • Add negated f{32,64}.{lt,le} instructions. #1496
      • This allows Wasmi to apply its cmp+nez fusion for f{32,64}.{le,lt} instructions as well.
    • Re-design Wasmi's select instructions. #1497
      • This allows to use Wasmi's powerful cmp op-code fusion for select instructions.
  • Moved many wasmi internals into wasmi_core:
    • Add FuncType #1458
    • Add Fuel, Memory, Table, Global, ResourceLimiter #1464
    • Replace uses in wasmi with wasmi_core definitions. #1460

v0.44.1 - 2025-05-04

04 May 12:46
v0.44.1
825757f
Compare
Choose a tag to compare

Fixed

  • Fixed a bug with executing SIMD store_lane instructions. #1450

v0.44.0 - 2023-03-29

30 Mar 09:02
v0.44.0
dedfcee
Compare
Choose a tag to compare

Added

  • Add support for the Wasm relaxed-simd proposal. #1443
    • All relaxed-simd operators behave deterministically on all platforms supported by Wasmi.
    • Users have to enable the simd crate feature in order to use relaxed-simd capabilities.
    • Note that enabling the simd crate feature may regress Wasm execution and memory consumption
      performance.

Changed

  • Wasmi's CLI now prints multiple results on a new line each. #1438
    • With this change Wasmi's CLI and Wasmtime's CLI have the same behavior.