Component Model Tooling Compatibility
Here at the Bytecode Alliance, we are very excited about the potential of the WebAssembly Component Model proposal and we understand that many of you are actively exploring ways to build solutions that use WebAssembly components as well!
We have been working hard on an implementation of the proposal across many of our repositories. However, keeping track of the various versions of the tooling that are compatible with one another is not an easy undertaking.
As work on an implementation progresses, we would like to periodically publish a “matrix” of known-compatible versions of the tooling to make it easier for users to work with our component model implementation.
Compatibility Matrix
The compatibility matrix is a snapshot of the tooling that aligns on the underlying support for the textual and binary representations of WebAssembly components (as specified in the proposal) and also on component-model-compatible WASI interfaces.
Note that the matrix is not a guarantee of the quality of the implementation: as many of the tools are very much in active development and bugs will definitely be encountered, please consider the tooling to be a technology preview.
When the proposal and implementation have stabilized, we will announce that it is ready to use in a production environment.
Here is the current compatibility matrix for the component model tooling:
Runtime | Bindings | WASI (preview2) | Tooling | CLI Tools |
---|---|---|---|---|
wasmtime (7.0.0) | wasmtime-wit-bindgen (7.0.0) | host (408f0bf) | componentize-js (0.0.3) | cargo-component (2101df5) |
wit-bindgen-c (0.4.0) | js-preview2-shim (0.0.5) | wasm-compose (0.2.11) | jco (0.5.3) | |
wit-bindgen-go (0.2.0) | preview1-command-adapter (408f0bf) | wasm-encoder (0.25.0) | wasm-tools (1.0.28) | |
wit-bindgen-rust (0.4.0) | preview1-reactor-adapter (408f0bf) | wasm-metadata (0.3.1) | wit-bindgen (0.4.0) | |
wit-bindgen-teavm-java (0.4.0) | wasi-cap-std-sync (408f0bf) | wasmparser (0.102.0) | ||
wasi-common (408f0bf) | wasmprinter (0.2.54) | |||
wasi-tokio (408f0bf) | wat (1.0.61) | |||
wit-component (0.7.4) | ||||
wit-parser (0.6.4) |
Runtimes
The following table lists the versions of the runtime packages that are compatible:
Package | Version | Compilation Feature |
---|---|---|
wasmtime | 7.0.0 | component-model |
Host Bindings
The following table lists the versions of the host bindings generator packages that are compatible:
Package | Version |
---|---|
wasmtime-wit-bindgen | 7.0.0 |
Guest Bindings
The following table lists the versions of the guest bindings generator packages that are compatible:
Package | Version |
---|---|
wit-bindgen-c | 0.4.0 |
wit-bindgen-go | 0.2.0 |
wit-bindgen-rust | 0.4.0 |
wit-bindgen-teavm-java | 0.4.0 |
WASI (preview2)
The following table lists the versions of the WASI preview2 packages that are compatible:
Package | Version |
---|---|
host | 408f0bf |
js-preview2-shim | 0.0.5 |
wasi-common | 408f0bf |
wasi-cap-std-sync | 408f0bf |
wasi_snapshot_preview1.command.wasm (adapter) | 408f0bf |
wasi_snapshot_preview1.reactor.wasm (adapter) | 408f0bf |
wasi-tokio | 408f0bf |
Note: most of the WASI preview2 packages above are from a repository serving as a prototype development fork; the intention is to merge the prototype work to upstream repositories once it is ready.
Tooling Libraries
The following table lists the versions of the component tooling library packages that are compatible:
Package | Version |
---|---|
componentize-js | 0.0.3 |
wasm-compose | 0.2.11 |
wasm-encoder | 0.102.0 |
wasm-metadata | 0.3.1 |
wasmparser | 0.102.0 |
wasmprinter | 0.2.54 |
wat | 1.0.61 |
wit-component | 0.7.4 |
wit-parser | 0.6.4 |
CLI Tools
The following table lists the versions of the CLI tools that are compatible:
Tool | Version |
---|---|
cargo-component (Rust) | 2101df5 |
jco (JavaScript) | 0.5.3 |
wasm-tools | 1.0.28 |
wit-bindgen | 0.4.0 |
Producing Components
To get started with producing components with Rust, see the cargo-component repository.
To get started with producing components with JavaScript, see the JavaScript Component Tool repository.
For other languages, see the wit-bindgen repository.
Feedback
If you encounter issues with the component model tooling, please file an issue in the repository for the tool you are using.
Additionally, many of the maintainers of the component model tooling are active on the Bytecode Alliance Zulip. Feel free to reach out there if you have questions or need help!