mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-08 13:48:26 +00:00
wasmer-js

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 WebAssembly runtime of your browser. It allows using
WebAssembly when targeting the browser from Rust using the same APIs as
Wasmer (withe the small exception that no compiler or engines are available).
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