ruby-trunk-changes r66821 - r66830

今日は IO#ungetbyte や String#setbyte の引数に 0-255 の範囲外の整数を渡した時の挙動を変更して受け付けて下位のバイトの値を使うようにする変更などがありました。

naruse: r66821 2019-01-15 12:43:44 +0900

テスト test/ruby/test_regexp.rb で警告抑制のために assertion メソッドの呼び出しの引数にかっこを追加しています。

svn: r66822 2019-01-15 12:43:47 +0900

version.h の日付更新。

k0kubun: r66823 2019-01-15 13:02:53 +0900

AIX での MJIT のコンパイラオプションに -nodefaultlibs -nostdlib を渡してみる r66816 の変更を revert しています。うまくテストが通らなかったようです。

shyouhei: r66824 2019-01-15 15:41:58 +0900

r65802 や r65804 で IO#ungetbyte や String#setbyte の引数に渡された整数が 0-255 の範囲外だと RangeError を発生させるようにしましたが、やっぱり例外は投げずに 256 の mod にしてセットするようにしています。現実のアプリでこの挙動で問題があったらしいです。 元々の挙動も Bignum だと TypeError が発生してたみたいなので、元に戻すというより範囲外の整数を渡した時の仕様を明確化しつつ受付けることにしたという感じですね。 [ruby-core:91023] [Bug #15460]

nobu: r66830 2019-01-15 21:05:46 +0900

r66824 の再修正。整数を 0-255 の範囲に丸めるのに rb_int_modulo() や Integer#% メソッドの呼び出しをしていたのを rb_int_and() または Integer#& メソッドの呼び出しに変更しています。こっちのほうが Bignum で計算量が小さくなる可能性がある?