ruby-trunk-changes r35860 - r35870

今日はみなとRuby会議01 に参加して発表してました。その件はまた資料整理してエントリにします。
そんななか正規表現のドキュメントのサンプルコード修正、ASCII-8BIT の文字列なのに不要な処理をして遅くなってた問題の対策、IPAddr の修正、Backtrace 関係のソースの整理などがありました。

drbrain:r35860 2012-06-02 06:35:05 +0900

doc/re.rdoc に正規表現のサンプルコードの修正をしています。 [ruby-core:45358] [Bug #6524]

svn:r35861 2012-06-02 06:35:10 +0900

version.h の日付更新。

drbrain:r35862 2012-06-02 07:05:46 +0900

doc/re.rdoc の正規表現のサンプルコードがバックトラックが大量に起きて遅いものだったのを書き直しています。「バックトラックが起きると遅いからこうするといいよ」という本文なのにサンプルがダメなままだったという。 [ruby-core:45359] [Bug #6525]

naruse:r35863 2012-06-02 17:02:23 +0900

長い文字列に 8bit 目の立っているバイトが含まれていると ASCII-8BIT (つまりバイナリ)のエンコーディングであってもそこから文字のバイト幅を検出する処理が入ってしまって gsub などが遅くなるという問題への対処です。エンコーディングUTF-8 とかだと必要な処理なのでしかたないのだろうと思うのですが、ASCII-8BIT の場合はチェック不要なので条件分岐を修正しています。 [ruby-dev:45688] [Bug #6509]

naruse:r35864 2012-06-02 17:52:55 +0900

そして r35863 で ASCII-8BIT の時の分岐を入れたのは別に入れなくてもよかったようなので削除しています。

knu:r35865 2012-06-02 18:18:32 +0900

IPv4 アドレスの数値の前に0埋めがあった時に IPAddr.new のチェックがエラーにするかどうかがプラットフォームによって違っていたので(Windows では例外、LinuxMac OS X では無視されていたそうです)、どのプラットフォームでも例外を発生させるようにしています。 [ruby-dev:45671] [Bug #6479]
また x:x:x:x:x:x:d.d.d.d といった IPv4 互換の(?) IPv6 アドレス表記を許可するようにしています。
また IPSocket.valid_v4? や IPSocket.valid_v6? といったクラスメソッドを private に宣言するようにしています。

naruse:r35867 2012-06-02 22:44:02 +0900

r35863 の文字の coderange チェックの条件修正のテストを追加しています。

ko1:r35868 2012-06-03 00:23:37 +0900

vm.c から Backtrace に関連する関数を vm_backtrace.c に分離するリファクタリングをしています。

svn:r35869 2012-06-03 00:23:41 +0900

version.h の日付更新。

nobu:r35870 2012-06-03 00:24:59 +0900

新規追加された vm_backtrace.c の svn:property 変更です。