Call this an experimental subgroup at the moment.
We are one commit away from being able to run dart2wasm code on WasmTime - https://dart-review.googlesource.com/c/sdk/+/505900
There are (at least) a few folks in the Dart ecosystem who would love to work on getting us running as a guest language.
Questions
(1): could we begin the work on consuming "components" even if the component GC work hasn't started?
(2): is there any way to help get the GC work moving along? Some of us have more tokens than talent, but we're enthusiastic to help try things out.
Regarding component GC, you could follow Kotlin's lead and copy between GC memory and linear memory as needed at import and export boundaries as a temporary measure until the component ABI has native support for WasmGC. @Zalim Bashorov (Kotlin_, JetBrains) might have guidance there.
Joel Dice said:
Regarding component GC, you could follow Kotlin's lead and copy between GC memory and linear memory as needed at import and export boundaries as a temporary measure until the component ABI has native support for WasmGC. Zalim Bashorov (Kotlin_, JetBrains) might have guidance there.
Great idea! Joel: you wouldn't happen to have a pointer to that impl? I'm happy to go dig, if not.
This topic is the most up-to-date info I'm aware of, and links to the temporary wit-bindgen fork which presumably takes care of the copying.
@Kevin Moore cangrats with the milestone and welcome to the party! :wink:
Hope you found relevant links in the thread mentioned above.
Anyway, feel free to ask any questions.
@Simon Binder is cranking on it!
My prototypes are in a shape worth sharing now I think :slight_smile: I'm working on component model support for Dart in this repository, which consists of two Dart packages (that I've just published to pub.dev too!):
wasm_components, providing a Dart WASM runtime implemented in Rust+Dart, as well as helpers to copy between GC types and linear memory.wasm_tools, a package that can generate Dart code given WIT definitions and can compile a main.dart to a component under a specified world.There's also support for packages, e.g. a Dart package could declare an import on a component interface and then if a final program imports that package, it automatically imports the component.
The component generator is written in Dart, I use something based on the wit_bindgen_core crate to generate interop code. For now, this only supports a tiny subset of the component model but it's enough to play around with it. Contributions are welcome, I want to gradually add support for running in wasi:cli@0.3.0.
This package provides an overview of the workflow and contains an example.
Last updated: Jul 29 2026 at 05:03 UTC