TL;DR
WASM の処理系の 1 つ。WebAssembly Component をコンパイルし、サンドボックスの中で実行する。
仕組み
Rust などのコードからも、CLI からも実行できる。CLI は Cargo でインストールできる。
$ cargo install wasmtime-cli例
サンドボックスの中で動くので、Component からはシェルと異なるファイルシステムが見える。シェルからは見えるファイルも、Wasmtime 上の Component からは存在しないものとして扱われる。アクセスさせたいディレクトリは、実行時に --dir で明示する。
$ wasmtime --dir . target/wasm32-wasip1/debug/grep-wasi.wasm file src/main.rs環境変数も切り離されている。次のコードは、cargo run で実行すると設定されている環境変数の一覧を表示するが、Wasmtime 上で実行すると何も表示しない。
use std::env;
fn main() {
for (key, value) in env::vars() {
println!("{key}: {value}");
}
}注意点
ファイルシステムと環境変数のほか、ソケットの状態や、Component が使うメモリ空間も、Wasmtime が動く環境から切り離されている。