ruby-trunk-changes r37836 - r37843

今日は String#{lines, chars, codepoints, bytes} がブロック省略時に Enumerator でなく Array を返すようにする変更がありました。

knu:r37836 2012-11-25 02:14:06 +0900

ruby 本体のテスト用のライブラリ test/ruby/envutil.rb で定義されている assert_warning と assert_warn を入れ替えています。これまでは assert_warn が警告メッセージをチェックするもので、assert_warning が assert_warn を使いつつ $VERBOSE を false に設定するものでしたが、逆になっています。まぎらわしい名前ですね。 ruby 本体の関数に rb_warn() と rb_warning() というのがあって、それと対応するようにしているのではないかと思います。

svn:r37837 2012-11-25 02:14:13 +0900

version.h の日付更新。

knu:r37838 2012-11-25 03:46:15 +0900

String#lines, chars, codepoints, bytes などはこれまで each_{line, char, codepoint, byte} などと同じ実装で Enumerator を返していましたが、配列を返すようになっています。ただしブロックが渡されていたら yield する(そして self つまり文字列を返す)機能は残しています($VERBOSE == true の時は obsolete の警告が出力されるようにしているので、これも将来的には消されるかも)。 [ruby-core:45963] [Feature #6670] 結構大きな非互換ですね。

knu:r37839 2012-11-25 03:51:45 +0900

標準ライブラリ lib/set.rb に直接埋め込まれていた単体テストを test/test_set.rb として分離しています。

naruse:r37840 2012-11-25 16:39:59 +0900

r37838 による Enumerator::Lazy のテストへの影響を修正しています。 String#chars を使っていたところがあったので String#each_char を使うように修正。

ktsj:r37841 2012-11-25 19:45:46 +0900

NEWS ファイルに拡張ライブラリ iconv の削除について追記しています。

eregon:r37842 2012-11-25 22:28:59 +0900

r35858 の rdoc の修正の再修正。 英文法の修正や Array#take, drop が受け取る引数が 0 も受け付けるのに正の整数だけ受け付けると書かれていたのを修正しています。

shirosaki:r37843 2012-11-25 22:39:26 +0900

r37834 で WeakMap の修正のために rb_ary_delete() に似たような rb_ary_delete_same_obj() という関数を作ったのを、共通部分を括り出して rb_ary_delete_same() と関数名を変更するリファクタリングをしています。また戻り値に削除した値を返すようにしていたのを戻り値なしに変更しています。
やっぱり気になるんですけど、ary_resize_smaller() での rb_ary_modify() の位置は if の中でいいんじゃないでしょうか。実際に変更しなくてもメソッドを呼んだということでチェックしたほうがいいのかなぁ。そうかもしれませんね。