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!