[−][src]Crate wasmer_runtime_asml_fork
Wasmer-runtime is a library that makes embedding WebAssembly in your application easy, efficient, and safe.
How to use Wasmer-Runtime
The easiest way is to use the instantiate
function to create an Instance
.
Then you can use call
or func
and then call
to call an exported function safely.
Here's an example:
Given this WebAssembly:
(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))
compiled into wasm bytecode, we can call the exported "add_one" function:
static WASM: &'static [u8] = &[ // The module above compiled to bytecode goes here. // ... ]; use wasmer_runtime::{ instantiate, Value, imports, error, Func, }; fn main() -> error::Result<()> { // We're not importing anything, so make an empty import object. let import_object = imports! {}; let mut instance = instantiate(WASM, &import_object)?; let add_one: Func<i32, i32> = instance.exports.get("add_one")?; let value = add_one.call(42)?; assert_eq!(value, 43); Ok(()) }
Additional Notes:
wasmer-runtime
is built to support multiple compiler backends.
Currently, we support the Singlepass, Cranelift, and LLVM compilers
with the wasmer-singlepass-backend
, wasmer-clif-backend
, and
wasmer-llvm-backend crates, respectively.
You can specify the compiler you wish to use with the compile_with
function or use the default with the compile
function.
Modules
cache | The cache module provides the common data structures used by compiler backends to allow serializing compiled wasm code to a binary format. The binary format can be persisted, and loaded to allow skipping compilation and fast startup. |
error | The error module contains the data structures and helper functions used to implement errors that are produced and returned from the wasmer runtime. |
memory | The memory module contains the implementation data structures and helper functions used to manipulate and access wasm memory. |
types | Types used in the Wasm runtime and conversion functions. |
units | Various unit types. |
wasm | Various types exposed by the Wasmer Runtime. |
Macros
func | Helper macro to create a new |
imports | Generate an |
Structs
Array | The |
CodeVersion | A |
CompilerConfig | Configuration data for the compiler |
Ctx | The context of the currently running WebAssembly instance. |
DynFunc | A representation of an exported WebAssembly function. |
Features | Controls which experimental features will be enabled. Features usually have a corresponding WebAssembly proposal. |
Func | Represents a function that can be used by WebAssembly. |
Global | A handle to a Wasm Global |
ImportObject | All of the import data used when instantiating. |
Instance | An instantiated WebAssembly module. |
Item | The |
Memory | A shared or unshared wasm linear memory. |
MiddlewareChain | A container for a chain of middlewares. |
Module | A compiled WebAssembly module. |
StreamingCompiler | A streaming compiler which is designed to generated code for a module based on a stream of wasm parser events. |
Table | Container with a descriptor and a reference to a table storage. |
WasmPtr | A zero-cost type that represents a pointer to something in Wasm linear memory. |
Enums
Backend | Enum used to select which compiler should be used to generate code. |
ExceptionCode | The code of an exception. |
Export | Kind of WebAssembly export. |
Value | Represents a WebAssembly value. |
Constants
VERSION | The current version of this crate. |
Traits
Compiler | |
LikeNamespace | This trait represents objects that act as a namespace for imports. For example, an |
Functions
compile | Compile WebAssembly binary code into a |
compile_with | Compile a |
compile_with_config | The same as |
compile_with_config_with | The same as |
compiler_for_backend | Get the |
default_compiler | Get a single instance of the default compiler to use. |
instantiate | Compile and instantiate WebAssembly code without
creating a |
pop_code_version | Pops a |
push_code_version | Pushes a new |
validate | Perform validation as defined by the
WebAssembly specification. Returns |