GNU Mes 0.28 发布:解释器重写之后,引导速度快了一倍
来源:ekaitz.elenq.tech — 2026-11
📋 概述
作者以新任共同维护者的身份发布了 GNU Mes 0.28,这也是他第一次以 GNU 维护者身份发版。成果包括:Mes 现在能用 M2-Planet、MesCC 与 GCC 三种方式编译;宏展开器改由 Scheme 实现,启动时不再需要手工保护 GC 指针;修掉 RISC-V 上的初始化汇编与 setjmp、longjmp;values 与 call-with-values 按 R7RS 做到合规,靠延续标记实现。性能上 amd64 的 fib 从 21.39 秒降到 8.66 秒,mescc-mes 从 103.39 秒降到 60.93 秒;引导时间还因为一个烦人的警告暴露了「每个文件被编译两次」而再快一倍。
🔑 核心要点
- Mes 现在可以用 M2-Planet、MesCC 与 GCC 三种方式编译,M2-Planet 路线因缺少 setjmp 而没有异常支持。
- 宏展开器由 Tim Sample 用 Scheme 从头重写,启动驱动缩成几行循环,gc_preserve 与 gc_release 全部消失。
- RISC-V 汇编初始化代码与 setjmp、longjmp 被真机测试暴露,另有 M2-Planet 构建下 strcpy 的已知崩溃未修。
- values 按 R7RS 合规:call-with-values 给当前帧打标记,values 查标记决定保留还是丢弃多余值。
- amd64 的 fib 从 21.39 秒降到 8.66 秒,mescc-mes 从 103.39 秒降到 60.93 秒;RISC-V 上同样腰斩。
- 作者本想加的一个「可能未绑定变量」警告意外暴露构建脚本把每个文件编译了两遍。
💡 金句
这个项目让我明白,有时候慢下来才是往前走的最好方式。
👍 0
👎 0
← 返回 Lobsters 首页