- 提供定义宏的方法
提供宏对应的数据类型提供定义宏数据的核心语法- 提供易用的定义宏的方法
提供简易的定义函数的方法- 实现call/cc
- 支持bignum类型
实现rest型参数编译器进行尾递归优化- 用Scheme代码实现编译器
- 实现异常机制
- 用up-value实现闭包
- 实现non-local exit操作符,如block/return-from和catch/throw等。
- 提供对整数、浮点数均可用的四则运算函数。
修改整数的四则运算的Lisp名字
- 明确定义和区分局部环境和全局环境
将define实现为set!的语法糖实现mark-sweep的垃圾回收机制- 提供错误处理
- 参数个数不一致的错误处理
- 参数类型不一致的错误处理
变量未绑定的错误处理
- 多重返回值
- 提供多重返回值的数据类型
- 提供将多重返回值转换为列表的能力
给虚拟机的指令集添加一些常用的原语函数作为指令,加快调用。改造字节码,使得汇编器生成的代码在while...switch循环中更容易定位。加快虚拟机循环的执行速度,在汇编阶段完成code_name的判断。让每一个指令自己维护指令计数器为每一条指令计算存储所需要的字节数将列表形式的指令平坦化为多个字节的向量
- 函数的参数个数检查
- 可选参数的实现
- 关键字参数的实现
对mutual recursive的支持- 更方便的调试信息
将对字节码的汇编功能从虚拟机中独立出来支持UTF-8编码字符集- 将字符串转换为输入/输出流
- 提供类
- 提供用户自定义的新类型的功能
- 提供Lisp代码可用的哈希表
- 补充库函数
- 实现完整的number tower
- 正则表达式的支持
- 文件系统的处理
- 线程的支持
- 协程的支持
- 在实现中加载一个外部的Scheme源文件的功能
- 支持多种编码方式
将虚拟机的栈从列表的实现方式改为数组的实现方式