ruby-trunk-changes r32334 - r32356

今日もたくさんコミットがありました。メモリリークの修正やシグナル処理の不具合、openssl の機能追加に Matrix にも新規メソッドが追加されるなどしています。リリース前のラッシュ状態ですね。 1.9.3 のリリースにはまだしばらくかかりそうです。

ko1:r32334 2011-06-30 22:34:53 +0900

define_method で定義したメソッドの呼び出しと return で set_trace_func で登録した trace_func が呼び出されない不具合を修正しています。 また trace_func に渡される引数のメソッドIDとクラスがイベントの種類に依らず渡されるようになっているようです。 [ruby-core:35894] [Bug #4613]

ko1:r32335 2011-06-30 22:35:43 +0900

r32334 の ChangeLog のエントリにチケット番号の参照を追記。

ko1:r32336 2011-06-30 22:39:50 +0900

define_method で定義されたメソッドの呼び出しのベンチマークを追加しています。

emboss:r32337 2011-06-30 23:48:52 +0900

openssl にメソッドが追加されています。SSL_get_client_CA_list() ラッパとして OpenSSL::SSLSocket#client_ca が追加されています。また ossl_???_ary2k() という関数を定義するためにマクロを利用するようにリファクタリングしています。このマクロを利用して ossl_x509_name_sk2ary() の定義を追加しています。 [ruby-core:35461] [Feature #4481]

mrkn:r32338 2011-06-30 23:54:11 +0900

misc/ruby-mode.el でインデント計算の不具合を修正。

tadf:r32339 2011-07-01 03:24:50 +0900

ext/date/date_core.c で主に T_RATIONAL のオブジェクトだけど Rational ではないオブジェクトが渡された時の処理を追加しています。 CANONICALIZATION_FOR_MATHN というマクロが定義されていて mathn がロードされていると Rational や Complex を期待したメソッドが自動的に Integer やら Float にまるめられて(?)返ってきてしまうというのに対応している。
知りませんでした。mathn こわい。

svn:r32340 2011-07-01 03:24:55 +0900

version.h の日付更新。

tadf:r32341 2011-07-01 03:32:21 +0900

r32339 の ChangeLogtypo 修正。

matz:r32342 2011-07-01 03:34:09 +0900

r32283 の続きのようです。 Module#const_defined? の時にも Object を特別扱いしていたのをやめています。また BasicObject を明示的に Object の下の定数として定義するようにしています。

tadf:r32343 2011-07-01 03:49:04 +0900

r32339 の to_r から Fixnum が返ってきた時の処理を再修正。if の中で処理を完結するように書き変えてます。冗長になるので元のほうが良いような気がしますが……。

nobu:r32344 2011-07-01 05:20:32 +0900

余分な空白の除去と新規ファイルの svn property 設定だけです。

ko1:r32345 2011-07-01 07:29:34 +0900

r32244 の、実行を待ってるスレッドが居ない時にタイマースレッドが polling 動作をやめる修正で、signal がごく短い間隔で受信した時に、メインスレッドが1つめのスレッドを処理する間その次のシグナルは待たされるのに、そのままタイマースレッドが無期限スリープに入ってしまうために2つめのシグナルがメインスレッドに配送されず、Signal.trap で登録したハンドラが実行されないという不具合を修正しています。 rb_thread_t::exec_signal を廃止して、メインスレッドが直接 rb_get_next_signal() を呼んで次に実行すべきシグナルを取得するようにしています。 [ruby-dev:44005] [Bug #4950]

nobu:r32346 2011-07-01 08:03:23 +0900

タイマースレッドから呼ぶための rb_async_bug_errno() で利用する WRITE_CONST で write(2) の戻り値を利用していないので警告を除去するために (void) をつけるなどしています。

ko1:r32347 2011-07-01 08:23:32 +0900

インスタンス変数の get/set の時にインラインキャッシュの参照時に vm state version のチェックを追加しています。すぐに回収される特異クラスを生成する時に誤ったキャッシュ参照してしまう不具合を修正しています。 [ruby-dev:43902] [Bug #4926]

kosaki:r32348 2011-07-01 11:08:48 +0900

thread.c の do_select() で rb_fdset_t の変数がメモリリークしていたのを修正。 [ruby-core:37702] [Bug #4953]

naruse:r32349 2011-07-01 14:28:48 +0900

String#tr, String#tr! などでメモリリークしていたのを修正。 [ruby-core:37708] [Bug #4956]

marcandre:r32350 2011-07-01 15:10:40 +0900

Matrix#round メソッドを追加。各要素について round を呼ぶというものです。

marcandre:r32351 2011-07-01 15:13:35 +0900

Matrix の固有値分解する Matrix::EigenvalueDecomposition を追加して、Matrix#eigen または Matrix#eigensystem で計算できるようにしています。やあ、これは便利ですね。しかしこの規模のコードの追加となるとやはりテストが欲しいですね。

marcandre:r32352 2011-07-01 15:21:24 +0900

Matrix#** の引数に Float や Rational も受け付けるように拡張しています。ここで Matrix#eigensystem を使っているんですね。

marcandre:r32353 2011-07-01 15:23:12 +0900

Matrix を LUP分解する Matrix::LUPDecomposition というクラスを追加して Matrix#lup_decomposition または Matrix#lup で返すようにしています。
LU分解? と思いましたが LUP分解という別の操作でした。

marcandre:r32354 2011-07-01 15:33:14 +0900

NEWS ファイルの typo 修正

nobu:r32355 2011-07-01 18:48:34 +0900

ChangeLogtypo 修正と新規追加されたファイルの svn property 変更です。

kosaki:r32356 2011-07-01 19:39:12 +0900

ベンチマークスクリプトの修正。ループ回数が少なすぎるものは回数を増やしたりデータ量を増やしたりしています。また桁の大きな数をアンダースコアで区切って桁をわかりやすくしたりなど。