Lightstorm: 极简 Ruby 编译器

主要观点:

  • 介绍了一个提前编译的 Ruby 编译器项目,原编译器近 90%完成,现精简为最小版本以验证假设。
  • 用 MLIR 桥接 Ruby VM 字节码和代码生成,目标为 C 语言以简化系统支持。
  • 阐述构建编译器的动机是为了提升跨平台游戏引擎中 Ruby 代码的运行速度。
  • 比较了编译器与解释器的工作方式,提出通过预编译消除 VM 中的加载、存储和分支来提升性能的假设。
  • 介绍了最小化编译器的实现方法,包括使用自定义 dialect 和 MLIR 进行转换,以及编译流程。
  • 通过基准测试展示了编译后的性能提升,约 30%的周期和执行时间减少,以及分支和加载存储的减少。
  • 讨论了未来的计划,将用编译的 Ruby 替换部分引擎代码以提升维护性。

关键信息:

  • 原编译器近 90%完成,现精简版本用 MLIR 至 C 语言。
  • 假设通过预编译消除 VM 元素提升性能。
  • 最小化编译器实现方式及编译流程。
  • 基准测试结果显示性能提升约 30%等。
  • 未来计划用编译 Ruby 替换部分引擎代码。

重要细节:

  • 游戏引擎用 C 和 Ruby 混合编写,开发完成后想预编译成机器码提升速度。
  • mruby 是 Ruby 典型解释器实现,其字节码示例及解释器循环。
  • 最小化编译器目标为兼容现有生态系统和运行时,支持易在 C 中表示的语言特性。
  • 用 simple-kpc 库捕获 CPU 计数器进行基准测试。
  • 编译器相关的链接如 GitHub 仓库等。
阅读 10
0 条评论