ruby-trunk-changes r37701 - r37710

今日は Solaris 版の DTrace 対応および Complex()/Rational() の文字列パースの修正、String#to_i などの文字列整数化でのアンダースコアの扱いの変更などがありました。また Windows 版の File.expand_path の再修正もありました。

tadf:r37701 2012-11-17 23:57:22 +0900

Complex() が受け付ける文字列での表現に符号が複数ついていても受け付けていたのを修正しています。

tadf:r37702 2012-11-18 00:19:55 +0900

Rational() と Complex() の文字列パースを正規表現を用いていたのを C 言語で記述した PEG っぽいパーサで解析するように変更しています。

svn:r37703 2012-11-18 00:20:00 +0900

version.h の日付更新。

tadf:r37704 2012-11-18 00:51:55 +0900

Complex() で文字列の極座標表現(たとえば "1@2" と書くと長さ 1 で θ=2 の仰角の複素平面上のベクトルに対応する複素数になります)のパース時に "@" のあとに数値以外のものが来ても単に無視して θ=0 とするようにしています、がこれはすぐ次の r37705 で再修正されています。

tadf:r37705 2012-11-18 02:03:52 +0900

Complex() で極座標表現の "@" の後に数値じゃないものがあった時の処理を再修正していますが、よくみると結果を "n@0" と θ=0 相当にして返しているものの返り値が 0 になっていていずれにしてもエラーになっていました。 ここの修正は何の意味があるんでしょう。

luislavena:r37706 2012-11-18 02:53:21 +0900

r37700 の Windows での File.expand_path でのワイルドカードがあった時の修正でワイルドカードの検出の条件が逆転していたのを修正しています。 [ruby-core:49451] [Bug #7374]

tadf:r37707 2012-11-18 09:26:15 +0900

complex.c と rational.c でそれぞれに空白文字のスキップする処理を関数に切り出すリファクタリングをしています。

tadf:r37708 2012-11-18 09:35:06 +0900

Complex() や Rational() で Complex/Rational を生成するのに CANONICALIZATION_FOR_MATHN が定義されていると(デフォルトで定義されている) rb_{complex,rational}_new2 は虚数部が0だったり分母が1だったりするとFloat や Integer に丸められてしまうので rb_{complex,rational}_raw2() を呼ぶように修正しています。

ngoto:r37709 2012-11-18 17:24:24 +0900

Solaris での DTrace 対応です。 Solaris ではかなり仕組みが異なるみたいで probes.o というオブジェクトファイルを生成してリンクするみたいです(参考リンク http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html )。また configure で --{enable,disable}-dtrace で DTrace サポートを明示的に指定できるようにしています。その他 *BSD での DTrace のサポートのチェックもなにかしているようですが詳しく読んでいません。

tadf:r37710 2012-11-18 20:55:34 +0900

文字列の整数変換を行う rb_cstr_to_inum() で整数の桁区切りに使うアンダースコアが複数個並んでいたら弾いていたのを第3引数 badcheck が偽の時は 1つのアンダースコアがあるのと同等に扱うようにしています。 String#to_i の時はチェックなしにしているので "1__1".to_i はこれまで 1 だったのが 11 を返すようになります。これは NEWS 書くべきかなぁ、かなり微妙なところですが一応マイナーながら非互換なので憶えておきましょう。