DummyScheme现在支持协程了,跟Lua里的coroutine一样的使用
dummyscheme是受Lua启发,一个基于寄存器式字节码虚拟机的、可移植、可嵌入的 Scheme 实现。
-
支持R5RS
-
字节码编译器,指令集基于寄存器
-
尾调用优化
-
一等公民延续(
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
-
coroutine
-
error / pcall / xpcall (inspired by Lua)