I just published a new encoding format "WAVE: Web Assembly Value Encoding" (and matching wasm-wave crate). WAVE is a human-oriented representation of component model values. The README gives a good overview of the format. I'd love feedback (and PRs!) on the format and eventually would like to donate it to be used for things like wasmtime run --invoke 'add(1, 2)'.
Thanks to @Dan Gohman for a PR adding e.g. \u{1F44B} unicode escapes, written within ~2 hours of learning that WAVE existed. :smile:
I've added a bunch of functionality to this and built this poc for using it to invoke component exports: https://github.com/lann/wave-tank
$ wave-tank example.wasm 'hello-world(false, "BA")'
hello-world(false, some("BA")) -> "Hello, BA!"
A proposal to use WAVE for wasmtime run --invoke: https://github.com/bytecodealliance/wasmtime/issues/7326
i really like the sound of this proposal!
as far as how to reference things that arent top level exports, or the syntax by which you do- i think we can follow the rule of only requiring an identifier if its ambigious
so if a component exports foo:bar/baz.run and wasi:cli/run.run then you have to call it by run.run. plain run will give an error as being ambigious
so allow people to leave off the namespace, package version, package name, and interface name if they like
Last updated: Dec 06 2025 at 06:05 UTC