Mobile triad · third sibling
Built on kavak · No Flutter Engine · No Dart VM

Dart, compiled in your browser.

The third sibling in the mobile-triad family — miniswift.run, minikotlin.run, and now minidart.run. A from-scratch Dart pipeline written in C, sharing the kavak frontend kernel with its siblings: lexer · Pratt parser · sema · type-system runtime. Emits WASM GC for class instances, vtables + call_ref for virtual dispatch, WASM EH for try/catch.

Vision · Dart 3, WASM-native

The full Dart 3 surface, no engine attached.

Sound null safety, generics, mixins, factory constructors, records, patterns, async/await with Future, sealed classes — everything the language defines. Same playbook as miniswift.run and minikotlin.run before it: a real compiler emitting real WASM, not a transpiler-to-JS shim.

hello.dart target spec
class Greeter {
    final String name;
    Greeter(this.name);
    String hello() => 'Hi, $name!';
}

void main() {
    final g = Greeter('world');
    print(g.hello());
}
// once minidart ships, this will print:
Hi, world!

Built on kavak

minidart is the v1 ship target of kavak — the mobile-triad's shared frontend kernel. Phase 0 audit measured 58% structural overlap between the existing Swift (msf) and Kotlin (mkf) frontends; minidart is what proves the shared trunk works for a third language. Dart contributes its descriptor (keyword + operator tables, string-template syntax, mixin grammar) and language-specific sema. Lexer, parser core, AST arena, type-system runtime, scope resolution, and diagnostics all come from the shared kernel.

.dart
kavak frontend
HIR
MIR
WASM
current phase

Awaiting kavak Phase 1

Repository bones live alongside the sister projects. No compiler yet — minidart picks up the moment kavak's kernel (lexer, parser, sema, type system) is ready. kavak's Phase 0 audit shipped; one Dart-spec validation pass remains before Layer 1 code begins. After that, minidart's Phase 6 builds the descriptor; Phase 7 wires the WASM backend. Hello-world in your tab is the v1 ship target.

Tracking · kavak.run · Estimated start · 1-2 weeks after kavak Phase 1