Wasmtime test

Example project showcasing how to run a wasm component with wasmtime, and how to build the runnable component using cargo component.

Structure

component

This package includes an example wasm component, which simply calls a hello() function provided by the runner.

runner

This package includes an example runtime, to run the built wasm component from the component package.

Build

First run cargo component build -p component --release to build the wasm component.

Then run cargo run -p runner --release to run the runner with the build wasm component from the previous step.

Troubleshooting

If you see errors about imports missing when trying to run the compiled component, it's likely there's a dependency on std that isn't supported by the runtime linker (e.g. by calling println!()). To build without std components, run the following:

cargo component build --target wasm32-unknown-unknown --release

Note this is only required when using std components. Preferably don't do this, and instead use #![no_std] to not accidentally use std. Otherwise, you'll need to either use a runtime that includes std (e.g. wasmtime cli), or add the appropriate imports to the runtime linker.

To check the imports and exports for a compiled .wasm component, run the following (where component.wasm is the compiled .wasm file to inspect):

wasm-tools component wit component.wasm

Description
No description provided
Readme 52 KiB
Languages
Rust 100%