Ruby 3.0正式版リリース。「Ruby 2の3倍速」到達、型の記述、スレッドセーフな並列処理など新機能

2021年1月4日

Ruby開発チームは、2020年12月25日にRubyの最新版となる「Ruby 3.0.0」正式版をリリースしました。Rubyは毎年12月25日に最新版がリリースされてきましたが、今回は2013年にRuby 2.0が登場以来7年ぶりのメジャーバージョンアップとなります。

fig

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では実験的機能として提供されていますが、マルチコアのプロセッサが一般的になっている現在、並列処理による効率的な処理の実現には大きな期待がかかっているといえます。

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本