ruby-trunk-changes r30252 - r30286

今日はバリエーション豊かなコミットがありました。fork でかたまることがある不具合修正(応急措置らしいですけど)が入っているあたりが主なところでしょうか。

kosaki:r30252 2010-12-20 19:25:02 +0900

native_thread_destroy(pthread 版)で gvl_cond の破棄漏れを修正。

kazu:r30253 2010-12-20 20:06:19 +0900

__id__ と object_id が BasicObject に追加(移動)されたことを NEWS ファイルに追記。

akr:r30270 2010-12-20 23:13:12 +0900

node.c の関数マクロの引数にかっこをつける修正です。

kosaki:r30271 2010-12-20 23:49:18 +0900

SystemExit 例外(exit した時に発生する例外)の success? メソッドの判定で単に EXIT_SUCCESS(たいてい0)と eixt status を比較していたので、ちゃんと WIFEXITED や WEXITSTATUS を利用するようにしています。

kosaki:r30272 2010-12-21 00:16:41 +0900

fork した子プロセスでデッドロックするのに対する応急措置として fork 後にメインスレッド以外を殺す処理の時には native_thread_destroy を呼ばないようにしています。[Bug #4169]
これで TestPTY#test_getpty_nonexistent のテストが固まるのが直るかなーと思いましたがまだ固まっていました(@RHEL4 Xeon X5570)。

svn:r30273 2010-12-21 00:16:42 +0900

version.h の日付更新。

kosaki:r30274 2010-12-21 00:20:17 +0900

rb_thread_t::interrupt_lock の破棄を native_thread_destroy() からプラットフォーム共通の thread_cleanup_func() の中に移動しています。

kosaki:r30277 2010-12-21 00:40:07 +0900

r30271 の SystemExit#success? の修正で Windows(WIFEXITED, WEXITSTATUS マクロのない環境)でコンパイルエラーになってしまうので対応。

tarui:r30280 2010-12-21 01:45:08 +0900

Windows のコンソールのバグでマルチバイト文字の読み込み(?)で指定よりも長めの文字列が返ってきてしまう不具合の修正。r29980 でとりあえずの対応をしたものの再修正。io.c で読み込み先の文字列のバッファサイズ設定を +1 バイト拡張している模様。 "we have to discuss how to do this one byte" とあるのでまだ最終版ではないかも。[ruby-core:33460]

nobu:r30283 2010-12-21 06:10:24 +0900

r30241 と r30243 で入れた meth(& lambda{body}) を meth{body} に変換してしまう処理を revert しています。
これはおそらくささださんが [ruby-dev:42790] でこのパッチに反対を表明したためでしょう。

nobu:r30284 2010-12-21 06:25:49 +0900

rexml のテストで、ソケットをオープンする時にポート番号を決め打ちにしていたり、一時ファイルとして "/tmp" のパスを固定で書いていたり(Tempfile を使うように修正)するため、プラットフォームや環境によって失敗してしまうのを対処しています。[ruby-dev:42827] [ruby-dev:42828]

akr:r30285 2010-12-21 07:39:55 +0900

pack.c の関数マクロの引数にかっこをつける修正です。ついでに関数マクロの呼び出し方で間違えているところがあったのも修正。

nobu:r30286 2010-12-21 12:45:21 +0900

ビルドプロセス難しいです……。
TARGET_ARCH のチェックのためにコンパイルする時に a.out に実行体を出力するのをやめています。conftest に出力しているのですが、その後の rm では conftest.* のマッチで削除しているので conftest が削除されなさそうなのは OK なんでしょうか。
また enc/Makefile.in で make clean での作業ディレクトリの削除の記述を変更しています。削除対象自体は多分追加はされていないと思います。