ruby-trunk-changes r29846 - r29872

今日は文字列および文字エンコーディング関連の変更や不具合修正が主なものでした。

tadf:r29846 2010-11-22 01:51:12 +0900

date.rb でパフォーマンス改善をいくつか。あまり詳細に踏み込んでみていませんが、Date::Inifinity クラスというのを導入してそのインスタンスを利用していたところを Float::INFINITY を利用するようにしていたり(Date::Infinity クラス自体は残されています)、Date#hour, min, sec のためのメソッドに不要な精度の計算をしない版のメソッドを用意したりといった内容でした。

svn:r29847 2010-11-22 01:51:13 +0900

version.h の日付更新。

naruse:r29848 2010-11-22 12:01:45 +0900

ASCII の範囲の文字列しか保持していないけど文字コードが非 ASCII な文字列に 128 以上の整数を String#concat で追加しようとすると例外になっていたのを、自動的に ASCII-8BIT に変換するように変更しています。元ネタはこちらのブログのエントリみたいなので、UTF-8 の場合はちょっと違う結果になるみたいですね。 http://stackoverflow.com/questions/4236793/why-are-two-strings-with-same-bytes-and-encoding-not-identical-in-ruby-1-9 UTF-8 の場合は concat はできるけどその結果の文字列が String#size や String#[] に対して ASCII 文字列のように振る舞っていたようですね。
ただ追加しているテストの比較が String#concat は結果の文字列を返すのに対して 整数(1)になっているので fail になります。r29852 で修正されます。

naruse:r29851 2010-11-22 14:25:15 +0900

Time#zone が返す String のエンコーディングが常に ASCII-8BIT だったのを修正。locale に応じたエンコーディングにするように。

naruse:r29852 2010-11-22 14:28:22 +0900

r29848 のテストが修正されています。

nobu:r29868 2010-11-22 18:33:32 +0900

UTF_16(LE|BE), UTF_32(LE|BE) などのエンコーィングの文字列の inspect でエスケープする必要のある文字が含まれている時に化けるのを修正。

naruse:r29869 2010-11-22 18:35:08 +0900

文字コードの変更です。コメントによると Big5 および Big5-HKSCS というエンコーディングから CP951 を分離したとのこと。[ruby-core:33256] http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/

nobu:r29870 2010-11-22 18:45:46 +0900

r29842 の mkmf.rb の Objective-C/Objective-C++ 対応の再修正です。C++ 用のルールは既に生成しているのにさらに C と C++ 用のルールを生成しようとしていたので重複を省いています。

naruse:r29871 2010-11-22 20:35:55 +0900

r29869 の文字コードの変更でコミット漏れていた文字コード変換用のテーブルファイルを追加。

nobu:r29872 2010-11-22 21:30:58 +0900

r29868 で今度は default_external が us-ascii の時(?)文字列のエンコーディングが ASCII-compatible なものだった時に inspect した時の結果がおかしくなっていたので再修正。