Ruby 3.1.0 釋出

banq發表於2021-12-26

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
  • 以及其他有用的功能,如記錄和重放功能、跟蹤功能等。

詳細點選標題

相關文章