Ruby 3.3正式リリース。YJITコンパイラの大幅な性能向上、RubyのスレッドスケジューラとしてM:Nスレッドスケジューラ導入など新機能
Ruby開発チームは、2023年12月25日にRuby 3.3の正式リリースを発表しました。Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、今回も予定通りに新バージョンが登場しています。
Ruby 3.3では、Shopifyが中心となって開発を進めてきたJITコンパイラのYJITコンパイラの大幅な性能向上、Rubyに同梱されているdefault gemとしてPrismパーサの導入、よりコストの小さなM:Nスレッドスケジューラの導入など新機能が加わっています。
YJITコンパイラの大幅な性能向上
Rubyはもともとインタプリタとして登場しましたが、現在では実行速度向上のためにJITコンパイラを取り入れるようになっています。
Ruby 3.1でメインラインにマージされたYJITコンパイラは、ECサイト構築サービスを提供するShopifyが、大規模なRailsアプリケーションにおいてより高い性能向上を目指して開発したJITコンパイラです。
2022年末に登場したRuby 3.2に搭載されたYJITコンパイラは本番環境にも耐える品質になったとされ、実際にShopifyが本番に投入したことを表明。その後も性能と品質の改善が進められてきました。
今回のRuby 3.3に搭載されたYJITコンパイラでは大幅なパフォーマンスの改善のほか、メモリ使用量の大幅な改善、パフォーマンスの急激な低下を起こす可能性があるコードGCのデフォルトでの無効化、プロファイリング機能の追加などが行われています。
また、今回実験的な実装として、新たにRubyで書かれたJITコンパイラであるRJITがMJITに置き換えられて導入されました。
M:Nスレッドスケジューラ
新たにRubyのスレッドスケジューラとしてM:Nスレッドスケジューラが導入されました。これはM個のRubyスレッドをN個のOSのネイティブスレッドで管理するため、スレッドの生成管理コストを抑えることができるようになります。
ただしC拡張ライブラリの互換性に問題が生じる可能性があるため、メインRactorでのM:Nスレッドスケジューラはデフォルトでは無効にされています。
また、Rubyに同梱されているdefault gemとしてPrismパーサが導入され、Ripperの代わりに使えるようになりました。
その他、Ruby 3.3の詳細は発表文をご覧ください。
あわせて読みたい
マイクロソフト、初心者向け生成AI学習教材「生成AIアプリケーションの開発を始めるために必要な全知識を学べる12講座」を無償公開
≪前の記事
IT系コミュニティを不審者からどう守るか/GitHubが無停止でMySQLをアップグレード/開発中のヨドバシAPIが目指す機能、ほか。2023年12月の人気記事