#bindings #wasm3

sys wasm3-sys

Raw ffi bindings for wasm3

4 releases

0.3.0 Sep 19, 2021
0.1.2 Sep 22, 2020
0.1.1 May 22, 2020
0.1.0 May 22, 2020

#1119 in WebAssembly

Download history 10/week @ 2023-12-17 13/week @ 2023-12-24 17/week @ 2024-01-07 12/week @ 2024-01-14 3/week @ 2024-01-21 17/week @ 2024-02-04 24/week @ 2024-02-11 29/week @ 2024-02-18 101/week @ 2024-02-25 84/week @ 2024-03-03 46/week @ 2024-03-10 47/week @ 2024-03-17 43/week @ 2024-03-24 118/week @ 2024-03-31

262 downloads per month
Used in 10 crates (via wasm3)

MIT license


C 5.5K SLoC // 0.1% comments Rust 156 SLoC // 0.0% comments



Build Crates.io Docs.rs Tokei

> wasm3-rs is looking for a maintainer <

Rust wrapper for WASM3.

This is currently work in progress and may or may not be entirely sound.


A simple example that loads a wasm module and executes an exported function to add two i64s together.

use wasm3::Environment;
use wasm3::Module;

fn main() {
    let env = Environment::new().expect("Unable to create environment");
    let rt = env
        .expect("Unable to create runtime");
    let module = Module::parse(&env, &include_bytes!("wasm/wasm_add/wasm_add.wasm")[..])
        .expect("Unable to parse module");

    let module = rt.load_module(module).expect("Unable to load module");
    let func = module
        .find_function::<(i64, i64), i64>("add")
        .expect("Unable to find function");
    println!("Wasm says that 3 + 6 is {}", func.call(3, 6).unwrap())


This crate currently does not make use of the cmake project of wasm3, meaning cmake is not required to built this for the time being. It does however require Clang 9 to be installed as well as Bindgen, should the build-bindgen feature not be set.

The wasm3 c source is included via a submodule, so before building the submodule has to be initialized, this can be done via:

git submodule update --init

Then to build the project run:

cargo install bindgen
cargo build --release

# or:
cargo build --release --features build-bindgen

# or, enable only specific features:
cargo build --release --no-default-features --features build-bindgen,std,use-32bit-slots,wasi

Build and run examples

rustup target add wasm32-unknown-unknown

python wasm_bin_builder.py ./examples/wasm/wasm_add
cargo run --example call_wasm

python wasm_bin_builder.py ./examples/wasm/wasm_print
cargo run --example wasm_print


Licensed under the MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)