Summary
wasmtime serve fails to link a wasi:http/service@0.3.0-rc-2026-01-06 component generated via wit-bindgen + wasm-tools component new.
The failure happens even without any compose step (wac / wasm-tools compose are not involved in this repro).
Versions
- wasmtime:
41.0.3 (db1c043b5 2026-02-04)
- wasm-tools:
1.245.1
- rustc:
1.92.0
- cargo:
1.92.0
- wit-bindgen crate:
0.51.0
Minimal Repro
src/lib.rs:
wit_bindgen::generate!({
inline: r#"
package vibe:http-adapter;
world serviceonly {
include wasi:http/service@0.3.0-rc-2026-01-06;
}
"#,
// Uses wasmtime's bundled wasi-http p3 WIT package
path: "<wasmtime repo>/crates/wasi-http/src/p3/wit",
world: "vibe:http-adapter/serviceonly",
pub_export_macro: true,
generate_all,
});
use exports::wasi::http::handler::Guest;
use wasi::http::types::{ErrorCode, Request, Response};
struct Component;
impl Guest for Component {
async fn handle(request: Request) -> Result<Response, ErrorCode> {
let _ = request;
Err(ErrorCode::InternalError(None))
}
}
export!(Component);
Build & run:
cargo build --target wasm32-unknown-unknown --release
wasm-tools component new target/wasm32-unknown-unknown/release/<crate>.wasm -o service_only.component.wasm
wasmtime serve \
-W component-model-async=y \
-W component-model-async-builtins=y \
--addr 127.0.0.1:0 \
service_only.component.wasm
Actual
wasmtime serve fails immediately:
Error: component imports instance `wasi:http/types@0.3.0-rc-2026-01-06`, but a matching implementation was not found in the linker
Caused by:
0: instance export `request` has the wrong type
1: resource implementation is missing
Additional Notes
- This same error reproduces from a second path where we compose another component via
wac plug, but the service-only repro above shows compose is not required.
wasm-tools validate --features all service_only.component.wasm succeeds.
If this behavior is expected due to stricter type matching semantics in serve, guidance on the required shape for imported wasi:http/types in generated components would help.
Summary
wasmtime servefails to link awasi:http/service@0.3.0-rc-2026-01-06component generated viawit-bindgen+wasm-tools component new.The failure happens even without any compose step (
wac/wasm-tools composeare not involved in this repro).Versions
41.0.3 (db1c043b5 2026-02-04)1.245.11.92.01.92.00.51.0Minimal Repro
src/lib.rs:Build & run:
Actual
wasmtime servefails immediately:Additional Notes
wac plug, but the service-only repro above shows compose is not required.wasm-tools validate --features all service_only.component.wasmsucceeds.If this behavior is expected due to stricter type matching semantics in
serve, guidance on the required shape for importedwasi:http/typesin generated components would help.