Dart v prohlížeči: WebAssembly mění tvář frontend vývoje
Budoucnost vývoje přímo v prohlížeči dorazila
Webový vývoj byl dlouho rozházený do částí. JavaScript pro prohlížeč, backend v jiném jazyce. Co kdyby se ale Dart – plnohodnotný staticky typovaný jazyk – spustil rovnou v prohlížeči? Bez jakéhokoli serveru.
Díky WebAssembly a chytrému kompilování se to stává realitou. Dart VM přeložená do WASM mění prohlížeč na skutečné vývojové prostředí.
Jak to celé funguje
Nejlepší je mechanismus. Celý nástrojový řetězec běží na straně klienta.
Kompiler v prohlížeči
Dart kernel front-end (dart2wasm) převádí tvůj kód na kernel bytes přímo na stránce. Žádné volání na server. Uložíš, prohlížeč zkompiluje, testuješ hned.
Runtime lokálně
Místo odesílání kódu na server ARM simulátor z emscripten spouští Dart bytecode. Tento mix umožňuje plnou VM v WebAssembly bez přepisování runtime.
Kontrola typů naživo
Dart analyzer v WebAssembly běží v editoru. Chyby v typech, nepoužité proměnné – vidíš to okamžitě. Žádné čekání na language server.
Sen: Hot Reload ve webu
Kdo zná Flutter nebo Dart, ví, jak závislost vytváří hot reload. Změníš funkci, uložíš, vidíš výsledek bez ztráty stavu. Teď to funguje i v prohlížeči.
Dart VM v prohlížeči používá IsolateGroup::ReloadKernel. Vymění kód, zachová paměť. Stav zůstane, provádění pokračuje. Stejný komfort jako na mobilu.
Vylepšený editor
Rozhraní není na odžeh. Monaco (základ VS Code) s Dart highlightingem a CodeLens. Každá top-level funkce má tlačítko ▶ pro spuštění. Žádné starosti s entry-pointy.
Async bez blokování
Problém: jak čekat v WebAssembly, aniž by prohlížeč zamrzl? Emscripten Asyncify to vyřeší. Future.delayed() vrátí řízení prohlížeči. UI zůstane plynulé, čas běží na pozadí.
Proč to devům mění hru
Tento projekt bourá mýty o Dartu. Otevírá dveře:
- Rychlé prototypy: Dart kód v prohlížeči bez buildů nebo serverů.
- Spolupráce naživo: Pošli linku, kolegův edit a rerun v reálném čase.
- Učení bez instalace: Žádný setup, jen karta v prohlížeči.
- Vložené výpočty: Dart REPL v tutoriálech nebo blozích.
Technická krása
Funguje to elegantně. Kompilátor, VM i analyzer v WebAssembly – žádné závislosti, sandbox bezpečně. Hot reload chápá Dart runtime do hloubky. Žádný restart, skutečná výměna kódu se stávajícím stavem.
Co přijde dál
Je to experiment, ale ukazuje bohatší budoucnost. WebAssembly s garbage collection a thready umožní složitější runtime. Pro Flutter týmy jednotný vývoj web/mobile. Pro zkoušející nulové bariéry.
Prohlížeč už není jen cíl pro kód. Stává se plnohodnotným studiem. Dart v WebAssembly jde v čele.