ruby-trunk-changes r45739 - r45745

今日は Symbol GC での Symbol.all_symbols で sweep 予定の Symbol を触ってしまう不具合の修正や、標準添付ライブラリ tmpdir で require "etc.so" の LoadError を無視するように戻す変更などがありました。

kazu: r45739 2014-04-29 04:35:39 +0900

r45735 の fstatvfs(2) を利用する条件が間違っていたのを修正しています。

kazu: r45740 2014-04-29 04:35:42 +0900

File::Statfs で利用できるメソッドを決めるための構造体メンバの存在チェックを struct statfs と struct statvfs で別々に結果を利用していたのを statfs_t のようにどちらの型を利用するかであらかじめ HAVE_STRUCT_STATFS_T_F_FSTYPENAME/HAVE_STRUCT_STATFS_T_F_TYPE といった定数を定義しておいてこれを参照するようにしています。その他 File::Statfs 関連の条件コンパイルの条件を修正しています。

ktsj: r45741 2014-04-29 10:25:36 +0900

r45492 と同様に Symbol GC での LazySweep で sweep 前の Symbol を拾ってしまうのを rb_gc_resurrect() で救うのを Symbol.all_symbols の実装の parse.y の symbols_i() でも実施しています。以前 rubyspec でおかしな動きをしていたのはこれが原因かもしれないですねー。

ktsj: r45742 2014-04-29 10:35:22 +0900

test/ruby/test_symbol.rb の Symbol GC 用のテストメソッド名の typo 修正。

akr: r45743 2014-04-29 12:51:13 +0900

標準添付ライブラリ fileutils で require "etc" に失敗した時に fu_get_uid, fu_get_gid を別途定義していましたが、拡張ライブラリ etc は常にビルドされるようになったので rescue 節ごと削除しています。

akr: r45744 2014-04-29 14:19:38 +0900

標準添付ライブラリ tmpdir で miniruby の時に require "etc.so" が失敗するのを、テストで $LOADED_FEATURES にあらかじめ "etc.so" を入れておく workaround で回避した r45707, r45711, r45717 などを revert して、lib/tmpdir.rb では require "etc.so" の LoadError を無視する rescue 節を復活させています。

kazu: r45745 2014-04-29 17:42:07 +0900

r45744 の ChangeLog エントリの書式を修正しています。