Skip to content

Releases: wasmi-labs/wasmi

v0.13.2 - 2022-09-20

20 Sep 13:23
ce5a1b4
Compare
Choose a tag to compare

Note: This is going to be the last release with the legacy wasmi engine.
Future releases are going to use the new Wasm execution engines
that are currently in development.
We may consider to publish the legacy wasmi engine as wasmi-legacy
crate.

Fixed

  • Support allocating 4GB of memory (#452)

v0.16.0 - 2022-08-30

30 Aug 09:49
v0.16.0
e74bb2f
Compare
Choose a tag to compare

Changed

  • Update wasmparser-nostd dependency from version 0.83.0 -> 0.90.0.
    Link:
    • This significantly improved wasmi's Wasm parsing, validation and
      Wasm to wasmi bytecode translation performance.

Internal

  • Transition to the new wasmparser::VisitOperator API.
    Link
    • This again significantly improved wasmi's Wasm parsing, validation and
      Wasm to wasmi bytecode translation performance by avoiding many
      unnecessary unpredictable branches in the process.

v0.15.0 - 2022-08-22

22 Aug 15:27
v0.15.0
944a88a
Compare
Choose a tag to compare

Fixed

  • Fixed bugs found during fuzzing the translation phase of wasmi.
    Link
  • Fix Read trait implementation for no_std compilations.
    Link

Changed

  • Update to wasmi_core version 0.3.0.
  • Changed API of wasmi::Config in order to better reflect the API of
    wasmtime::Config.
  • Refactor Trap type to be of pointer size which resulted in significant
    performance wins across the board especially for call intense work loads.
    Link

Removed

  • Removed support for virtual memory based Wasm linear memory.
    We decided to remove support since benchmarks showed that our current
    implementation actually regresses performance compared to our naive
    Vec based implementation.
    Link

Internal

  • The wasmi::Engine now caches the bytes of the default linear memory for
    performance wins in memory.store and memory.load intense work loads.
    Link
  • The wasmi engine internals have been reorganized and modernised to improve
    performance on function call intense work loads. This resulted in performance
    improvements across the board.
    Link
  • The Wasm to wasmi bytecode translation now properly reuses heap allocations
    across function translation units which improved translation performance by
    roughly 10%.
    Link
  • Optimized the wasmi engine Wasm value stack implementation for significant
    performance wins across the board.
    Link
  • Shrunk size of some internal identifier types for minor performance wins.
    Link
  • Added initial naive fuzz testing for Wasm parsing, validation and Wasm to
    wasmi bytecode translation.
    Link

v0.14.0 - 2022-07-26

26 Jul 14:01
v0.14.0
f042ff7
Compare
Choose a tag to compare

Added

Changed

  • Wasmi has been entirely redesigned and reimplemented.
    This work resulted in an entirely new API that is heavily inspired by
    the Wasmtime API,
    a brand new Wasm execution engine that performs roughly 30-40%
    better than the previous engine according to our benchmarks,
    the support of many Wasm proposals and Wasm parsing and validation
    using the battle tested wasmparser
    crate by the BytecodeAlliance.

    The new wasmi design allows to reuse the Wasm execution engine
    resources instead of spinning up a new Wasm execution engine for every
    function call.

    Note: If you plan to use wasmi it is of critical importance
    to compile wasmi using the following Cargo profile settings:

    [profile.release]
    lto = "fat"
    codegen-units = 1

    If you do not use these profile settings you might risk regressing
    performance of wasmi by up to 400%. You can read more about this
    issue here.

Removed

  • Removed support for resuming function execution.
    We may consider to add this feature back into the new engine.
    If you are a user of wasmi and want this feature please feel
    free to open an issue
    and provide us with your use case.

v0.13.0 - 2022-07-25

25 Jul 21:15
v0.13.0
b0d6c7f
Compare
Choose a tag to compare

Note: This is going to be the last release with the legacy wasmi engine.
Future releases are going to use the new Wasm execution engines
that are currently in development.
We may consider to publish the legacy wasmi engine as wasmi-legacy
crate.

Changed

  • Update dependency: wasmi-validation v0.4.2 -> v0.5.0

v0.12.0 - 2022-07-24

24 Jul 14:55
v0.12.0
2832cbf
Compare
Choose a tag to compare

Note: This is going to be the last release with the legacy wasmi engine.
Future releases are going to use the new Wasm execution engines
that are currently in development. We may consider to publish the legacy wasmi
engine as wasmi-legacy crate.

Changed

  • wasmi now depends on the wasmi_core crate.
  • Deprecated RuntimeValue::decode_{f32,f64} methods.
    • Reason: These methods expose details about the F32 and F64 types.
      The RuntimeValue type provides from_bits methods for similar purposes.
    • Replacement: Replace those deprecated methods with F{32,64}::from_bits().into() respectively.
  • Refactor traps in wasmi: PR
    • This change also renames TrapKind to TrapCode.
    • The wasmi crate now properly reuses the TrapCode definitions from the wasmi_core crate.
  • Updated dependency:
    • parity-wasm v0.42 -> v0.45
    • memory_units v0.3.0 -> v0.4.0

Internal

  • Rename RuntimeValue to Value internally.
  • Now uses wat crate dependency instead of wabt for reading .wat files in tests.
  • Updated dev-dependencies:
    • assert_matches: v1.1 -> v1.5
    • rand 0.4.2 -> 0.8.2
  • Fix some clippy warnings.

v0.11.0 - 2022-01-06

06 Jan 12:10
v0.11.0
8a77c1f
Compare
Choose a tag to compare

Fixed

  • Make wasmi traps more conformant with the Wasm specification. (#300)
  • Fixed a bug in {f32, f64}_copysign implementations. (#293)
  • Fixed a bug in {f32, f64}_{min, max} implementations. (#295)

Changed

  • Optimized Wasm to host calls. (#291)
    • In some artificial benchmarks we saw improvements of up to 42%!
  • Introduce a more efficient LittleEndianConvert trait. (#290)

Internal

  • Refactor and clean up benchmarking code and added more benchmarks.
  • Apply some clippy suggestions with respect ot #[must_use]. (#288)
  • Improve Rust code formatting of imports.
  • Improve debug impl of ValueStack so that only the live parts are printed.

v0.10.0 - 2021-12-14

06 Jan 12:09
v0.10.0
f6ee539
Compare
Choose a tag to compare

Added

Changed

  • The wasmi and wasmi-validation crates now both use Rust edition 2021.
  • The README now better teaches how to test and benchmark the crate.
  • Updated num-rational from version 0.2.2 -> 0.4.0.

Deprecated

  • Deprecated MemoryInstance::get method.
    • Users are recommended to use MemoryInstance::get_value or MemoryInstance::get_into
      methods instead.

Removed

  • Removed support for virtual memory on 32-bit platforms.
    • Note that the existing support was supposedly not more efficient than the Vec
      based fallback implementation anyways due to technical design.
  • Removed the core crate feature that previously has been required for no_std builds.
    • Now users only have to specify --no-default-features for a no_std build.

Internal

  • Fully deploy GitHub Actions CI and remove deprecated Travis based CI. Added CI jobs for:
    • Testing on Linux, MacOS and Windows
    • Checking docs and dead links in docs.
    • Audit crate dependencies for vulnerabilities.
    • Check Wasm builds.
    • File test coverage reports to codecov.io.