ruby-trunk-changes r44523 - r44527

今日は標準添付ライブラリ timeout の追加修正や、Object#hash と Hash が内部で呼ぶハッシュ関数が同じ結果を返すようにする修正、Module のメソッドで super を呼んでいるメソッドの UnboundMethod の不具合修正などがありました。

nobu: r44523 2014-01-08 13:12:39 +0900

標準添付ライブラリ timeout で throw - catch を使うようにしたため Enumerator (内部で Fiber を利用しているため、Fiber をまたいだ throw - catch が使えない)を利用中にタイムアウトすると throw に失敗してしまうので、throw が ArgumentError を発生させたらしかたないので例外発生を使うようにしています。 [ruby-dev:47872] [Bug #9380]

svn: r44524 2014-01-08 13:12:45 +0900

version.h の日付更新。

nobu: r44525 2014-01-08 15:55:24 +0900

r44125 で Hash の hash 関数に salt を加えるようにしたのと同様に rb_any_hash() で同じ結果を返してしまうケースを避けるために関数ポインタのアドレスを加える rb_objid_hash() という関数を追加して両者で利用するようにしています。 またこれは r44125 でデグレしてたってことみたいですが rb_obj_hash() と rb_any_hash() で同じ結果を返すようにするように修正しているそうです。 Hash の実装が内部的に呼ぶ時と Object#hash メソッドを呼ぶ時で異なっていると困るのでそれを修正しています。 [ruby-core:59638] [Bug #9381]

nobu: r44526 2014-01-08 17:13:56 +0900

RubyGems のテスト用のメソッド Gem#teardown で RbConfig::CONFIG["BASERUBY"] を書き換えてる可能性があるのでそれを書き戻す時に nil にしてしまうことがあって、その影響で mkmf.rb のテストが失敗していたので元々存在しなかった時は nil を格納するのではなくて BASERUBY のキーを削除するようにしています。

nobu: r44527 2014-01-08 22:53:18 +0900

Module のメソッド内で super を呼んでいる時の Method#call の不具合の修正として r44455 で method_missing を呼ぶようにしていたのを r44458 で revert して別の修正をしていましたが、やっぱり r44455 も UnboundMethod を bind して call した時に必要だったようで復活させています。これもテストケースは 2.0.0 で通るのですが、やっぱり入れておいたほうが良いかなぁ。 [ruby-core:59619] [Bug #9377]