ruby-trunk-changes r50515 - r50524

今日は Numeric#positive?, Numeric#negative? といったメソッドの新規追加などがありました。

tenderlove: r50515 2015-05-17 04:02:38 +0900

Module#autoload で登録されたファイル名が "b" もしくは "b.rb" の時に autoload により require されたスクリプト内で対象の定数が未定義になるという挙動をする不具合を修正しています。チケットをみると(そして実際試してみても)、autoload で読み込むファイル名が "b.rb" の時は発生して "c.rb" だと発生しないのですが、どうやら拡張子の ".rb" の最後の "b" のところに誤ってマッチしてしまって load 済みの features の判定で拡張子を省略した記法の時の処理に不具合があったようです。 [ruby-core:69206] [Bug #11155]

nobu: r50516 2015-05-17 09:50:02 +0900

bootstraptest/runner.rb, sample/test.rb, test/lib/test/unit.rb で文字の色付け用の ASCII コードに空の引数を追加しています。コメントによれば色のリセットを追加しているそうで、こうするとリセット+指定という意味になるんですかね。

nobu: r50517 2015-05-17 09:50:11 +0900

r50516 に続き bootstraptest/runner.rb, sample/test.rb, test/lib/test/unit.rb でテストの結果の色付けのデフォルトのパターンを test/colors というファイルから読み込むようにしています。

normal: r50518 2015-05-17 14:56:07 +0900

拡張ライブラリ socket で Socket#accept_nonblock で作成した socket をにソケットオプション O_NONBLOCK を付加するようにしています。 [ruby-core:69129] [Feature #11138]

normal: r50519 2015-05-17 14:59:08 +0900

標準添付ライブラリ webrickWEBrick::GenericServer#accept_client で accept した socket に明示的に close_on_exec フラグを立てるようにしていたのをやめています。今は自動でセットされるため。 [ruby-core:69127] [Feature #11137]

nobu: r50520 2015-05-17 14:59:36 +0900

numeric.c の数値オブジェクト 0 との比較を compare_with_zero() という関数に切り出し、rb_check_funcall() を使って比較用メソッドの呼び出しに失敗する時は TypeError 例外を発生させるようにしています。

nobu: r50521 2015-05-17 14:59:58 +0900

test/ruby/test_numeric.rb で DummyNumeric という Numeric を継承したクラスをテストメソッド間で使いまわしていたのを、Class.new でその場で無名クラスを生成して利用するように書きかえています。

nobu: r50522 2015-05-17 15:01:47 +0900

Numeric#positive? と Numeric#negative? というメソッドを追加しています。 NEWS ファイルにも追記されています。 Complex はどうするんだろ…と思ったら undef していてメソッド自体持たないようにしているようです。うーむなるほど…。 [ruby-core:69173] [Feature #11151]

normal: r50523 2015-05-17 17:22:11 +0900

標準添付ライブラリ webrick で O_NONBLOCK や O_CLOEXEC フラグを立てるのに IO#fcntl を利用していたのを、IO#nonblock= や IO#close_on_exec= を利用するようにしています。 個別のメソッドを使ったほうがポータブルで余計な system call を回避してくれるとのこと。 [ruby-core:69126] [Feature #11136]

nobu: r50524 2015-05-17 23:47:36 +0900

テスト用の拡張ライブラリとそれを使ったテスト ext/-test-/bug-3662 と test/-ext-/test_bug-3662.rb をそれぞれ ext/-text-/notimplement と test/-ext-/test_notimplement.rb に改名しています。