Hoot 0.10.0 发布:把 Scheme 编译成 WebAssembly
来源:spritely.institute — 2026-10-28
📋 概述
Hoot 是 Spritely 的 Scheme 到 WebAssembly 编译器后端,也是面向 Guile 的通用 WebAssembly 工具链——简单说就是让 Scheme 跑在浏览器里。0.10.0 距 5 月的 0.9.0 积累了一批新特性与修复:编译器给重复导入报错加上模块名上下文、支持 R6RS 的库版本化、修正 define-module 的默认版本与 locate-library 的加载扩展;运行时补上解释器定义记录的 %struct-ref 与 %struct-set!、放宽未定义符号导入的报错、修正 primitive-eval 的可选参数与关键字参数解析;Scheme 层新增 SRFI-13 与 SRFI-60 的部分实现,以及 define-macro、defmacro、delete、list->symbol、symbol。
🔑 核心要点
- 定位是双重的:既是 Guile 的 Scheme→WebAssembly 后端,也是通用 WebAssembly 工具链
- 配套动作很实用:为 10 月 30 日开跑的 Lisp Game Jam 准备了游戏模板
- 模板内容齐全:HTML5 canvas 的 Web API 绑定、编译与开发服务器用的 Makefile、打包 itch.io 的 zip
- 示例是个简化版打砖块,把各部分怎么拼起来演示了一遍
- 编译器侧修的多是兼容性细节:重复导入报错带模块名、R6RS 库版本化、locate-library 用自己的加载扩展
- 运行时侧向 Guile 看齐:导入未定义符号不再直接报错,否则与 Guile 的宽松行为不兼容
💡 金句
Hoot is a Scheme to WebAssembly compiler backend for Guile, as well as a general purpose WebAssembly toolchain. In other words, Scheme in the browser!
👍 0
👎 0
← 返回 Lobsters 首页