ruby-trunk-changes r40524 - r40529

今日は Method#to_proc などの Proc オブジェクトへの変換メソッドがトップレベルの lambda/proc メソッドに依存していたため再定義によって SEGV などを起こす危険があった不具合の修正がありました。

nagai:r40524 2013-04-30 03:33:28 +0900

r40519 で拡張ライブラリ tk の *.eucj という拡張子のドキュメントを *.jp という拡張子に変更したのを、さらに *.ja という拡張子に再変更しています。 [ruby-dev:47172] [Bug #8084]

nobu:r40525 2013-04-30 12:30:21 +0900

Kernel#lambda による Proc オブジェクトの生成の実装が rb_block_lambda() を呼んでいるだけだったので無駄な関数を削って直接 rb_block_lambda() を呼ぶようにメソッド定義を変更しています。

nobu:r40526 2013-04-30 12:30:23 +0900

r40525 の続き。 include/ruby/intern.h に rb_block_lambda() の prototype 宣言を追加しています。ついでに deprecated な API の rb_f_lambda() の prototype 宣言を削除しています。

svn:r40527 2013-04-30 12:30:25 +0900

version.h の日付更新。

nobu:r40528 2013-04-30 12:31:43 +0900

Method#to_proc が内部でレシーバを指定せずに lambda メソッドを呼ぶため、トップレベルで lambda が再定義されていると SEGV など意図しない挙動をしてしまうので、レシーバとして rb_mRubyVMFrozenCore という、VM が使う組込みのメソッドなどのレシーバとして使われる内部的なオブジェクトを指定するようにしています。 [ruby-core:54687] [Bug #8345]

zzak:r40529 2013-04-30 23:19:20 +0900

標準ライブラリ benchmark.rb の rdoc コメントに書かれているサンプルコードの繰り返し回数が現在の CPU だともっと早く終了してしまうようになっているので、回数を増やして、結果も(i5 1.7 Ghzで)再実行したもので置き換えています。