オープンソースプログラミング言語「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」の高速化など、さまざまな改善が行われている。
主な改善点は以下の通り。
default gemとしてPrismパーサーが導入された。Prismは、Ruby言語のためのポータブルで、エラー耐性のある保守可能な再帰下降パーサーだ。本番環境に対応しており、「Ripper」の代わりに使用できる。
Prismは、CRuby(Rubyのレファレンス実装)に内部的に使用されるCライブラリと、Rubyコードを解析する必要がある任意のツールに使用できるRuby gemの2つのコンポーネントを持っている。
BisonがLrama(リャマ)に置き換えられた。両者はいずれもLALRパーサージェネレータだ。LramaはRubyで実装されており、Bisonの入力ファイルと同じ形式のファイル(parse.y)を入力に取り、C実装のパーサー(parse.c)を生成する。パラメーター化ルール(?、*、+)がサポートされている。
RubyのJITコンパイラの一つであるYJITで、以下のような改善が行われた。
Rubyで書かれたJITコンパイラであるRJITが導入され、「MJIT」を置き換えた。RJITはUNIXプラットフォーム上のx86_64アーキテクチャのみをサポートする。MJITとは異なり、実行時にCコンパイラを必要としない。
ただし、RJITは実験目的で導入されたものであり、本番環境ではYJITを引き続き使用することが推奨されている。
M:Nスレッドスケジューラが導入された。このスケジューラは、M個のRubyスレッドを、N個のネイティブスレッド(OSスレッド)で管理するため、生成管理のコストを抑えることができる。
だが、C拡張ライブラリの互換性に問題が生じる可能性があるため、メインRactorでのM:Nスレッドスケジューラは、デフォルトでは無効にされている。メインRactor以外では、M:Nスレッドスケジューラは常に有効だ。
Copyright © ITmedia, Inc. All Rights Reserved.