Ruby 2の3倍高速化を図った「Ruby 3.0.0」が登場

 Ruby開発チームは12月25日、最新のメジャーリリースとなる「Ruby 3.0.0」公開を発表した。Ruby 2の3倍高速化を図るパフォーマンスの改善などが特徴となる。

Ruby 3.0は2013年に最初のバージョンが公開された2系に続くメジャーリリースとなる。パフォーマンス、並行処理、静的解析の3つ大きく注力して開発を進めた。パフォーマンスでは「Ruby 3X3」として、OptcarrotベンチマークでRuby2の3倍高速化を達成することを目標に掲げた。

 2.6で導入したJITコンパイラ構造「MJIT」を強化し、少数のメソッドをたくさん呼び出すゲームやAIのアプリケーションなど一部のワークロードで性能を改善した。生成コードのサイズを削減したものの、Railsのようにi-cacheへの負荷が大きなワークロードでは負荷が大きくなるため性能を改善できる状態ではないとしている。

 並行処理では、並列処理機構として「Ractor」を実験導入した。Ractor間のやりとりはメッセージの送受信で行われ、オブジェクトを共有しないため、スレッドセーフの懸念なしに並行・並列制御を実行できるという。そのため、複数のRactor実行時にはRubyの機能に制限が入る点を留意している。並行処理ではまた、Fiber#schedulerを導入した。I/Oなど処理をブロックする操作をフックするもので、既存のコードを変更することなく軽量な並行制御が可能になるとしている。

 静的解析では、Rubyプログラムの型を記述するRBSが加わった。Rubyプログラムのクラス、モジュールの型を定義し、メソッドやインスタンス変数、定数と型などの関係を記述でき、TypeProfなど型チェックツールはこれを利用して、Rubyプログラムの解析精度を高めることができるとしている。Ruby 3.0ではRBSで書かれた型定義を処理するrbs gemを同梱した。また、型解析ツールのTypeProfも導入した。型推論をはじめとした用途に使うことができるという。

 そのほかにも、多数の新機能や機能強化が加わっている。

Ruby
https://www.ruby-lang.org/