ruby-trunk-changes r31779 - r31824

昨日の Float#round の修正の続きと、テストやドキュメントの修正、および clang 対応の修正などがありました。

nagachika:r31779 2011-05-29 17:55:54 +0900

r31778 で flo_round() から rb_big_uminus() を利用するために internal.h に rb_big_umiuns() の prototype 宣言を追加していましたが、numeric.h で include していなかったので追加しています。

naruse:r31780 2011-05-29 23:14:38 +0900

webrick/https.rb で WEBrick::HTTPRequest#parse_uri が public になってしまっていたのを修正。 [ruby-dev:43575] [Bug #4773]

nobu:r31782 2011-05-29 23:21:37 +0900

test/date/* の svn property 変更。

nobu:r31783 2011-05-29 23:22:49 +0900

Float#round の処理で除算に使う数値の符号をかえています。がこれだと逆に負値になりそうです。

nobu:r31784 2011-05-30 00:49:07 +0900

bignum.c にて、未使用の変数を削除しています。

svn:r31785 2011-05-30 00:49:10 +0900

version.h の日付更新。

naruse:r31786 2011-05-30 01:49:14 +0900

ENV[]= で環境変数に "=" を含む変数名を指定した時にどうなるか、というテストを PLATFORM で netbsd/openbsd の時とそれ以外で分岐していたのを実際に実行してみて例外の補足で判断するようにしています。 NetBSD の最新版で挙動が変化した模様。
参考URL: http://togetter.com/li/22380

naruse:r31787 2011-05-30 02:01:27 +0900

FileUtils#chmod のテストで FreeBSD では通常ファイルに sticky bit を付与できないのでスキップしていたところは NetBSD でも同様だったようで条件に追加しています。

nobu:r31788 2011-05-30 07:06:54 +0900

r31783 を revert しています。

naruse:r31805 2011-05-30 10:28:37 +0900

int_pow() 関数(整数の累乗を計算する)で long 同士の乗算でオーバフローを検出するために一時的に乗算結果を格納する変数を volatile に宣言しています。
これは clang で -O オプションつけて最適化するとオーバフローを検出できないので volatile つけて乗算した結果を確実に利用するようにしているそうです。signed のオーバフローした結果は未定義なので最適化によって xy = x*z; xy/x == y のような検出は消されてしまう可能性があるようですね。勉強になるなー。

naruse:r31822 2011-05-30 15:53:21 +0900

同様に 乗算している所で結果を格納する変数に volatile を付けています。

naruse:r31823 2011-05-30 16:28:30 +0900

r31822 で変数の宣言がブロックの先頭でないところになってしまったのを修正。

usa:r31824 2011-05-30 20:23:36 +0900

r31642 で test_signal.rb の PLATFORM での分岐で mingwtypo で正しくスキップできていなかったのを修正しています。 [ruby-core:36550] [Bug #4798]