Crate wasmedge_sdk
source ·Expand description
Overview
The wasmedge-sdk crate defines a group of high-level Rust APIs, which are used to build up business applications.
- Notice that wasmedge-sdk requires Rust v1.66 or above in the stable channel.
Build
To use or build the wasmedge-sdk
crate, the WasmEdge
library is required. Please refer to WasmEdge Installation and Uninstallation to install the WasmEdge
library.
-
The following table provides the versioning information about each crate of WasmEdge Rust bindings.
wasmedge-sdk WasmEdge lib wasmedge-sys wasmedge-types wasmedge-macro 0.8.1 0.12.1 0.13.1 0.4.1 0.3.0 0.8.0 0.12.0 0.13.0 0.4.1 0.3.0 0.7.1 0.11.2 0.12.2 0.3.1 0.3.0 0.7.0 0.11.2 0.12 0.3.1 0.3.0 0.6.0 0.11.2 0.11 0.3.0 0.2.0 0.5.0 0.11.1 0.10 0.3.0 0.1.0 0.4.0 0.11.0 0.9 0.2.1 - 0.3.0 0.10.1 0.8 0.2 - 0.1.0 0.10.0 0.7 0.1 -
Example
The example below is using wasmedge-sdk
to run a WebAssembly module written with its WAT format (textual format). If you would like more examples, please refer to Examples of WasmEdge RustSDK.
use wasmedge_sdk::{
error::HostFuncError, host_function, params, wat2wasm, Caller, ImportObjectBuilder, Module,
VmBuilder, WasmValue,
};
// We define a function to act as our "env" "say_hello" function imported in the
// Wasm program above.
#[host_function]
pub fn say_hello(_caller: Caller, _args: Vec<WasmValue>) -> Result<Vec<WasmValue>, HostFuncError> {
println!("Hello, world!");
Ok(vec![])
}
#[cfg_attr(test, test)]
fn main() -> anyhow::Result<()> {
// create an import module
let import = ImportObjectBuilder::new()
.with_func::<(), ()>("say_hello", say_hello)?
.build("env")?;
let wasm_bytes = wat2wasm(
br#"
(module
;; First we define a type with no parameters and no results.
(type $no_args_no_rets_t (func (param) (result)))
;; Then we declare that we want to import a function named "env" "say_hello" with
;; that type signature.
(import "env" "say_hello" (func $say_hello (type $no_args_no_rets_t)))
;; Finally we create an entrypoint that calls our imported function.
(func $run (type $no_args_no_rets_t)
(call $say_hello))
;; And mark it as an exported function named "run".
(export "run" (func $run)))
"#,
)?;
// loads a wasm module from the given in-memory bytes
let module = Module::from_bytes(None, wasm_bytes)?;
// create an executor
VmBuilder::new()
.build()?
.register_import_module(import)?
.register_module(Some("extern"), module)?
.run_func(Some("extern"), "run", params!())?;
Ok(())
}
Modules
Defines the structs used to construct configurations.
Defines WasmEdge VmDock and Param types.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge error types.
Defines plugin related structs.
Defines the general types.
Defines wasi module instance types, including WasiInstance, WasiNnInstance, wasi-crypto instances.
Macros
Used to pass arguments to the following methods:
Structs
Represents the calling frame on top of stack.
Defines WasmEdge ahead-of-time(AOT) compiler and the relevant APIs.
The version info of WasmEdge core
Defines WasmEdge Driver functions
Defines an execution environment for both pure WASM and compiled WASM.
Defines the types of the exported instances.
Defines a host function instance.
Defines a reference to a host function.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Struct of WasmEdge FuncType.
Defines a type builder for creating a FuncType instance.
Defines a WebAssembly global variable, which stores a single value of the given GlobalType and a flag indicating whether it is mutable or not.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Struct of WasmEdge GlobalType.
Defines an import object that contains the required import data used when instantiating a module.
Creates a normal or wasi import object.
Defines the types of the imported instances.
Represents an instantiated module.
Manipulates the runtime logger.
Defines a linear memory.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Struct of WasmEdge MemoryType.
Defines compiled in-memory representation of an input WASM binary.
Used to collect statistics of the WasmEdge runtime, such as the count of instructions in execution.
Defines a table storing the references to host functions or external objects.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Struct of WasmEdge TableType.
Enums
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge AOT compiler optimization level.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge AOT compiler output binary format.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines the type of external WasmEdge instances.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge host module registration enum.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines the mutability property of WasmEdge Global variables.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge reference types.
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Defines WasmEdge value types.
Traits
The object used as an module instance is required to implement this trait.
The object that is used to perform a host function is required to implement this trait.
Defines the function converting a value of Rust type to the one of Wasm type.
Describes the mapping of Rust type to Wasm type.
Describes the mapping of a tuple of Rust types to Wasm types.
Functions
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
Parses in-memory bytes as either the WebAssembly Text format, or a
binary WebAssembly module.
Type Definitions
Parses in-memory bytes as either the WebAssembly Text format, or a binary WebAssembly module
The WasmEdge result type.
WebAssembly value type.
Attribute Macros
Declare a native async function that will be used to create an async host function instance.
Declare a native function that will be used to create a host function instance.