ruby-trunk-changes r32888 - r32896

今日は Solaris 対応、GC のパフォーマンス改善、date の GC 保護不足の修正などがありました。

drbrain:r32888 2011-08-09 09:18:18 +0900

Zlib::GzipReader.wrap, Zlib::GzipWriter.wrap のオプションについての rdoc を追記しています。

svn:r32889 2011-08-09 09:18:23 +0900

version.h の日付更新。

ngoto:r32892 2011-08-09 12:36:18 +0900

fiddle と dl のテストで利用する libc, libm のライブラリファイルパスの検出を Solaris 対応しているようです。 [ruby-core:38853] [Bug #5168]

ngoto:r32893 2011-08-09 12:56:14 +0900

r32892 の ChangeLog のエントリにチケット番号/MLへの参照を追記。

nari:r32894 2011-08-09 13:26:15 +0900

1.9.3 の新しい GC の実装 LazySweep では GC では mark をして実際の sweep は新しくオブジェクトを割り当てる時に heap (オブジェクトの実体である struct RVALUE のひとかたまりの配列)毎に sweep 処理して空きができたらそれを利用するようにしていますが、sweep すべき heap が存在していない時に mark 処理して再度空きを探す前に新たな heap を確保するかどうかの判定をして、新しい heap を確保した場合は mark はスキップして(新規に追加した heap は当然空の slot があるはずなので)空き slot を使うようにしています。 GC の性能を改善しているようです。 [ruby-dev:44285] [Bug #5127]
また sweep 予定の heap が残っている状態で再度 GC が走って mark 処理を開始する時(GC.start などで強制的に GC を走らせる場合)に mark をクリアする際に必要なら heap を追加するようにしています。

ngoto:r32895 2011-08-09 14:31:47 +0900

拡張ライブラリ fiddle(libffi のラッパ)の引数の扱いで big endianアーキテクチャの考慮が足りてなくて値が化けていた不具合を修正。 [ruby-core:32504] [Bug #3861]

nagachika:r32896 2011-08-09 23:00:49 +0900

拡張ライブラリ date で一時的に利用しているオブジェクトの GC 保護を追加してコンパイラの最適化で必要なオブジェクトが解放されるのを避けるようにしています。 [ruby-dev:44337] [Bug #5152]
まだ他にも残っていると思うのですが、しばらく再現環境を使える時間がなくてとりあえず確認したところだけの追加です。