Ruby 3.1.0 发布


Ruby 3.1 保持与 Ruby 3.0 的兼容性,并添加了许多功能。
 
YJIT:新的实验性进程内 JIT 编译器
Ruby 3.1 合并了 YJIT,这是 Shopify 开发的一种新的进程内 JIT 编译器。
最近 Shopify 贡献了许多 Ruby 改进来加速他们的 Rails 应用程序。YJIT 是一个重要的贡献,旨在提高 Rails 应用程序的性能。
尽管 MJIT 是基于方法的 JIT 编译器并使用外部 C 编译器,但 YJIT 使用基本块版本控制并在其中包含 JIT 编译器。使用 Lazy Basic Block Versioning (LBBV),它首先编译方法的开头,并在动态确定参数和变量的类型时增量编译其余部分。有关详细介绍,请参阅YJIT:用于 CRuby 的基本块版本控制 JIT 编译器
通过这项技术,YJIT 在大多数现实世界的软件上实现了快速预热时间和性能改进,在 railsbench 上高达 22%,在liquid-render上高达 39%。
YJIT 仍然是一个实验性功能,因此默认情况下它是禁用的。如果要使用它,请指定--yjit命令行选项以启用 YJIT。目前它也仅限于类 Unix 的 x86-64 平台。
 
debug gem:一个新的调试器
以前Ruby 捆绑了 lib/debug.rb,但它没有得到很好的维护,并且在性能和特性方面存在问题。debug.gem 完全取代了 lib/debug.rb。
现在捆绑了一个完全重写的调试器debug.gem。debug.gem 有以下特点:

  • 提高调试性能(即使使用调试器也不会减慢应用程序的速度)
  • 支持远程调试
  • 支持丰富的调试前端(现在支持VSCode和Chrome浏览器)
  • 支持多进程/多线程调试
  • 多彩的REPL
  • 以及其他有用的功能,如记录和重放功能、跟踪功能等。

详细点击标题