ruby-trunk-changes r41587 - r41603

今日は Windows 版での dl の不具合修正のほか、bignum.c のリファクタリングGC のプロファイル情報の収集の修正などがありました。

akr:r41587 2013-06-23 23:10:07 +0900

include/ruby/defines.h で BDIGIT に関するマクロ群が未定義の時だけ定義するようにしています。テストを簡単にするためとあるので、外から(コンパイルオプションとか -include でヘッダを指定するとか) BDIGIT の型を変更して再コンパイルするのを容易にするためとかそういうことかと思われます。

akr:r41588 2013-06-24 01:05:15 +0900

bignum.c のマクロ BIGUP() で引数の型のサイズが BGIDIT_DBL より大きい時のことを考慮するようにしています。またその他変数の型を修正しています。

svn:r41589 2013-06-24 01:05:21 +0900

version.h の日付更新。

zzak:r41590 2013-06-24 02:43:10 +0900

win32/README.win32 の英文法の修正。 https://github.com/ruby/ruby/pull/334

nobu:r41591 2013-06-24 02:46:05 +0900

win32/README.win32 の行末の空白除去。

zzak:r41592 2013-06-24 02:46:50 +0900

Array#zip の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/337

zzak:r41593 2013-06-24 02:55:15 +0900

Array#reject の rdoc 用コメントのサンプルコードの間違いを修正。 https://github.com/ruby/ruby/pull/336

tarui:r41594 2013-06-24 07:58:01 +0900

gc.c の gc_prof_timer_start() から次のプロファイル情報を格納するレコードの準備処理を gc_prof_setup_new_record() として分離しています。使っているところも呼び出しを分けただけなので今のところこの関数の分離には実効的な意味はなさそうです。また after_gc_sweep() で総 malloc サイズの情報をクリアする前にプロファイル情報に格納するようにしています。これまでちゃんと情報が取得できていなかったみたいですね。

nobu:r41595 2013-06-24 08:01:06 +0900

41594 の行末の空白除去。

kazu:r41596 2013-06-24 10:29:59 +0900

r41552 の ChangeLog エントリのインデント修正。

charliesome:r41597 2013-06-24 20:31:21 +0900

compile.c をはじめ各所で文字列オブジェクトの RSTRING_PTR() を rb_raise() のフォーマット文字列の %s に対応するデータとして渡していたところを PRIsVALUE(%i) を使って文字列オブジェクトそのままを渡すように変更することで、コンパイラ最適化による GC mark 漏れで文字列オブジェクトが回収されてしまい危険を回避しています。

charliesome:r41598 2013-06-24 22:03:35 +0900

eval.c と eval_error.c でも warn_print_str() などで指示子 "%s" に文字列オブジェクトのバッファのみ渡していたのを PRIsVALUE(%i) を使って文字列オブジェクトをそのまま渡すようにしています。

shirosaki:r41599 2013-06-24 22:39:08 +0900

拡張ライブラリ dl の DL::CFunc#call でキャスト不足のため sizeof(DLSTACK_TYPE) が sizeof(long) よりも大きい環境(mswin-x64)で SEGV を引き起こしていたのでキャストを追加して修正しています。

shirosaki:r41600 2013-06-24 22:39:12 +0900

RubyGems のテストで ruby が make install でインストールされていないと失敗するテストを、テスト用に生成する extconf.rb で $ruby をビルドディレクトリの ruby を使うことで回避しようとしているようです。 [ruby-core:53265] [Bug #8058]

shirosaki:r41601 2013-06-24 22:39:15 +0900

拡張ライブラリ gdbm のテストで fork を使わなくしたので最近実行するようになったテストのうち flock() の実装の差異のため Windows 版でエラーになっていたテストを mswin/mingw ではスキップするようにしています。

shirosaki:r41602 2013-06-24 22:39:17 +0900

標準添付ライブラリ rinda のテストでも Windows 版ではサポートされていない Socket::Ifaddr の ifindex を使っていたので、ここで NotImplementedError が発生したら Addrinfo#ipv6? を使うチェックに切り替えるようにしています。

akr:r41603 2013-06-24 23:31:49 +0900

bignum.c の integer_unpack_single_bdigit() で負値の時の上位ビットを 1 で埋める処理を BIGLO() マクロを利用するように書き変えるリファクタリング