This isn't strictly a wit-bindgen problem, but I think this is the closest stream for component model tools. I'm trying to get the example in wasm-compose working. I made the following updates: https://github.com/bytecodealliance/wasm-tools/compare/main...ricochet:wasm-tools:fix/wasm-compose-example
I can get the individual components to build now, but it's failing on the last step for running the composed service module in the server.
cargo run --release -- service.wasm
Finished release [optimized] target(s) in 0.15s
Running `target/release/host service.wasm`
Error: failed to parse WebAssembly module
Caused by:
section size mismatch: unexpected data at the end of the section (at offset 0xd)
service.wasm
wat matches what I think I should expect for a composed component, e.g. high-level component with an instance of the backend and exports for all of the exported interfaces from the various
At one point there was a tool wasm-link
whose output was a canonical ABI component. Is there a similar tool available today? The goal being that I could get a plain old wasm module that can run on runtimes that don't yet support the component model.
Peter's out til mid next-week and would probably know for sure, but I can try to help investigate soon if I get time.
Otherwise wasmlink
has indeed been removed and replaced with various other tools ,but the replacement depends on what functionality you're looking for -- converting to a component is a wit-component
job and linking components is wasm-compose
@Bailey Hayes I can pair for a bit if you'd like to help bottom this out
I removed the rev pin on wasmtime and got further!
error[E0277]: the trait bound `std::result::Result<ServiceResponse, ServiceError>: ComponentNamedList` is not satisfied
--> src/main.rs:157:14
|
157 | .get_typed_func::<(ServiceRequest,), ServiceResult, _>(&mut store, "execute")?;
| ^^^^^^^^^^^^^^ the trait `ComponentNamedList` is not implemented for `std::result::Result<ServiceResponse, ServiceError>`
|
= help: the following other types implement trait `ComponentNamedList`:
()
(A1, A2)
(A1, A2, A3)
(A1, A2, A3, A4)
(A1, A2, A3, A4, A5)
(A1, A2, A3, A4, A5, A6)
(A1, A2, A3, A4, A5, A6, A7)
(A1, A2, A3, A4, A5, A6, A7, A8)
and 9 others
note: required by a bound in `wasmtime::component::Instance::get_typed_func`
--> /Users/bhayes/.cargo/git/checkouts/wasmtime-41807828cb3a7a7e/e45577e/crates/wasmtime/src/component/instance.rs:94:18
|
94 | Results: ComponentNamedList + Lift,
| ^^^^^^^^^^^^^^^^^^ required by this bound in `wasmtime::component::Instance::get_typed_func`
For more information about this error, try `rustc --explain E0277`.
error: could not compile `host` due to previous error
Oh change ServiceResult
to (ServiceResult,)
there
Thank you @Alex Crichton ! Working example: https://github.com/bytecodealliance/wasm-tools/pull/794
Last updated: Dec 23 2024 at 12:05 UTC