Files
wasmer/lib/js-api
2021-06-21 21:25:40 -07:00
..
2021-06-21 21:14:16 -07:00
2021-06-21 21:14:16 -07:00
2021-06-21 21:14:16 -07:00
2021-06-21 21:25:40 -07:00

wasmer-js Build Status Join Wasmer Slack MIT License crates.io

Wasmer is the most popular WebAssembly runtime for Rust (...and also the fastest). This runtime is an adapted version of the Wasmer API that compiles to WebAssembly via wasm-bindgen.

wasmer-js uses the same WebAssembly runtime of your environment (browser or Node.js).

Usage

use wasmer_js::{Store, Module, Instance, Value, imports};

fn main() -> anyhow::Result<()> {
    let module_wat = r#"
    (module
    (type $t0 (func (param i32) (result i32)))
    (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32)
        get_local $p0
        i32.const 1
        i32.add))
    "#;

    let store = Store::default();
    let module = Module::new(&store, &module_wat)?;
    // The module doesn't import anything, so we create an empty import object.
    let import_object = imports! {};
    let instance = Instance::new(&module, &import_object)?;

    let add_one = instance.exports.get_function("add_one")?;
    let result = add_one.call(&[Value::I32(42)])?;
    assert_eq!(result[0], Value::I32(43));

    Ok(())
}

Config flags

Wasmer has the following configuration flags:

  • wat (enabled by default): It allows to read WebAssembly files in their text format. This feature is normally used only in development environments

Made with ❤️ by the Wasmer team, for the community