首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

一个纯方案的Web编程工具

2026-07-12 1 阅读 约5分钟阅读 guenchi
分享:
字号:
除此之外的所有内容均由 Goeteia 渲染。下面的方案在浏览器中编译为 WebAssembly 并实时安装。正在加载...运行启动编译器...没有服务器编译此内容 - 页面携带整个编译器( goeteia.wasm ,〜70 KB gzipped,第一次加载后缓存),并且每次运行都会在〜15毫秒内重新编译上面的源代码。里面有什么自托管,到字节编译器是在它编译的Scheme子集中编写的。自托管构建会自行重新编译,并且输出是字节相同的——每次更改时都会以 CI 方式检查固定点,并且每个测试都会经历两个阶段。原生 Wasm GC 对象 Fixnum 是未装箱的 i31ref ,对和记录是 GC 结构,eq?是一个 ref.eq 。 JavaScript 中没有影子堆:主机提供两个字节流导入,仅此而已。卫生的宏语法规则和程序语法案例,带有防护板、嵌套省略号和 datum->syntax ,通过重命名在编译时解释器中运行,并具有卫生性。真正的闭包,真正的尾部调用带有快速每参数条目和每个闭包的通用条目的类型化函数引用 - 可变参数过程和 apply 很便宜,并且每个尾部调用都是 return_call 。 100M 迭代循环在常量堆栈中运行,时间约为 150 毫秒。 call/cc 和动态风 Escape 延续遵循 Wasm 异常处理建议:捕获时间复杂度为 O(1),正常路径花费一个 try 块,并且绕行器在退出时从内到外展开。响应式 Web 堆栈 (web sx) 模板基于细粒度(Web 响应式)信号、(Web html)渲染器和直接到达主机的(Web js)FFI - 此页面是用它构建的。 3D 和 WebGL(web 3)以 sx 构建 DOM 的方式构建响应式 Three.js 场景; (web gl) 通过命令缓冲区驱动原始 WebGL(每帧一次桥接调用),着色器在 (web glsl) 中编写为 s 表达式。上面的标题正是这样的:点阵字形,一个顶点着色器,一个绘制调用。 Scheme-to-Scheme,无编解码器当后端也是Scheme(Igropyr)时,请求和回复都是s-表达式 - (rpc "/rpc" '(add 1 2 1/2)) 返回 (ok 7/2) ,精确的比率完好无损。 (web fetch) 使其成为 Wasm JSPI 上的直接样式; (web ws) / (web sse) 推送数据流; (web json) 处理其他所有人。库 R6RS 样式(库...)文件,具有(导入(数学实用程序))解析,依赖关系优先;导出是建议性的,因为无论如何未使用的代码都会被修剪。快速开始 $ git clone https://github.com/guenchi/Goeteia $ cd Goeteia $ ./run-tests.sh # 每个测试,两个编译器阶段 $ ./build-self.sh # 自行重建编译器 $ echo '(define (fact n) (if (zero? n) 1 (* n (fact (- n 1))))) (fact 20)' > fact.ss $ node rt/compile.mjs goeteia.wasmfact.ssfact.wasm $node rt/run.mjsfact.wasm 2432902008176640000 编译的模块可以在具有 Wasm GC 和尾部调用的任何引擎上运行:Node 22+、当前 Chrome / Firefox / Safari、wasmtime。从源头引导需要ChezScheme;签入的编译器 wasm 无需它即可工作。
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱