List of projects can be found below. This list is subject to changes in the future.
Regarding APIs, we will focus first on apis in charge of the following operations:
- [YES] parsing/deserialization.
- [YES] validation.
- [YES] instantiation.
- [YES] execution.
- [MAYBE] serialization.
Those projects are already supported/integrated.
Wasm interpreter in Rust: github / documentation
Details
Standalone JIT-style runtime for WebAssembly: github / guide
Details
-
backends:
-
APIs:
-
Examples:
Standalone WebAssembly runtime: github / documentation
Details
-
backends:
-
APIs:
wasmer_runtime::validate
: Perform validation of the wasm module - docwasmer_runtime::validate_and_report_errors_with_features
: Perform validation with a Features - doc[https://docs.rs/wasmer-runtime-core/0.7.0/wasmer_runtime_core/fn.validate_and_report_errors_with_features.html]wasmer_runtime::{compile, compile_with}
: Compile WebAssembly binary code into a Module, backends can be specified here - docwasmer_runtime::instantiate
: Compile and instantiate wasm code - doc
-
Examples:
WebAssembly serialization/deserialization in rust: github / documentation
Details
A simple event-driven library for parsing WebAssembly binary files: github / documentation
Details
Compiler infrastructure and toolchain: github / rust bindings
Details
The WebAssembly Binary Toolkit - github / rust bindings
Details
-
Rust Apis:
Module
: WebAssembly module. (take aFeatures
struct - possible to activeenable_all
(https://github.com/pepyakin/wabt-rs/blob/master/src/lib.rs#L182))Module::read_binary
/wasm2wat::convert
: useful if we validate the module first sinceread_binary doesn't do any validation
.wasm2wat
: Disassemble wasm binary to wasm text format. - docwasm2wat_with_features
: Disassemble wasm binary to wasm text format with the given features. - docModule::validate
: Validate the module. - implwat2wasm
: Translate wasm text source to wasm binary format. - NOT A PRIORITY TO IMPLEMENT - docwat2wasm_with_features
: Translate wasm text source to wasm binary format with the given features. - NOT A PRIORITY TO IMPLEMENT - doc
-
Rust examples:
A Rust parser for printing a WebAssembly binary in the WebAssembly Text Format (WAT). - github
Details
- Rust Apis:
print_bytes
: Prints an in-memory wasm binary blob into an in-memory String which is its textual representation. - doc
A Rust parser for the WebAssembly Text Format (WAT). - github
A Rust parser for the WebAssembly Text Format (WAST). - github
Details
- Rust Apis:
ParseBuffer::new
parser::parse::<Wat>
WebAssembly implementation from scratch in Safe Rust with zero dependencies - github
- wasm3 - high performance WebAssembly interpreter written in C. - rust bindings
Details
- Rust Apis:
Module::parse
- fizzy - fast, deterministic, and pedantic WebAssembly interpreter written in C++. - rust bindings
Those projects will be potentially supported/integrated in the future.
- WAVM - WebAssembly Virtual Machine in C++.
- webassemblyjs - Toolchain for WebAssembly in JavaScript.
- wagon - WebAssembly-based Go interpreter, for Go.