ガベージコレクタを強化した「Ruby 2.2.0」がリリース
プログラミング言語「Ruby」の開発チームは12月25日、最新版となる「Ruby 2.2」を公開した。新しいガベージコレクタなどメモリ管理などが強化されている。
2013年2月に登場した2.0系の最新版で、同年12月にリリースされたバージョン2.1に続くものとなる。Ruby 2.1から1239のファイルが変更、新たに約98340行のコードが加わり、約61850行が削除されたという。
Ruby 2.2の特徴は新しいガベージコレクタで、これまで対象外だったSymbolオブジェクトを対象にできるようになった。これによってSymbolのメモリ使用量を削減できるという。なお、次期「Ruby on Rails 5」ではSymbolガベージコレクタが必須となり、Rubyはバージョン2.2以降に要件が変更されることになっている。
Ruby 2.1では世代別ガベージコレクタ(GC)アルゴリズムを「RGenGC」として導入したが、レスポンス時間が重要となるWebアプリケーションなどで問題があった。そこで、2.2ではメジャーGC向けにインクリメンタルガベージコレクタ機能を加えた。これにより、ガベージコレクタの一時停止時間を削減できるという。これについても、Railsベースのアプリケーションの運用に役立つとしている。
メモリ管理関連ではこのほか、実験的ながらconfigure.inでjemallocを使用するオプションが加わった。デフォルトでは無効になっており、今後の利用データや利用例を見てデフォルトで有効にするかを決定するという。同じく実験的機能として、systemおよびspawn関数におけるvforkの使用もサポートした。forkシステムコールであるvforkは、大規模なプロセスが外部コマンドを多数呼び出すような状況では速度の改善が見込めるが、まだよく理解されておらず危険な場合もあると警告している。まずは実験機能として導入し、今後性能の改善や利用についてのデータを見ていくという。
このほか、コアライブラリではUnicode 7.0のサポート、新しいメソッドの追加などがあり、バンドルされたライブラリではPsych 2.0.8、Rake 10.4.2、RDoc 4.2.0、RubyGems 2.4.5などにアップデートされている。テストフレームワークであるtest-unit 3.0.8やminitest 5.4.3はリポジトリから削除されたが、tarballにはバンドルされている。また、mathnは非推奨となった。