ruby-trunk-changes r51136 - r51141

今日は rubygems の並列テスト時の多重ロードが発生する現象の修正などがありました。

normal: r51136 2015-07-04 09:47:05 +0900

vm.c の rb_vm_mark() で RUBY_MARK_UNLESS_NULL() マクロを使って NULL チェックつきで mark 処理の呼び出しをしていたメンバのうち、NULL でありえないものはマクロを使わず常に rb_gc_mark() を呼び出すようにして分岐を押さえています。 また rb_vm_add_root_module() でも vm->defined_module_hash の NULL チェックの分岐をやめています。コードサイズの削減のためだそうです。

svn: r51137 2015-07-04 09:47:16 +0900

version.h の日付更新。

nobu: r51138 2015-07-04 10:43:01 +0900

rubygems のテスト用の Gem::TestCase の teardown で $LOADED_FEATURES をテスト前に戻すようにしていたのを、元々 $LOAD_PATH になかったのに追加されたパスからロードされた feature は削除するけどそれ以外のものは削除しないようにしています。 r51098 でも一部対応されてましたけど、$LOADED_FEATURES から削除されるせいで何度も同じファイルがロードされて定数の再定義の警告が大量に出ていたのに対する対策だと思います。 [ruby-dev:49031] [Bug #11222]

normal: r51139 2015-07-04 14:49:35 +0900

enum.c の zip_ary() および zip_i() で変数に volatile を付けて最適化避けをしていたところを RB_GC_GUARD() を用いた保護に変更しています。そもそも volatile つけすぎだったみたいですね。

hsbt: r51140 2015-07-04 19:39:17 +0900

Enumerable#sort のテストにブロックつき呼び出しのテストケースを追加しています。 https://github.com/ruby/ruby/pull/954

hsbt: r51141 2015-07-04 19:43:38 +0900

Enumerable#first の rdoc 用コメントの用例とテストに空の配列に対する呼び出しのケースを追加しています。 https://github.com/ruby/ruby/pull/955