wasmi_collections

Crates.iowasmi_collections
lib.rswasmi_collections
version0.40.0
sourcesrc
created_at2024-05-02 11:18:35.285245
updated_at2024-11-27 23:52:18.650328
descriptionSpecialized data structures for the Wasmi interpreter
homepage
repositoryhttps://github.com/wasmi-labs/wasmi
max_upload_size
id1227654
size90,410
Robin Freyler (Robbepop)

documentation

https://docs.rs/wasmi_collections/

README

Continuous Integration Test Coverage Documentation Crates.io
ci codecov docs crates

Wasmi - WebAssembly (Wasm) Interpreter

Wasmi is an efficient and lightweight WebAssembly interpreter with a focus on constrained and embedded systems.

Version 0.31.0 has been audited by SRLabs.

Distinct Features

The following list states some of the distinct features of Wasmi.

  • Simple, correct and deterministic execution of WebAssembly.
  • Low-overhead and cross-platform WebAssembly runtime for embedded environments.
  • JIT bomb resisting translation.
  • Loosely mirrors the Wasmtime API.
  • 100% WebAssembly spec testsuite compliance.
  • Built-in support for fuel metering.
  • Supports the official Wasm C-API.

Usage

Refer to the Wasmi usage guide to learn how properly to use Wasmi.

WebAssembly Proposals

The new Wasmi engine supports a variety of WebAssembly proposals and will support even more of them in the future.

WebAssembly Proposal Status Comment
mutable-global 0.14.0.
saturating-float-to-int 0.14.0.
sign-extension 0.14.0.
multi-value 0.14.0.
bulk-memory 0.24.0. (#628)
reference-types 0.24.0. (#635)
tail-calls 0.28.0. (#683)
extended-const 0.29.0. (#707)
multi-memory 0.37.0. (#1191)
simd Unlikely to be supported.
relaxed-simd Unlikely to be supported. Depends on simd.
function-references 📅 Not yet implemented. (#774)
gc 📅 Not yet implemented. (#775)
threads 📅 Not yet implemented. (#777)
exception-handling 📅 Not yet implemented. (#1037)
custom-page-sizes 📅 Not yet implemented. (#1197)
WASI 👨‍🔬 Experimental support for WASI (wasip1) via the wasmi_wasi crate.
C-API 👨‍🔬 Experimental support for the official Wasm C-API via the wasmi_c_api_impl crate.

Development

Build & Test

Clone the Wasmi repository and build using cargo:

git clone https://github.com/wasmi-labs/wasmi.git --recursive
cd wasmi
cargo build
cargo test

Benchmarks

In order to benchmark Wasmi use the following command:

cargo bench

Use translate, instantiate, execute or overhead filters to only run benchmarks that test performance of Wasm translation, instantiation, execution or miscellaneous overhead respectively, e.g. cargo bench execute.

Supported Platforms

Wasmi supports a wide variety of architectures and platforms.

  • Fore more details see this list of supported platforms for Rust.
  • Note: Wasmi can be used in no_std embedded environments, thus not requiring the standard library (std).
  • Only some platforms are checked in CI and guaranteed to be fully working by the Wasmi maintainers.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 786

cargo fmt