Crate wasmedge_sdk
source ·Expand description
Overview
WasmEdge Rust SDK provides idiomatic Rust language bindings for WasmEdge
Notice: This project is still under active development and not guaranteed to have a stable API.
- WasmEdge website
- WasmEdge Docs
- WasmEdge GitHub Page
- WasmEdge Rust SDK GitHub Page
- WasmEdge Rust SDK Examples
Get Started
Since this crate depends on the WasmEdge C API, it needs to be installed in your system first. Please refer to WasmEdge Installation and Uninstallation to install the WasmEdge library. The versioning table below shows the version of the WasmEdge library required by each version of the wasmedge-sdk
crate.
wasmedge-sdk | WasmEdge lib | wasmedge-sys | wasmedge-types | wasmedge-macro | async-wasi |
---|---|---|---|---|---|
0.13.0 | 0.13.5 | 0.17.3 | 0.4.4 | 0.6.1 | 0.1.0 |
0.12.2 | 0.13.4 | 0.17.2 | 0.4.4 | 0.6.1 | 0.1.0 |
0.12.1 | 0.13.4 | 0.17.1 | 0.4.4 | 0.6.1 | 0.1.0 |
0.12.0 | 0.13.4 | 0.17.0 | 0.4.4 | 0.6.1 | 0.1.0 |
0.11.2 | 0.13.3 | 0.16.2 | 0.4.3 | 0.6.1 | 0.1.0 |
0.11.0 | 0.13.3 | 0.16.0 | 0.4.3 | 0.6.0 | 0.0.3 |
0.10.1 | 0.13.3 | 0.15.1 | 0.4.2 | 0.5.0 | 0.0.2 |
0.10.0 | 0.13.2 | 0.15.0 | 0.4.2 | 0.5.0 | 0.0.2 |
0.9.0 | 0.13.1 | 0.14.0 | 0.4.2 | 0.4.0 | 0.0.1 |
0.9.0 | 0.13.0 | 0.14.0 | 0.4.2 | 0.4.0 | 0.0.1 |
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 | - | - |
WasmEdge Rust SDK will automatically search for the WasmEdge library in your system. Alternatively you can set the WASMEDGE_DIR
environment variable to the path of the WasmEdge library (or the WASMEDGE_INCLUDE_DIR
and WASMEDGE_LIB_DIR
variables for more fine-grained control). If you want to use a local cmake
build of WasmEdge you can set the WASMEDGE_BUILD_DIR
instead.
WasmEdge Rust SDK will search for the WasmEdge library in the following paths in order:
$WASMEDGE_[INCLUDE|LIB]_DIR
$WASMEDGE_DIR
$WASMEDGE_BUILD_DIR
$HOME/.wasmedge
/usr/local
$HOME/.local
When the standalone
feature is enabled the correct library will be downloaded during build time and the previous locations are ignored. You can specify a proxy for the download process using the WASMEDGE_STANDALONE_PROXY
, WASMEDGE_STANDALONE_PROXY_USER
and WASMEDGE_STANDALONE_PROXY_PASS
environment variables. You can set the WASMEDGE_STANDALONE_ARCHIVE
environment variable to use a local archive instead of downloading one.
The following architectures are supported for automatic downloads:
os | libc | architecture | linking type |
---|---|---|---|
macos | - | x86_64 , aarch64 | dynamic |
linux | glibc | x86_64 , aarch64 | static, dynamic |
linux | musl | x86_64 , aarch64 | static |
This crate uses rust-bindgen
during the build process. If you would like to use an external rust-bindgen
you can set the WASMEDGE_RUST_BINDGEN_PATH
environment variable to the bindgen
executable path. This is particularly useful in systems like Alpine Linux (see rust-lang/rust-bindgen#2360, rust-lang/rust-bindgen#2333).
Notice: The minimum supported Rust version is 1.71.
API Reference
Examples
The Examples of WasmEdge RustSDK repo contains a number of examples that demonstrate how to use the WasmEdge Rust SDK.
Contributing
Please read the contribution guidelines on how to contribute code.
License
This project is licensed under the terms of the Apache 2.0 license.
Modules
- Defines the structs used to construct configurations.
- Defines WasmEdge VmDock and Param types.
- Defines WasmEdge error types.
- Defines plugin related structs.
- Defines the general types.
- Defines WasmEdge Driver and CoreVersion types
- Defines wasi module instance.
Macros
- Generates arguments of WasmValue types.
Structs
- Represents the calling frame on top of stack.
- Compiler
aot
Defines WasmEdge ahead-of-time(AOT) compiler and the relevant APIs. - 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.
- 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.
- 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.
- 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.
- Struct of WasmEdge TableType.
- A Vm defines a virtual environment for managing WebAssembly programs.
- Constructs a Vm instance.
Enums
- Defines WasmEdge AOT compiler optimization level.
- Defines WasmEdge AOT compiler output binary format.
- Defines the type of external WasmEdge instances.
- Defines WasmEdge host module registration enum.
- Defines the mutability property of WasmEdge Global variables.
- Defines WasmEdge reference types.
- 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.
Type Aliases
- This is a workaround solution to the
never
type in Rust. It will be replaced by!
once it is stable. - The WasmEdge result type.
- WebAssembly value type.
Attribute Macros
- async_host_function
async
and LinuxDeclare 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.