ruby-trunk-changes r33369 - r33378

今日は have_framework が Objective-C の Framework のチェックで失敗する場合があることの対処や YAML::Store のリファクタリング?などがありました。

ktsj:r33369 2011-10-02 00:47:42 +0900

複数の Thread で Fiber を生成した時に Fiber に保存されている Thread オブジェクトがマーク漏れて SEGV するという不具合の対応です。 [ruby-dev:44566] [Bug #5386]

svn:r33370 2011-10-02 00:47:46 +0900

version.h の日付更新。

ktsj:r33371 2011-10-02 08:48:48 +0900

そして r33369 の修正は Thread のマーク時に自分自身を再度マークするようになっていたので、cont_mark で saved_thread をマークするのを rb_thread_mark() の呼び出しから rb_gc_make() の呼び出しに変更しています。
ただ r33369 で直ったってことは rb_thread_t::self がその構造体を wrap している Thread オブジェクト自体じゃないことがあるってことで、saved_thread は rb_thread_t をコピーしているのでまさにその状態なのでこれだと今度は saved_thread の内容がマーク漏れになると思います。 [ruby-dev:44567] [Bug #5386]

nobu:r33372 2011-10-02 10:03:30 +0900

mkmf.rb (extconf.rb) で have_framework を使った時に Framework が存在するか conftest.c というファイルをコンパイルしてみてチェックするのですが、Cocoa などはヘッダが Objective-C の文法のものを #include することがありコンパイルエラーになるので -ObjC というオプションを付けてコンパイルするようにしています。

nobu:r33373 2011-10-02 10:27:00 +0900

have_framework("Cocoa") のテストを追加しています。

nobu:r33374 2011-10-02 10:29:40 +0900

新規追加のファイルの svn property 変更。

ktsj:r33375 2011-10-02 10:56:51 +0900

ARGF.lineno= のサンプルコードでの typo を修正しています。

tenderlove:r33376 2011-10-02 11:29:27 +0900

YAML::Store#initialize の引数のインタフェースを superclass の PStore に揃えて super を利用するようにしています。……と、コミットログからは読めるのですが PStore#initialize(file, thread_safe=false) なので型が一致していないんですよね。super(file_name) にしたほうがいいんじゃないかな。

ayumin:r33377 2011-10-02 12:18:39 +0900

YAML::DBM の values, values_at, select などのテストケースを追加しています。DBM は順序を保存してくれるみたいですね。

ktsj:r33378 2011-10-02 21:08:40 +0900

r33396 および r33371 の Fiber のマーク漏れの修正によって make test-all が SEGV することがあるので一旦 revert しています。 [ruby-dev:44570] [Bug #5386]