Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能
Ruby開発チームは、2020年12月25日にRubyの最新版となる「Ruby 3.0.0」正式版をリリースしました。Rubyは毎年12月25日に最新版がリリースされてきましたが、今回は2013年にRuby 2.0が登場以来7年ぶりのメジャーバージョンアップとなります。
Rubyは以前から実行速度が遅いことが指摘されていたため、Ruby 3はRuby 2の3倍の実行速度を目指す「Ruby 3x3」(ルビースリーバイスリー)構想の下で開発が進められてきました。
そして今回リリースされたRuby 3では、「Optcarrot」と呼ばれるファミコンのエミュレーションによるCPU負荷中心のベンチマークで3倍の性能が達成されたことが示されました。
この性能向上は、ランタイムがインタプリタからJITコンパイラに刷新されたことが大きな役割を果たしています。
そしてJITコンパイラは今後さらに改善されていくことが示されているため、Rubyの実行速度は今後も上昇していくことが期待できます。
RBS言語による型の記述が可能に
Ruby 3のもう1つの大きな変化は、型の記述や静的型推論ツールが利用できるようになったことです。
型の記述では、型情報を記述するための「RBS言語」が用意されるようになりました。このRBSで型情報のコードを記述しておくことで、Rubyのコード中のクラスやモジュールに対して型情報を与えることができるようになります。
静的型推論ツールとしてバンドルされる予定なのがTypeProfです。Rubyのコードをこのツールに入力すると、推論の結果としてRBSで記述された型情報のコードが出力されます。
これによりRubyコード内のバグを発見する助けになるほか、出力されたRBSコードをそのまま、あるいは改変して型情報を与えるためのRBSコードとして用いることなども可能です。
ただしまだTypeProfは実験的な段階であり、現時点で完成度はあまり高くないとのことです。
Ractorによるスレッドセーフな並列処理の実現
スレッドセーフな並列処理を実現する制御機構として入るのが「Ractor」です。複数のRactorを作成すると、スレッドセーフな状態で並列に実行されます。
Ractor間のコミュニケーションはメッセージの送受信により可能ですが、Ractor間でのオブジェクトの共有を制限するために、複数Ractorでの実行時には、いくつかのRubyの機能に制限が入ります。
Ractorの仕様と実装はまだ発展途上であるため、Ruby 3では実験的機能として提供されていますが、マルチコアのプロセッサが一般的になっている現在、並列処理による効率的な処理の実現には大きな期待がかかっているといえます。
あわせて読みたい
HTTP/3はどうやってWebを加速するか? TCP、TLS、HTTP/2の問題とHTTP/3での解決策~Fastly奥氏が解説(前編)
≪前の記事
AWS、Mac miniをそのままクラウドに/AWS、クラウド障害をわざと起こす新機能/Apple M1対応Docker Desktopプレビュー登場ほか、2020年12月の人気記事