ruby-trunk-changes r37655 - r37662

今日は主に Array#bsearch, Range#bsearch メソッドの追加と mswin64 での不具合修正などでした。

mame:r37655 2012-11-15 00:53:50 +0900

Array#bsearch と Range#bsearch という二分探索で要素を検索するメソッドが追加されています。要素はあらかじめソート済みであることが要求されます。 要素をブロックパラメータとして yield が呼ばれ、その結果を用いて大小比較をするのですが、ブロックが返す値が true/false の時と整数の時(正、負、0 で大小を示す)で異なる動作をします。 true/false (要素の値が探索する引数の値より小さければ false, 同じか大きければ true) を返す場合はブロックが true を返す最小の(つまり最初の)要素を返します。true を返す要素がひとつもない時だけ nil を返します。ブロックが整数を返す場合は 0 を返す要素を返します。 0 になる要素が複数あった場合はそのうちのどれかが返されます(最初の要素とは限らない)。要素数が大きい時に効率的な探索ができますがちょっと使いかたにくせのあるメソッドですね。プログラミングコンテストのお供に。 [ruby-core:36390] [Feature #4766]

svn:r37656 2012-11-15 01:03:04 +0900

version.h の日付更新。

zzak:r37657 2012-11-15 11:37:05 +0900

man ruby の英文の修正です。

zzak:r37658 2012-11-15 13:22:44 +0900

man pages の英文の修正、copyright 表記の日付の変更などです。

ko1:r37661 2012-11-15 22:42:27 +0900

VM の global entry を表す GENTRY という型の定義を rb_num_t から VALUE に変更しています。LLP64 モデルの mswin64 でSEGV していたようです。 [ruby-dev:46483] [Bug #7332]

mame:r37662 2012-11-15 22:50:55 +0900

r37655 で入った Array#bsearch と Range#bsearch の不具合修正と rdoc の修正です。 switch 文の break 文忘れで意図せず fallthrough していたのや、Range#bsearch でブロックが整数を返した時の判定が間違っていたところなどを修正しています。 [ruby-core:49364] [Bug #7352] [Feature #4766]