BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Ruby 2.1.0リリース,新しいGCを提供

Ruby 2.1.0リリース,新しいGCを提供

原文(投稿日:2013/12/30)へのリンク

Ruby 2.1の公式リリースが公開された待望されていた多数の改善の中にはガベージコレクタの大幅な変更も含まれ,将来的なパフォーマンスの向上を期待させている。

Ruby 2.1のガベージコレクタは世代別ガベージコレクションを実装したもので,RubyではこれをRGenGC(Restricted Generational Garbage Collection)と呼んでいる。これによって,従来のバージョンで使用されていた “マーク&スイープ” 方式の実装は置き換えられることになる。2013年4月にRuby開発者のKoichi Sasada氏が行ったプレゼンテーションによると,Ruby開発者たちには,保護されたオブジェクトと安全でないオブジェクトを同一ヒープ上で扱うことのできるGCアルゴリズムを実装するという課題があった。

新しいGCを使用するために,既存のCエクステンションをすべて書き直すというのは現実的ではない。そのためRGenGCでは,実装の一部としてライトバリア(Write-Barrier)が使用されている。RubyConf 2013のプレゼンテーションでSasada氏が説明したように,RGenGCは A) 世代別GCをまったく実装しない(Ruby 2.0以前のように),B) すべてのCエクステンションの書き換えが必要な世代別GCを実装する,という2つの選択肢のどちらでもない,第3の方法を提供しているのだ。

RGenGCはパフォーマンスの向上を達成しながら,同時に既存のエクステンションとの高い互換性を実現している。一般的なオブジェクトであるArrayやString, Hash, Object, Numericなどはいずれもライトバリアなので,RGenGCシステムのメリットを享受することが可能だ。内部および外部ライブラリに関する今後の開発によって,将来的にはさらなるパフォーマンスの向上も期待できる。

新しいガベージコレクションシステムだけが改善点ではない。RDoc 4.1.0やRubyGems 2.2.0,他にもいくつかのライブラリが更新されている。2.1の変更点に関する完全なリストは,プロジェクトのGitHubページにあるリリースノートで確認できる。

この記事に星をつける

おすすめ度
スタイル

BT