ruby-trunk-changes r30874 - r30884

本日は文字列を返すメソッドの Encoding が少し変化するような変更がありました。空の文字列を置換したり連結した時のルール、それから Array#join や Hash#inspect の結果の Encoding の決まりかたが変わっているようです。

usa:r30874 2011-02-15 09:51:50 +0900

r30869 の Windows 環境での "@" 文字をコマンドラインに入れた時のテストで find を利用しているのを findstr を使うようにしています。find は unix の find コマンドと同名だからだそうです。以前もそういうのありましたね r29767

svn:r30875 2011-02-15 09:51:52 +0900

version.h の日付更新。

naruse:r30876 2011-02-15 16:08:12 +0900

String#gsub でマッチ部分を空文字列で置き換えた時に、置換文字列のエンコーディングではなくレシーバの文字列のエンコーディングを保持するようにしています。 [ruby-core:35141]

naruse:r30877 2011-02-15 16:08:15 +0900

Encoding.compatible? は第一引数が空文字でもその Encoding を優先するようにしています。これにより文字列を連結した時などの結果のエンコーディングが変化する場合があります。

("".encode("UTF-8") + "aaa".encode("EUC-JP")).encoding #=> <Encoding:UTF-8>

naruse:r30878 2011-02-15 16:08:18 +0900

配列の要素にその配列自身を含んだオブジェクトが格納されている時に Array#inspect で作られる "[...]" という文字列がなぜか taint されていたので、それをやめて普通の taint されていない文字列を返すようにしています。

naruse:r30879 2011-02-15 16:08:20 +0900

Hash#inspect の結果の文字列の Encoding が最初のキー を inspect した結果の Encoding を使うようにしています。

naruse:r30880 2011-02-15 16:08:24 +0900

Array#join も最初の要素を to_s した文字列の Encoding を返り値の文字列に使うようにしています。

naruse:r30881 2011-02-15 16:14:00 +0900

String#[]= で Encoding が変化しないというテストを追加しています。[ruby-core:35142]

naruse:r30882 2011-02-15 16:24:49 +0900

Marshal.dump の rdoc の typo 修正。[ruby-core:35016]

kosaki:r30883 2011-02-15 19:44:58 +0900

r30872 で revert された r30621 を再修正してまた conftest の間は -Werror などの warnflags を無効にしています。warnflags のバックアップする位置が悪くて消えてしまっていたのを修正しています。 [ruby-dev:43203]

akr:r30884 2011-02-15 20:35:35 +0900

r30880 で recursive_join に渡す引数の配列のサイズを1つ増やしたのに変数宣言を増やしていなかったので修正。