Skip to content

Releases: wasmi-labs/wasmi

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.