「Ruby 3.3.0」公開、新たなパーサーやJITコンパイラを導入:さまざまな機能改善や性能向上を実現
オープンソースプログラミング言語「Ruby」の最新リリースとなる「Ruby 3.3.0」が公開された。
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.
関連記事
- Wasmer、「Wasmer JavaScript SDK」を発表
WebAssembly(Wasm)ランタイムを開発するWasmerは、WASI(X)アプリケーションをブラウザで簡単に実行するための新しいライブラリ「Wasmer JavaScript SDK」を発表した。 - 「Ruby 3.2.0」公開、WASIベースのWebAssemblyへのコンパイルをサポート その可能性は?
オープンソースプログラミング言語「Ruby」の最新メジャーリリース「Ruby 3.2.0」が公開された。WASIベースのWebAssemblyサポートが追加されている。 - 「Ruby 2」の3倍の高速化を目指した「Ruby 3.0.0」が公開
オープンソースプログラミング言語「Ruby」の最新メジャーリリース「Ruby 3.0.0」が公開された。新版の主な改善点はパフォーマンス改善、並行処理、静的解析の3点。