Integration
October 8, 2020 ยท View on GitHub
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.
Projects integrated
Those projects are already supported/integrated.
wasmi (Rust)
Wasm interpreter in Rust: github / documentation
Details
wasmtime (Rust)
Standalone JIT-style runtime for WebAssembly: github / guide
Details
-
backends:
-
APIs:
-
Examples:
wasmer (Rust)
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:
parity-wasm (Rust)
WebAssembly serialization/deserialization in rust: github / documentation
Details
wasmparser (Rust)
A simple event-driven library for parsing WebAssembly binary files: github / documentation
Details
binaryen (C++/Rust)
Compiler infrastructure and toolchain: github / rust bindings
Details
wabt (C++/Rust)
The WebAssembly Binary Toolkit - github / rust bindings
Details
-
Rust Apis:
Module: WebAssembly module. (take aFeaturesstruct - 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:
wasm-tools/wasmprinter (Rust)
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
wasm-tools/wat (Rust)
A Rust parser for the WebAssembly Text Format (WAT). - github
wasm-tools/wast (Rust)
A Rust parser for the WebAssembly Text Format (WAST). - github
Details
- Rust Apis:
ParseBuffer::newparser::parse::<Wat>
wain (Rust)
WebAssembly implementation from scratch in Safe Rust with zero dependencies - github
wasm3 (C++/Rust)
- wasm3 - high performance WebAssembly interpreter written in C. - rust bindings
Details
- Rust Apis:
Module::parse
fizzy (C++/Rust)
- fizzy - fast, deterministic, and pedantic WebAssembly interpreter written in C++. - rust bindings
Projects potentially integrated.
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.