Dart dans votre navigateur : WebAssembly révolutionne le frontend !
Le développement en navigateur entre dans une nouvelle ère
Le développement web était jusqu'ici cloisonné. JavaScript pour le front, un autre langage pour le back. Et si Dart, un langage typé statiquement puissant, tournait directement dans votre navigateur ? Sans serveur backend.
Grâce à WebAssembly et des astuces de compilation malignes, c'est désormais possible. La Dart VM compilée en WASM fait du navigateur un vrai environnement de dev et d'exécution.
Le fonctionnement en détail
Tout se passe côté client. Zéro latence réseau.
Le compilateur s'exécute dans le navigateur
Dart2wasm, le frontend kernel de Dart, transforme votre code source en bytes kernel directement sur la page. Sauvegardez, le navigateur compile, et testez instantanément.
L'exécution reste locale
Un simulateur ARM, via emscripten, lance le bytecode Dart compilé. Cette approche hybride permet à la VM complète de briller en WebAssembly, sans réécrire tout le runtime.
Vérification des types en temps réel
L'analyseur Dart, compilé en WASM, tourne dans l'éditeur. Erreurs de type, variables inutilisées : feedback immédiat, sans attendre un language server.
Le graal : hot reload dans le web
Fans de Flutter ou Dart, vous adorez le hot reload. Modifiez une fonction, sauvegardez, et l'app se met à jour sans perdre son état. Maintenant, ça marche dans le navigateur.
La Dart VM browserisée utilise IsolateGroup::ReloadKernel pour remplacer le code en gardant la mémoire intacte. L'état persiste, l'exécution reprend. Même fluidité qu'en mobile, mais en web pur.
Une interface pro et intuitive
L'éditeur repose sur Monaco, le cœur de VS Code. Avec coloration syntaxique Dart et boutons CodeLens. Chaque fonction top-level a un bouton ▶ pour l'invoquer live sur l'isolate, sans se soucier des entry-points.
Gérer l'asynchrone sans bloquer
Problème classique en WASM : comment attendre sans geler le navigateur ? Emscripten Asyncify résout ça. Un Future.delayed() cède le contrôle au browser. L'UI reste fluide, le code attend en fond.
Pourquoi ça change tout pour les devs
Ce projet explose les limites de Dart. Il ouvre des portes :
- Prototypage ultra-rapide : Lancez du code Dart dans un onglet, sans build ni infra serveur.
- Collaboration live : Partagez un lien. Votre collègue édite et relance en temps réel.
- Apprentissage sans barrières : Enseignez Dart sans install. Juste un navigateur.
- Calculs embarqués : Intégrez un REPL Dart dans docs, tutos ou blogs interactifs.
L'élégance technique
Ce qui impressionne, c'est la finesse. Compiler Dart compiler, VM et analyseur en WASM supprime les dépendances et risques sécurité. Tout en sandbox. Pas d'escalade de privilèges, pas de serveur à gérer.
Le hot reload prouve une maîtrise totale des sémantiques Dart. Pas un redémarrage bidon : une vraie mise à jour in-place, état préservé.
Vers l'avenir
Projet expérimental pour l'instant, mais visionnaire. Avec l'évolution de WebAssembly (GC, threads), les environnements de dev browserisés dépasseront les sandboxes JS actuels.
Pour les équipes Dart/Flutter, c'est l'unification web/mobile. Pour les curieux, zéro friction pour tester Dart.
Le navigateur n'est plus un simple cible d'exécution. Il devient un IDE complet. Et Dart en WASM montre la voie.