34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# 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`
|