ZJIT 已被合并到 Ruby 中

主要观点:ZJIT 已并入 Ruby,它是一个新的即时(JIT)Ruby 编译器,由 YJIT 的编译器团队构建,与 YJIT 有多处不同,如使用高级 SSA 中间表示、一次编译整个方法等。当前 ZJIT 处于早期开发阶段,架构上从接收 YARV 字节码到构建 IR、优化并生成机器码,包含 YARV 的相关介绍、HIR(高级中间表示)、LIR(多平台汇编器)和 Assembly(汇编)等阶段,未来计划实现侧出口等功能以运行 Ruby 测试套件和其他应用并进行优化。
关键信息:

  • ZJIT 并入 Ruby,开发者包括 Maxime Chevalier-Boisvert 等,自今年初开始工作。
  • ZJIT 与 YJIT 的不同之处,如 IR 表示、编译方式、类型分析等。
  • ZJIT 架构流程,从 YARV 字节码到 HIR、LIR 再到 Assembly。
  • 未来计划实现侧出口,以运行测试套件和应用并进行 profiling 和优化。
    重要细节:
  • YARV 是栈机,有局部变量,opt_plus有快速路径和通用操作。
  • HIR 像图,有基本块、指令等,add函数在 HIR 中的表示及优化。
  • LIR 是多平台汇编器,有更明确的细节,如寄存器操作等。
  • 汇编中展示了GuardTypeFixnumAdd的使用及效果。
  • 目前 Ruby 3.5 将同时包含 YJIT 和 ZJIT,未来会继续改进 ZJIT。
阅读 11
0 条评论