From 17e0924146f7a10d8a3c8dd1af48b98a0b374c1c Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Thu, 24 Sep 2026 23:07:02 +0200 Subject: [PATCH] Mention Dart support --- docs/languages.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/languages.md b/docs/languages.md index 6d4a9b0..7dccd51 100644 --- a/docs/languages.md +++ b/docs/languages.md @@ -10,6 +10,7 @@ The languages below can be compiled to WebAssembly with WASI support. Some toolc | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ---------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | C and C++ | [`wasi-sdk`](https://github.com/WebAssembly/wasi-sdk) | Modules; components via `wasm-tools component new` | 0.1, 0.2 | W3C Wasm CG | 0.3 toolchain support is not yet shipped | | C# | [`componentize-dotnet`](https://github.com/bytecodealliance/componentize-dotnet) | Components | 0.2 | Bytecode Alliance | Pre-release toolchain | +| Dart | [`wasi`](https://pub.dev/packages/wasi) | Components | 0.3 | Dart community | | | Go | Upstream Go (`GOOS=wasip1`) | Modules | 0.1 | Go Project | | | Go | [`go-modules`](https://github.com/bytecodealliance/go-modules); [TinyGo](https://tinygo.org/) | Components | 0.2 | Bytecode Alliance; TinyGo Project | | | Java | [GraalVM](https://www.graalvm.org/) | Planned | Planned | Oracle | Planned: see the [tracking issue](https://github.com/oracle/graal/issues/9762), [roadmap](https://github.com/orgs/oracle/projects/21/views/1), and [presentation](https://youtu.be/uefc2t9AmQI?t=1218) | @@ -27,7 +28,7 @@ The languages below can be compiled to WebAssembly with WASI support. Some toolc - **Modules vs components.** A Wasm **module** is a single binary in the core WebAssembly format and can use WASI 0.1. A **component** is built to the Component Model and can use WASI 0.2 or 0.3, gaining composability, cross-language interoperability, and richer interface types. See the [Releases](releases/index.md) and [Roadmap](roadmap.md) pages for more on the WASI releases. - **Adapting modules to components.** Several toolchains produce core modules today and wrap them into components using [`wasm-tools component new`](https://github.com/bytecodealliance/wasm-tools) with a 0.1-to-0.2 adapter. This is the path for C/C++ and MoonBit. -- **WASI 0.3 ecosystem state.** Broad 0.3 support across languages is still landing. Rust has WASI 0.3 bindings in the [`wasip3`](https://crates.io/crates/wasip3) crate, written for the nightly Tier 3 `wasm32-wasip3` target. It can be used from the stable Tier 2 `wasm32-wasip2` target, though upstream recommends matching the crate to the target, and the standard library on `wasm32-wasip2` still uses WASI 0.2. `jco` ships an experimental `preview3-shim` for Node.js. Other toolchains have not yet shipped 0.3 support, so target WASI 0.2 with those. +- **WASI 0.3 ecosystem state.** Broad 0.3 support across languages is still landing. Rust has WASI 0.3 bindings in the [`wasip3`](https://crates.io/crates/wasip3) crate, written for the nightly Tier 3 `wasm32-wasip3` target. It can be used from the stable Tier 2 `wasm32-wasip2` target, though upstream recommends matching the crate to the target, and the standard library on `wasm32-wasip2` still uses WASI 0.2. `jco` ships an experimental `preview3-shim` for Node.js. Dart requires WASI 0.3. Other toolchains have not yet shipped 0.3 support, so target WASI 0.2 with those. - **Version pinning.** The Component Model defines [canonical interface names](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#-canonical-interface-name) so that components can link across compatible versions, but not all tools support this version-aware linking yet. Until they do, target the same version (`0.3.0`) across all WIT-aware tools. Mismatches surface as confusing `wrong type` errors at instantiation. ### Building guides @@ -40,6 +41,7 @@ For hands-on guides covering setup and a "hello world" per language, see the Com - [Go](https://component-model.bytecodealliance.org/language-support/building-a-simple-component/go.html) - [C](https://component-model.bytecodealliance.org/language-support/building-a-simple-component/c.html) - [C#](https://component-model.bytecodealliance.org/language-support/building-a-simple-component/csharp.html) +- [Dart](https://component-model.bytecodealliance.org/language-support/building-a-simple-component/dart.html) - [MoonBit](https://component-model.bytecodealliance.org/language-support/building-a-simple-component/moonbit.html) ### Bindings generators @@ -51,6 +53,7 @@ The bindings generators below provide a way to make Wasm function calls using [i | Wasm Interface Types | C | [wit-bindgen c](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/c) | | Wasm Interface Types | C++ | [wit-bindgen cpp](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/cpp) | | Wasm Interface Types | C# | [wit-bindgen csharp](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/csharp) | +| Wasm Interface Types | Dart | [wasm_tools bindgen](https://github.com/simolus3/wasm.dart/tree/main/pkg/wit_bindgen_dart) | | Wasm Interface Types | JSON Schema | [component2json](https://github.com/microsoft/wassette/tree/main/crates/component2json) | | Wasm Interface Types | Markdown | [wit-bindgen markdown](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/markdown) | | Wasm Interface Types | Moonbit | [wit-bindgen moonbit](https://github.com/bytecodealliance/wit-bindgen/tree/main/crates/moonbit) |