ruby-trunk-changes r34063 - r34071

今日は Psych の不具合修正、BigDecimal 対応、BigDecimal の不具合修正、Solaris での GC 保護修正などがありました。

nagachika:r34063 2011-12-18 09:38:35 +0900

test/ruby/envutil.rb の invoke_ruby の opt 引数には :timeout というキーで spawn で起動した子プロセスの終了を待つ時間の上限(10秒)を変更できるようになっていたのですが、実際にこのオプションを指定するとそのまま Kernel#spawn にも渡されてしまってエラーになってしまっていたので先に取り除いておくようにしています。

svn:r34064 2011-12-18 09:38:38 +0900

version.h の日付更新。

nagachika:r34065 2011-12-18 09:46:32 +0900

test_thr_kill というテストは稀に起きる現象のテストのため 2000 回繰り返しをしていて、シングルコアの古いマシンだととても時間がかかるのでタイムアウトを伸ばしています。

tenderlove:r34067 2011-12-18 12:05:02 +0900

Psych のパーサの修正です。日付のフォーマットの解析を厳密にして、日付っぽいけど実際の日付としては不正な文字列は、そのまま文字列として処理するようにしています。
しかしなんというか、記述内容によって String になったり Date になったりというのは難しい仕様ですね。

tenderlove:r34068 2011-12-18 12:16:05 +0900

lib/uri/common.rb の仕様の参照リンクを更新しています。

tenderlove:r34069 2011-12-18 12:44:09 +0900

Psych で BigDecimalYAML への dump/load をサポートするようにしています。

nobu:r34070 2011-12-18 14:34:34 +0900

拡張ライブラリではクラスは allocate クラスメソッドを定義して、未初期化のオブジェクトを生成する手段と initialize で初期化するのを分離して提供するのが今のやりかたなのですが(Marshal.load する時なども allocate が使われる) BigDecimalBigDecimal.new を定義する古い方法を使っていて独自の allocate メソッドを定義していないため、allocate を提供するのをやめています。 [ruby-core:41710] [Bug #5773]

ngoto:r34071 2011-12-18 18:58:31 +0900

vm.c vm_define_method() での RB_GC_GUARD() の保護が Solaris10 での Oracle Solaris Studio 12.2 だとうまく行かなかったようで少し位置を修正しています。 [Bug #5762] [ruby-dev:45000] [Bug #4178]
うーん、多分最後に miseq を利用している rb_add_method() の後ろに持っていったほうがいいんでしょうね。 iseq を複製していない時もガードしてしまいますが。