Dart i browseren: WebAssembly revolutionerer frontend-udvikling
Fremtiden for udvikling i browseren er her
Webudvikling har længe været splittet. Frontend i JavaScript, backend i noget helt andet. Men tænk hvis du kunne køre Dart – et rigtigt, statisk typet sprog – direkte i browseren. Uden servere eller backend.
Med WebAssembly og smarte kompileringstricks er det nu muligt. Dart VM, oversat til WASM, gør browseren til et ægte udviklingsmiljø.
Sådan fungerer det i praksis
Hele værktøjskæden kører lokalt i browseren:
Kompileren sidder i browseren
Dart kernel front-end (dart2wasm) omsætter din kode til kernel bytes på stedet. Tryk save, browseren kompilerer, og du kan teste med det samme. Ingen netværksforsinkelser.
Runtime kører lokalt
En ARM-simulator fra emscripten håndterer den kompilererede Dart bytecode. Det hele kører effektivt i WebAssembly uden at omskrive VM'en fra bunden.
Type-tjek mens du skriver
Dart analyzeren kører også i WebAssembly. Du får øjeblikkelig feedback på typefejl, ubrugte variabler og andre problemer. Ingen ventetid på language server.
Drømme-funktionen: Hot reload på nettet
Hot reload er Dart og Flutter-folks yndling. Ændr koden, gem, og se resultatet uden at miste appens tilstand. Nu virker det i browseren.
Dart VM bruger IsolateGroup::ReloadKernel til at skifte kode ud, mens hukommelsen forbliver intakt. Staten holder, udførelsen fortsætter. Samme flydende oplevelse som på mobil – men i din browser.
Et pænt udviklermiljø
Brugervenligheden er i top. Editoren bygger på Monaco fra VS Code med Dart-highlighting og CodeLens-knapper. Hver top-level funktion har en ▶-knap. Klik, og kør null-argument funktioner direkte på den live isolate. Ingen entry-point-pragmas nødvendige.
Async uden blokering
Hvordan håndterer du sleep eller vent i WebAssembly uden at fryse browseren? Emscripten’s Asyncify løser det. Future.delayed() frigiver kontrollen til browseren. UI'en forbliver responsiv, mens koden venter i baggrunden.
Hvorfor det betyder noget for udviklere
Projektet bryder med gamle idéer om Dart. Det åbner døre til:
- Hurtig prototyping: Start Dart-kode i en browser-fane. Ingen build eller servere.
- Live samarbejde: Del et link. Kollegaen editerer og kører kode i realtid.
- Læring og undervisning: Undervis i Dart uden installation. Bare en browser.
- Indbygget beregning: Byg Dart REPL ind i docs, tutorials eller interaktive blogs.
Den tekniske finesse
Det imponerende er ikke kun at det virker – men hvordan. Ved at kompilere compiler, VM og analyzer til WebAssembly fjerner man afhængigheder og sikkerhedsbarrierer. Alt kører i sandbox. Ingen privilegie-eskalering. Ingen server at vedligeholde.
Hot reload viser dyb forståelse af Darts runtime. Det er ægte kodeopdatering med bevaret isolate-tilstand – ikke en restart.
Fremtiden kalder
Det er stadig et eksperimentelt projekt, men det peger mod browser-miljøer rigere end nutidens JS-sandboxes. WebAssembly bliver bedre med garbage collection og threads. Flere sprog-runtime kommer snart.
For Dart- og Flutter-teams betyder det ensartet udvikling på tværs af web og mobil. For nysgerrige udviklere fjerner det alle barrierer.
Browseren er ikke længere bare et executionsmål. Den bliver et fuldt udviklingsværktøj. Og Dart i WebAssembly går i spidsen.