ruby-trunk-changes r32739 - r32757

今日は様々な変更がありましたが bigdecimal がプレインストールされた gem パッケージとして扱われるようになったのが機能的には大きな変更点です。

nobu:r32739 2011-07-29 23:53:47 +0900

引数を ruby の Array オブジェクトで受け付けてメソッドを呼ぶ rb_apply() という関数で*1、引数を alloca でスタックに確保した領域にコピーしてから rb_call() へ渡していましたが、引数の数が多いとスタックオーバフローの原因になるので配列のサイズが 256 以上の時は一時利用のために配列のコピーを生成して利用するようにしています。

nobu:r32740 2011-07-29 23:53:51 +0900

Array オブジェクトのサイズを指定した大きさに設定する関数 rb_ary_set_len() を追加しています。また method_missing() という関数で引数の配列を格納するために一時利用の Array オブジェクトを使っていましたが、size を設定し忘れていたので結局 GC の mark が不足する可能性があったので、配列の size をセットしています。

akr:r32741 2011-07-30 00:01:20 +0900

SecureRandom.random_bytes が最初に呼ばれた時に seed に使う pid として 0 固定にしていたのを $$ から自分の pid を取得して使うようにしています。 [ruby-dev:44270] [Bug #5105]

svn:r32742 2011-07-30 00:01:27 +0900

version.h の日付更新。

nobu:r32745 2011-07-30 00:21:48 +0900

ChangeLog の行末の空白を削っています。

nobu:r32747 2011-07-30 00:49:36 +0900

拡張ライブラリのソースコードから未使用のローカル変数の削除。

akr:r32748 2011-07-30 07:40:41 +0900

ext/socket/lib/socket.rb から未使用のローカル変数を削除。 [ruby-core:38600]

kosaki:r32749 2011-07-30 10:57:06 +0900

sigaltstack() でシグナルハンドラ専用のスタックを設定できる場合に Thread の生成時に確保してしまって、rb_register_sigaltstack() では sigaltstack() での登録だけするようにしています。また GC が走っても安全なので xmalloc/xfree での確保/解放を使うようにしています。 [ruby-core:38572] [ruby-core:38594]

kosaki:r32751 2011-07-30 11:22:51 +0900

シグナルハンドラ用スタックサイズに SIGSTKSZ*2 ではなくて MINSIGSTKSZ*2 を使うように変更しています。 [ruby-core:38607]

kosaki:r32752 2011-07-30 11:23:43 +0900

r32751 の ChangeLog エントリに ML 番号を追記。

mrkn:r32754 2011-07-30 14:31:45 +0900

拡張ライブラリ bigdecimal をインストール済みの gem パッケージとして扱うように gemspec ファイルを追加して tool/rbinstall.rb の gem として扱うライブラリリストにも追加しています。また bigdecimal のバージョンを 1.1.0 に更新しています。標準添付ライブラリの gem 化が徐々に始まったようですね。
バージョンの変更でテストが1つ失敗するようです。

suke:r32756 2011-07-30 17:36:47 +0900

Win32OLE のテストでスキップ用のメッセージをテストケースの実行時点で直接標準エラー出力に書き出していたのを skip メソッドを使うようにしています。

ngoto:r32757 2011-07-30 22:41:45 +0900

Time#strftime で %F の幅に大きな数を指定すると SEGV する不具合の修正です。 [ruby-dev:43284] [Bug #4456]

*1:昨日の fiddle もこれを使えばよかったのか