Hacker News 中文摘要

RSS订阅

一个纯Scheme的Web编程工具 -- A pure scheme web programming tool

文章摘要

Goeteia是一个纯Scheme语言构建的自托管编译器,能将Scheme代码在浏览器中编译为WebAssembly并实时渲染页面,支持WebGL粒子云等交互功能。

文章总结

Goeteia是一个用纯Scheme语言构建的、自托管的WebAssembly编译器,专为WebAssembly GC时代设计。它通过npm安装,核心功能是在浏览器内将Scheme代码实时编译为WebAssembly并渲染页面。该页面本身由Goeteia编译,标题是一个WebGL粒子云,用户可编辑代码并运行。

Goeteia的主要特点包括: - 自托管:编译器用自身编译的Scheme子集编写,自托管构建的输出字节一致,并通过CI检查。 - 原生Wasm GC对象:使用i31ref、GC结构体等,无需JavaScript影子堆。 - 卫生宏:支持syntax-rules和syntax-case,通过重命名实现卫生性。 - 真实闭包与尾调用:使用类型化函数引用,支持变参和apply,尾调用高效。 - call/cc与dynamic-wind:利用Wasm异常处理提案实现逃逸延续。 - 响应式Web栈:包括sx模板、响应式信号、HTML渲染器和JS FFI。 - 3D与WebGL:支持Three.js和原始WebGL,着色器以s表达式编写。 - Scheme间通信:后端为Scheme时,RPC使用s表达式,保持精确数值。 - 库系统:支持R6RS风格的库文件,未使用代码会被修剪。

快速启动包括克隆仓库、运行测试、自构建编译器,以及编译和运行Scheme模块。编译后的模块可在支持Wasm GC和尾调用的引擎上运行,如Node 22+、Chrome、Firefox、Safari和wasmtime。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. Scheme在浏览器中的优势(评分:无,作者:guenchi)

    • 支持浏览器内自托管和卫生宏
    • 通过宏扩展处理HTML/CSS
    • 使用S表达式与服务器通信
    • 关键引用:"Self hosting in browser with hygienic macros" / "handle HTML and CSS like Scheme (Expand with macro)"
  2. AI时代JavaScript的局限性(评分:无,作者:compacct27)

    • JavaScript缺乏静态可验证性,DOM操作易静默失败
    • TypeScript和框架只是权宜之计
    • Scheme虽难读难写,但AI可将其作为编译目标,提供可靠性
    • 关键引用:"it's just not a terribly statically verifiable language" / "Scheme is ugly to read...but with the new way..maybe we can try"
  3. 现有替代方案(评分:无,作者:trescenzi)

    • Hoot项目已实现Scheme在WebAssembly中运行
    • 关键引用:"Hoot already exists and does a very good job of running scheme in web assembly"
  4. 技术特性与问题(评分:无,作者:bramadityaw、koolala、papaver-somnamb、genxy)

    • 正面:内置Three.js(koolala)、减少JS体积(papaver-somnamb)、38.2kB/75ms性能(guenchi)
    • 负面:编辑光标错位bug(bramadityaw)、AI写作风格令人反感(genxy)
    • 关键引用:"Pretty slick it has Three.js built in" / "the AI writing is a turn off"

平衡性总结: - 支持者认为Scheme在浏览器中能解决JavaScript的可靠性问题,且性能优秀 - 反对者指出实际使用存在bug,且AI生成内容风格不佳 - 现有项目Hoot已提供类似功能,但本项目仍有独特优势(如内置Three.js)