ruby-trunk-changes r41813 - r41823

今日は configure での dtrace のチェックの強化、REXML の不具合修正、bignum.c のリファクタリング/修正などがありました。

akr:r41813 2013-07-07 10:22:55 +0900

bignum.c の bigsqr_fast() から BDIGIT の配列を扱う部分を bary_sq_fast() として切り出して、結果を格納する配列のサイズ zn が xn*2 を超えないことをチェックする assert() を追加しています。

svn:r41814 2013-07-07 10:22:59 +0900

version.h の日付更新。

nobu:r41815 2013-07-07 11:01:07 +0900

configure で dtrace の利用可否のチェックを強化しています。SUN D 1.11 で dtrace が probes が実際に存在するかチェックするようになっているため実際に probe を含む conftest_provider.h を生成してから dtrace を実行するようにしています。 [ruby-core:55826] [Bug #8606]

nobu:r41816 2013-07-07 11:01:27 +0900

r41815 の追加修正。provider の定義、生成などのコマンドで失敗した時も dtrace 利用不可と判定するように条件に全て加えるようにしています。 [ruby-core:55826] [Bug #8606]

kou:r41817 2013-07-07 11:35:13 +0900

標準添付ライブラリ rexml の REXML::Text#clear_cache というメソッドを抽出して使いまわすようにするリファクタリング

kou:r41818 2013-07-07 11:48:35 +0900

標準添付ライブラリ rexml の REXML::Text#<< が self を返すようにしています。メソッドチェインできるようにするためとのこと。 ChangeLog には test/rexml/test_text.rb の変更もあるように書かれていますが実際には lib/rexml/text.rb のみですね。

kou:r41819 2013-07-07 11:50:38 +0900

41818 の追加修正。 REXML::Text#<< で clear_cache を呼ぶようにしています。 こちらも ChangeLog には記載されているテストがコミットされていないようです。

kou:r41820 2013-07-07 11:55:10 +0900

r41818、 r41819 での REXML::Text#<< の仕様変更について NEWS ファイルに追記しています。

akr:r41821 2013-07-07 15:03:52 +0900

bignum.c の乗算のかなり大規模なリファクタリング+変更(多分)です。乗算のアルゴリズムを切り替えるのを bigmul1_xxxx() などの VALUE を引数に受け取る関数の段階で分けていたものを BDIGIT 配列を受け取る bary_mul() の中でサイズに応じて分岐するようにしています。また乗算の計算で二乗の計算を使えるケースでは bary_sq_fast() を使って高速な処理を使うようにするなどの最適化と、bary_mul1() の中で rb_thread_check_ints() を読んで割り込みチェックをするようにしたりしています。なぜこのポイントに挿入したのかはよくわかりませんが桁数の大きな Bignum の文字列化で早く割り込みできるようにしているのでしょうか。

akr:r41822 2013-07-07 20:02:47 +0900

bignum.c のこれまた大規模なリファクタリング。差分は大きいのですが、ChangeLog を信じるなら static 関数の参照関係に応じて関数定義の位置を入れ替えて前方宣言を減らしているそうです。 diff が 7000行以上あるのでまじめにチェックしていませんが。

akr:r41823 2013-07-07 20:04:07 +0900

bignum.c の不要なコメントの削除。