Dart Live:通过 WebAssembly 在 Web 上运行编译器、VM、分析器和热重载

Lobsters Hottest 工具

摘要

Dart Live 使得 Dart 编译器、虚拟机和分析器能够完全在浏览器中通过 WebAssembly 运行,支持无需服务器的状态保持式热重载。

<p>我成功将 Dart VM 编译为 WebAssembly,从而可以在浏览器中编译 Dart 程序。Dart 自带一个基础的 ARM 解释器,利用该解释器,热重载功能可以直接在浏览器中工作。</p> <p>其 gzip 压缩后的大小为 7.6 MB,且后端没有运行服务器,因此我能够直接将其托管在 GitHub Pages 上。</p> <p><a href="https://github.com/modulovalue/dart-live" rel="ugc">https://github.com/modulovalue/dart-live</a></p> <p><a href="https://lobste.rs/s/qwoixg/dart_live_compiler_vm_analyzer_hot_reload">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/13 10:14

# Dart in WebAssembly Source: https://modulovalue.com/dart-live/ ## DartVM in WebAssembly 编辑 Dart,运行它。CFE 在浏览器中编译(dart2wasm);VM 通过 ARM 模拟器(emcc)运行;Dart 分析器也编译到了 WebAssembly。支持 Web 上的**有状态热重载**,编译为 WebAssembly。 高级模式加载中... ## 关于此项目 Dart VM 被编译为**WebAssembly**,完全在浏览器中运行,不涉及服务器。 内核前端(`dart2wasm`)在页面内将源码编译为内核字节码,VM(使用带 ARM 模拟器的 `emcc`)执行它,Dart 分析器(同样是 `dart2wasm`)在你输入时实时提供类型检查和诊断。 编辑器使用 **Monaco**(VS Code 编辑器),集成了 Dart 语法高亮和 CodeLens API,因此每个顶级函数的声明上方都会出现内联的可点击按钮 `▶ 调用` / `▸ IL`。 **热重载**内部使用 `IsolateGroup::ReloadKernel`,在重载时保留程序状态,与 Flutter 一样。**调用**功能让你可以调用 live isolate 上任意零参数的顶级函数,通过 `--no-verify-entry-points` 绕过入口点检查。 `Future.delayed` 通过 Asyncify 使用 `emscripten_sleep`,因此 await 真的会等待墙钟时间,而不会阻塞页面。

相似文章

LaTeX.wasm: 浏览器中的LaTeX引擎

Hacker News Top

SwiftLaTeX 通过 WebAssembly 直接在浏览器中启用 LaTeX 编译,允许用户无需服务器端 LaTeX 安装即可创建和编辑 LaTeX 文档。