検索
ニュース

「Ruby 3.3.0」公開、新たなパーサーやJITコンパイラを導入さまざまな機能改善や性能向上を実現

オープンソースプログラミング言語「Ruby」の最新リリースとなる「Ruby 3.3.0」が公開された。

Share
Tweet
LINE
Hatena

 Ruby開発チームは2023年12月25日、オープンソースプログラミング言語「Ruby」の最新リリースとなる「Ruby 3.3.0」(以下、Ruby 3.3)を公開した。

 Ruby 3.3では、新しい「Prism」パーサーの追加、新しいパーサージェネレータ「Lrama」による「Bison」の置き換え、「RJIT」という新たなJIT(Just In Time)コンパイラの追加、「YJIT」の高速化など、さまざまな改善が行われている。

 主な改善点は以下の通り。

新しいPrismパーサーの追加

 default gemとしてPrismパーサーが導入された。Prismは、Ruby言語のためのポータブルで、エラー耐性のある保守可能な再帰下降パーサーだ。本番環境に対応しており、「Ripper」の代わりに使用できる。

 Prismは、CRuby(Rubyのレファレンス実装)に内部的に使用されるCライブラリと、Rubyコードを解析する必要がある任意のツールに使用できるRuby gemの2つのコンポーネントを持っている。

「Lrama」による「Bison」の置き換え

 BisonがLrama(リャマ)に置き換えられた。両者はいずれもLALRパーサージェネレータだ。LramaはRubyで実装されており、Bisonの入力ファイルと同じ形式のファイル(parse.y)を入力に取り、C実装のパーサー(parse.c)を生成する。パラメーター化ルール(?、*、+)がサポートされている。

「YJIT」の高速化

 RubyのJITコンパイラの一つであるYJITで、以下のような改善が行われた。

  • パフォーマンスの大幅な向上
  • メモリ使用量の大幅な改善
  • コードGCのデフォルトでの無効化
  • 「RubyVM::YJIT.enable」の追加により、実行時でのYJITの有効化が可能に
  • デフォルトで利用可能なYJITの統計が増加
  • プロファイリング機能の追加
  • より網羅的なテストと複数のバグ修正

「RJIT」の追加

 Rubyで書かれたJITコンパイラであるRJITが導入され、「MJIT」を置き換えた。RJITはUNIXプラットフォーム上のx86_64アーキテクチャのみをサポートする。MJITとは異なり、実行時にCコンパイラを必要としない。

 ただし、RJITは実験目的で導入されたものであり、本番環境ではYJITを引き続き使用することが推奨されている。

M:Nスレッドスケジューラの導入

 M:Nスレッドスケジューラが導入された。このスケジューラは、M個のRubyスレッドを、N個のネイティブスレッド(OSスレッド)で管理するため、生成管理のコストを抑えることができる。

 だが、C拡張ライブラリの互換性に問題が生じる可能性があるため、メインRactorでのM:Nスレッドスケジューラは、デフォルトでは無効にされている。メインRactor以外では、M:Nスレッドスケジューラは常に有効だ。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る