Ruby開発チームは12月25日(日本時間)、プログラミング言語「Ruby」のメジャーバージョンアップ版「Ruby 3.0.0」をリリースしました(ruby-lang.org)。
Ruby 3.0.0は、パフォーマンスの改善、並行処理、静的解析という3つの目標を掲げて開発が行われたバージョンです。
まず、パフォーマンスの改善については、Ruby 3x3としてRuby2の3倍速くすることが目標として置かれ、Optcarotベンチマークでは実際に3倍の高速化を達成しています。さまざまな改善がMJITに加えられ、ゲームやAIなど、少数のメソッドをたくさん呼び出すことに費やすアプリケーションで性能が向上することが期待されます。
生成コードのサイズも大幅に削減されたものの、Railsのような様々なメソッドを満遍なく呼び出すタイプのアプリケーションでは性能を改善できる状態には至っていないとのことです。
次に並行処理に関しては、アクターモデル風の並行・並列制御機構である「Ractor」が試験的に導入されています。Ractor間では、ほとんどのオブジェクトが共有できないように設計されているため、スレッド安全なプログラムを容易に実行することができます。またI/Oなど処理をブロックさせる操作をフックするための「Fiber#scheduler」され、既存のコードを変更せずに、軽量な並行制御を実現することができるようになっています。
さらに静的解析に関しては、Rubyプログラムの型を記述するための言語である「RBS」が導入されました。クラスやモジュールの定義をファイルに書き出し、RBSをサポートしているタイププロファイラやその他ツールから利用することが可能となっています。
module ChatApp VERSION: String class Channel attr_reader name: String attr_reader messages: Array[Message] attr_reader users: Array[User | Bot] # `|` は `User` か `Bot` のインスタンスを表現する「ユニオン型」です def initialize: (String) -> void def post: (String, from: User | Bot) -> Message # メソッドオーバーロードを記述することもできます | (File, from: User | Bot) -> Message end end
新たに同梱された、「TypeProf」と呼ばれる型解析ツールを使用すると、型注釈の無い普通のRubyコードから、メソッド定義を解析し、型シグネチャのプロトタイプをRBSフォーマットで生成することもできます。
その他、1行パターンマッチの再設計や、findパターンの追加、Hash#exceptの組み込みなどさまざまな変更が行われています。
詳細な変更点はNEWSファイルやコミットログで確認可能です。
タイトル | Ruby | |
---|---|---|
公式サイト | http://www.ruby-lang.org/ja/ | |
ソフトアンテナ | https://softantenna.com/softwares/1964-ruby | |
説明 | オブジェクト指向スクリプト言語。 |