打开 goeteia.dev,看到的不是一张普通的项目主页——它是自己编译出来的。首页顶部那段用点阵字形拼出的 Γοητεία 动画,是在浏览器里现场把一段 Scheme 源码编译成 WebAssembly 字节码后跑出来的:字母先在 WebGL 里散成粒子,再从希腊语聚回英文名 Goeteia,连粒子飞行轨迹的顶点着色器都是用 S-表达式写的 GLSL 代码。

开发者 guenchi 把这个项目叫 Goeteia,一个“自举”(self-hosting)的 Scheme 编译器,目标是浏览器厂商正在陆续落地的 WebAssembly GC 扩展。听起来是个漂亮的技术秀,但它想做的事并不新——把一门自带垃圾回收机制的语言搬进网页,这条路上已经有过阵亡者。

自举是什么,为什么现在有人做

Wasm GC 解决的是一个很具体的麻烦:Scheme、Java、OCaml 这类“托管语言”自己有垃圾回收器,过去想编译到 Wasm,得把整套运行时和 GC 一起打包进二进制,体积臃肿。Wasm GC 允许这些语言直接复用宿主浏览器的 GC,不必自带一套,包体能明显瘦身,和宿主环境的互操作也更顺。

Goeteia 的“自举”说的是:编译器本身用它自己能编译的 Scheme 子集写成,用自身重新编译自身,产出的字节码与原版比特级一致,官方称这一“不动点”在每次改动时都会跑测试验证。官网标榜的编译器体积压缩后约 70KB,加载后缓存,之后每次运行现场编译只要十几毫秒——如果这些数字站得住,确实是个轻量的活体编译器。

这条赛道已经死过一个

“把 Scheme 编译到浏览器”不是荒地。Hoot 是 Spritely Institute 做的同类项目,明确押注 Wasm GC,是目前有机构背书、还在持续更新的方向;Schism 是 Google 更早的实验之作,同样瞄准浏览器端 Scheme 编译,但眼下已经看不出还在积极维护;走另一条路的 BiwaScheme 干脆不编译到 Wasm,用 JavaScript 写了个 Scheme 解释器直接在浏览器跑。三者架构不同,命运也不同。

Scheme 编译到浏览器这条路,Google 已经试过一次,没走通。

Goeteia 落在这个格局里,是一个刚冒头、体量还没法和上面任何一个相提并论的个人项目。它要证明自己不是重复 Schism 的老路,需要的不只是一个自我循环渲染的首页。

Scheme 编译到 Wasm 赛道现状 Hoot Spritely Institute 出品,机构背书,持续维护 Schism Google 早期实验,目前已趋于停滞 Goeteia 个人开发者刚发布,自称自举,尚无独立验证 坐标待定:基础设施雏形,还是技术炫技

网站够炫,证据不够

官网上的技术清单写得很扎实:Wasm GC 原生对象、卫生宏、真尾调用、call/cc 借助 Wasm 异常处理提案实现——这些都是有分量的工程声明。但目前能核实这些声明的,只有 goeteia.dev 这一个信息源,没有找到独立的官方文档、教程或第三方代码审查。

社区这边的反应更冷清:目前只确认到一条标题匹配的 Reddit 帖子,没有对应的 Hacker News 讨论。一个能拿出 WebGL 粒子标题、S-表达式着色器这种精致演示的项目,外部关注度却薄成这样,值得多问一句:这究竟是在认真做基础设施,还是一件做工考究的个人技术展示。

  • 风险.核心技术声明目前只能从项目自身站点得到确认,缺乏独立验证,读者应把“自举”“字节级一致”当作官方说法而非既定事实。

guenchi 此前在 GitHub 上还做过 Schemacs,一个基于 Chez Scheme 实现的 Emacs,说明他在 Scheme 生态里不是新手,但这条经历本身不能替 Goeteia 的技术声明背书,个人业余项目半途而废的先例并不少见。

接下来该盯什么

Wasm GC 目前在主流引擎的支持已逐步铺开,但 Goeteia 官网也提到,自举编译需要 Chez Scheme,已编译好的 wasm 才能脱离 Chez 独立运行——这本身就是一个不算低的使用门槛。判断它是不是值得长期跟的东西,比看首页动画更有用的信号是:GitHub 上的 star 和 issue 活跃度会不会起来,manual 之外有没有更完整的文档补上,Hoot 或 Schism 的开发者社区有没有人出来回应或对比,以及除了渲染自己的首页之外,会不会出现别的真实应用场景。

  • 结论.在独立文档和第三方验证补齐之前,Goeteia 更适合被当作一个值得关注的个人实验,而不是可以押注的基础设施。
官网之外,能核实到的信息 0 独立官方文档 0 第三方代码审查 1 Reddit 讨论帖(无 HN)