2024 年的棱柱

主要观点:Ruby 3.3.0 中添加了名为Prism的新标准库,是 Ruby 语言的解析器,有 C 库和 Ruby 库两种形式,历经多年发展,经历了多个版本和众多项目的演变,目前已被众多 Ruby 实现和工具采用,尽管 CRuby 迁移困难,但官方解析器 API 已确定为PrismAPI。
关键信息

  • 1993 年 Ruby 创建,早期用[Yacc]生成解析器,1994 年 CRuby 0.06 用[Yacc]写 C 解析器,当时是树遍历解释器;1995 年 CRuby 0.95 有手写递归下降解析器的待办事项;2000 年 Dave Thomas 创建[nodeDump]项目;2001 年 Jan Arne Petersen 开始[JRuby]项目,同年 Aoki Minero 发布[Ripper]库,后被合并到 CRuby;2003 年 CRuby 1.8.0 出现解析器 API 待办事项;2004 年[Ripper]合并并切换到[Bison],Ryan Davis 发布[ParseTree]库,后被[ruby_parser]取代;2007 年 CRuby 1.9.0 发布,合并[Ripper],有两个解析器;2012 年[mruby]创建;2013 年[parser]创建,2013 年[TruffleRuby]开始,2017 年[typedruby]创建,2018 年 CRuby 引入[AST]模块,2019 年 CRuby 引入模式匹配,2019 年[Natalie]创建,2020 年[PicoRuby]创建,2022 年开始[Prism]项目,2023 年[LRama]加入 CRuby,[Prism]相关工作持续推进。
    重要细节
  • [Prism]设计新语法树,创建新解析器,集成到生态系统项目,有多个翻译层方便其他解析器迁移;
  • 生态系统外项目如[Natalie]、[JRuby]、[TruffleRuby]等已完成迁移或在实验迁移;
  • CRuby 迁移困难,有量级、兼容性、竞争等因素,目前[Prism]已被采纳为官方解析器 API 但未成为默认解析器。
阅读 19
0 条评论