ruby-trunk-changes r32462 - r32476

来週はもう RubyKaigi 2011 が始まっているんですね。あっという間です。今日は細かな不具合修正やプラットフォームに依存した対応などがありました。

nobu:r32462 2011-07-09 08:37:08 +0900

IO#close で古い Mac OS X (10.5) で別のスレッドが読んでる file descriptor を close(2) するとデッドロックするので対処しているということで、その場合に限って close(2) する前にその fd で待っている Thread に例外を投げるための rb_thread_close_fd() を呼ぶようにしています。例外を投げるといっても必ずしもすぐ read(2) 等から抜けるとも限らないような気がしますが、close(2) に突入した後にでも別のスレッドが抜ければ大丈夫なのかもしれませんね。

svn:r32463 2011-07-09 08:37:12 +0900

version.h の日付更新。

nobu:r32464 2011-07-09 08:39:42 +0900

make test などで --disable-gems オプションつきで実行するように common.mk や win32/Makefile.sub を修正しています。

drbrain:r32465 2011-07-09 09:21:44 +0900

IO#lineno のドキュメントに lineno を増加させるメソッドについて追記しています。 [ruby-core:37221] [Bug #4902]

drbrain:r32466 2011-07-09 09:25:27 +0900

Enumerator#next_value のドキュメントのちょっとした添削です。 [ruby-core:36373] [Bug #4757]

marcandre:r32467 2011-07-09 11:41:14 +0900

Vector#magnitude の alias として Vector#norm を追加しています。また Vector の norm を 1 に正規化する Vector#normalize メソッドも追加。そして Vector#collect2 に似ているけど Array を返す Vector#map2 も追加しています。 [ruby-dev:43829] [Feature #4891]

kosaki:r32468 2011-07-09 13:18:09 +0900

process.c で exec する時に timer thread を停止しないといけない理由として古い Mac OS X では exec() が ENOTSUPP を返すからというコメントにバージョンを明記しています(10.5.x Leopard 以前)。

xibbar:r32469 2011-07-09 14:32:19 +0900

詳細は追っていませんが(パッチは1行なのですが) cgi/core.rb で multipart のパースが厳格すぎてエラーになることがあるのを修正しています。 [ruby-core:32510] [Bug #3866]

nobu:r32470 2011-07-09 15:59:23 +0900

win32 版の rb_w32_read(), rb_w32_write() の返り値の型を size_t から ssize_t (符号あり)に変更しています。 rb_async_bug_errno() での返り値チェックの警告で発覚したようですが、その他のところではたまたまうまいことキャストされてたり ssize_t 型の変数に代入されてたりで遮蔽されていたようです。 [ruby-core:37895] [Bug #5001]

nobu:r32471 2011-07-09 16:54:38 +0900

numeric.c で unsigned LONG_LONG の最大値を表す ULLONG_MAX が未定義だったら定義するように #define を追加しています。

nobu:r32472 2011-07-09 16:56:04 +0900

atomic.h の Windows 版の ATOMIC_OR() マクロの定義を _MSC_VER で分岐しています。 VC6 では _InterlockedOr() が利用できないそうです。

tadf:r32473 2011-07-09 17:18:57 +0900

date_core.c にて、Fixnum の引数の時のショートカットなどパフォーマンスに関するリファクタリングのようです。ちょっと詳細は読めてません。

tadf:r32474 2011-07-09 17:25:35 +0900

NEWS ファイルのインデント修正です。

tadf:r32475 2011-07-09 19:50:51 +0900

internal.h に math.c の関数のプロトタイプ宣言を追加しています。 また complex.c で(マクロの展開によって)個別に extern 宣言していたのを削除しています。

tadf:r32476 2011-07-09 20:06:43 +0900

internal.h の中で rb_rational_reciprocal() のプロトタイプ宣言は rational.c で定義されているのに numeric.c の関数群のところにあったので移動しています。