ruby-trunk-changes r39710 - r39725

今日は Queue の変更、正規表現エンジンの不具合修正、mkmf.rb の修正、resolv-replace.rb の不具合修正などがありました。

kosaki:r39710 2013-03-11 03:23:00 +0900

NEWS ファイルに Mutex#owned? は experimental じゃなくなったと明記しています。 2.0 の NEWS では experimental としてマークされていたので消えたり仕様が変わるかもよという扱いだったと思うのですが、2.1 で experimental でなくなったということは 2.0 でも堂々と使っていいってことですよね。

headius:r39711 2013-03-11 05:02:47 +0900

Enumerator::Lazy#drop_while のテストで drop_while に渡すブロックでの判定を i > 5 から i % 5 > 0 に変更しています。コミットログがないので意図ははっきりしませんが 5 で true になって 6 でまた false になるというパターンを試したかったんでしょうか。
JRuby のコミッタでもある headius (Charles Oliver Nutter) の初 commit です。 Welcome to ruby-core team, headius san!
ChangeLog は r39767 で追記されました。

kosaki:r39712 2013-03-11 08:01:07 +0900

tool/change_maker.rb という作業中のリポジトリで編集したファイルから ChangeLog に書くための雛形を生成してくれる Ruby の開発者用のツールがあるのですが、そこで Encoding::BINARY を参照しているところが 1.8 で動かないということで defined? でチェックするようにしています。

kosaki:r39713 2013-03-11 08:01:21 +0900

Queue#push, clear や SizedQueue#push は戻り値が内部で保持している Array を返してしまっていて、実装の中身が見えてしまっている&メソッドチェインできないため self を返すように修正しています。 [ruby-dev:47098] [Bug #7947]

kosaki:r39714 2013-03-11 08:03:52 +0900

r39713 の ChangeLog にパッチ投稿者への謝辞とチケット番号、ML番号の参照を追記しています。

nobu:r39715 2013-03-11 09:29:00 +0900

r39713 で追加したテストの部分の行末の空白削除。

nobu:r39716 2013-03-11 09:50:31 +0900

昨日の r39697 および r39701 で追加したテストに関連して ~user のような文字列で user というユーザが存在しなかった時の ArgumentError になるのを File.expand_path の第2引数に渡した時のテストも追加しています。 ちなみに第1引数がもともと絶対パスだと第2引数が不正なユーザホームディレクトリの指定でもエラーにはなりません。 [ruby-core:53168] [Bug #8034]

nobu:r39717 2013-03-11 11:53:47 +0900

mkmf.rb の MakeMakefile という Module で extended フックメソッドと initialize の再定義をして extend された時も include された時も init_mkmf を呼ぶようにしています。 さらに @libdir_basename というインスタンス変数を直接参照するのをやめ _libdir_basename というメソッドでアクセスして未定義だったらその時点で config を参照して作るようにしています。 いずれも --with-xxx-dir を使った時の不具合修正だと思います。前者だけじゃ足りなかったんでしょうか。 [ruby-core:53307] [Bug #8074]
[追記]トップレベルで include した時の対処のために必要だったそうです。[/追記]

naruse:r39718 2013-03-11 12:46:55 +0900

正規表現エンジンの Onigmo の最新版がマージされて、\Z が改行をまたいだ文字列の末尾にマッチしてしまう不具合と、//m モードの時の後方参照マッチの不具合を修正しています。 [ruby-core:53101] [Bug #8001] [ruby-core:53154] [Bug #8023]

nobu:r39719 2013-03-11 14:25:06 +0900

probes.d から probes.h を生成するためのツール tool/gen_dummy_probes.rb のコメントの検出や引数の個数を任意の個数に対応するなどの機能強化をしています。これって将来的なことのためにやっていることでしょうか。

naruse:r39720 2013-03-11 17:02:36 +0900

open の mode と option 引数で text mode, binary mode の指定が食い違っていた時はエラーにするのですが、mode が "rt" (テキストモード)で option に :text => false のように option 引数に false を指定された時の食い違いは検出できていなかったのでチェックを追加しています。 [ruby-core:42199] [Bug #5918]

naruse:r39721 2013-03-11 17:29:46 +0900

テスト用のユーティリティを定義する test/ruby/envutil.rb に with_default_external と with_default_internal という Encoding.default_external, Encoding.default_internal を変更してブロックを実行するヘルパーメソッドを追加しています。 そしてこれを利用して test/ruby/test_io_m17n.rb のテストを書き換えています。

naruse:r39722 2013-03-11 18:47:15 +0900

r39594 で Enumerator#with_index のインデックス計算に succ メソッド呼び出しを利用するようにした時に with_index に引数が渡された時の初期化に漏れがあったのを修正しています。

usa:r39723 2013-03-11 19:23:12 +0900

r39717 で新規追加した mkmf.rb のテストと元からある test/mkmf/base.rb のテストのクラス名が衝突していたので改名しています。

nobu:r39724 2013-03-11 21:12:15 +0900

r39723 での改名は revert して同じクラスを継承するようにしています。

akr:r39725 2013-03-11 22:47:04 +0900

標準添付ライブラリ resolv-replace.rb で TCPSocket#initialize の第3引数に明示的に nil が渡された時に引数が省略されたのと同じように振る舞うことで IPSocket.getaddress に不正な引数が渡されてエラーになるのを防いでいます。 open-uri と resolv-replace.rb の併用で起きるエラーの対処です。 [ruby-dev:47150] [Bug #8054]