WAForth:WebAssembly 上的 Forth 解释器与编译器
用原始 WebAssembly 编写的完整 Forth 系统,运行时动态生成 WebAssembly 代码。
一个用原始 WebAssembly 编写的小型完整 Forth 解释器与动态编译器,编译器在运行时生成 WebAssembly 代码。除动态加载模块(WebAssembly 尚不支持 JIT)和屏幕读写的 I/O 原语外,其余全部在 WebAssembly 内完成。包含解释器、动态编译器和内置词的模块约 14k(gzip 后 7k),加上 JavaScript 封装、Web UI 与编码开销约 15k。实现了全部 ANS Core 词(通过 Forth 200x 测试套件核心词测试)及许多 ANS Core Extension 词。除浏览器和 Node.js 外,还提供基于 Wasmtime 的原生命令行 shell(可改用支持 WebAssembly C API 的引擎),以及 `waforthc` 工具,把 Forth 程序以 WebAssembly 作为宿主运行时和中间表示,提前编译成不再包含 WebAssembly 基础设施的原生可执行文件。可在任意 JavaScript 应用中嵌入并绑定 JS 函数(异步绑定用 `bindAsync`)。还支持用 `CODE` 词直接用 Forth 编写 WebAssembly(实验性,汇编词需用 `$U,`、`$S,` 手工定义,暂不支持 WebAssembly locals),并有支持交互式 Forth notebook 的 VS Code 扩展及 `wafnb2html` 导出工具。