# 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`