Skip to content

Latest commit

 

History

History
53 lines (52 loc) · 2.27 KB

File metadata and controls

53 lines (52 loc) · 2.27 KB

TODO

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