首页 > 开源 > dummyscheme,另一个 lisp/scheme 方言,支持 r5rs

dummyscheme,另一个 lisp/scheme 方言,支持 r5rs

OSChina资讯 2026-09-30 15:19 5 阅读 查看原文

受Lua启发,支持R5RS,基于字节码和寄存器寻址的Scheme 解释器

  • 字节码编译器,指令集基于寄存器
  • 尾调用优化
  • 一等公民延续(call/cc),multi-short、不限长度,用 callframe 的 copy-on-write 实现 (界定延续 delimited continuation 计划在不久的将来支持)
  • 扁平的 box value(受 Lua 启发),没有链条;被内层 lambda 捕获时把栈上的值装箱
  • 用 stack segment 技术做延续捕获和链遍历,思路来自 Chez Scheme
  • 增量分代 GC,两个半区(部分实现,目前未启用)
  • syntax-rules 卫生宏,也支持自定义省略号
  • 数值塔,支持 bignum
  • 行级调试信息,带源码位置跟踪
  • 类似 Lua 的可嵌入性和可移植性:与平台无关,容易集成进 C/C++ 宿主程序
  • r4rstest(加 SCHEME_STD_R4RS=1 编译)和 r5rs-tests 全部测试通过
  • 支持 dynamic-wind,与 call/cc 嵌套,可以从 dynamic-wind 的 thunk/body 里跳出去; 允许跳出 before 和 after,但跳进 before 和 after 并不禁止
  • values + call-with-values
  • hash-table(受 Lua 启发)
  • (make-hash-table)
    (hash-table-ref table key)
    (hash-table-set! table key val)
    (hash-table-for-each (lambda (key val) xxx) table)
    

项目地址:https://github.com/zhuzhonghua/dummyscheme