hone opened issue #8426:
Hi, I'm fairly new to all of this. If there's someplace else I should be going, please let me know. Thanks!
I'm trying to use
bindgen!
with a simple hello world WASM Component Model. I've built a simple one using:$ cargo component new --lib hello $ cd hello $ cargo component build
The generated wit looks like the following:
package root:component; world root { import wasi:cli/environment@0.2.0; import wasi:cli/exit@0.2.0; import wasi:io/error@0.2.0; import wasi:io/streams@0.2.0; import wasi:cli/stdin@0.2.0; import wasi:cli/stdout@0.2.0; import wasi:cli/stderr@0.2.0; import wasi:clocks/wall-clock@0.2.0; import wasi:filesystem/types@0.2.0; import wasi:filesystem/preopens@0.2.0; export hello: func() -> string; }
When I manually use
add_to_linker
I can get it to work:use std::error::Error; use wasmtime::{ component::{Component, Linker}, {Config, Engine, Store}, }; use wasmtime_wasi::{ bindings, {WasiCtxBuilder, WasiP1Ctx}, }; fn main() -> Result<(), Box<dyn Error>> { let engine = Engine::new(Config::new().wasm_component_model(true))?; let component = Component::from_file(&engine, "hello.wasm")?; let mut linker = Linker::<WasiP1Ctx>::new(&engine); bindings::cli::environment::add_to_linker(&mut linker, |x| x)?; bindings::wasi::cli::exit::add_to_linker(&mut linker, |x| x)?; bindings::wasi::io::error::add_to_linker(&mut linker, |x| x)?; bindings::sync_io::io::streams::add_to_linker(&mut linker, |x| x)?; bindings::wasi::cli::stdin::add_to_linker(&mut linker, |x| x)?; bindings::wasi::cli::stdout::add_to_linker(&mut linker, |x| x)?; bindings::wasi::cli::stderr::add_to_linker(&mut linker, |x| x)?; bindings::sync_io::filesystem::types::add_to_linker(&mut linker, |x| x)?; bindings::wasi::filesystem::preopens::add_to_linker(&mut linker, |x| x)?; let wasi_ctx = WasiCtxBuilder::new().build_p1(); let mut store = Store::new(&engine, wasi_ctx); let instance = linker.instantiate(&mut store, &component)?; let func = instance .get_func(&mut store, "hello") .expect("hello export not found"); let mut result = [wasmtime::component::Val::String("".into())]; func.call(&mut store, &[], &mut result)?; println!("{:?}", result); Ok(()) }
I'm trying to follow the documentation on using
wasmtime::components::bindgen!
:wasmtime::component::bindgen!({ with: { "wasi:cli/environment@0.2.0": wasmtime_wasi::bindings::wasi::cli::environment, "wasi": "wasmtime_wasi::bindings", }, });
I can't seem to get around this error:
error: failed to resolve directory while parsing WIT for path [/home/hone/Projects/rust/wasm/wasmtime_component_hello/wit] Caused by: package not found --> /home/hone/Projects/rust/wasm/wasmtime_component_hello/wit/hello.wit:4:10 | 4 | import wasi:cli/environment@0.2.0; | ^-------
Last updated: Dec 23 2024 at 13:07 UTC