ruby-trunk-changes r42890 - r42897

今日は Refinements で using 後に Module#refine でメソッドを追加した時のメソッドキャッシュの不具合修正と、標準添付されている gem パッケージの gemspec がビルドする度に内容(日付)が変化しないようにする修正などがありました。

nobu:r42890 2013-09-09 09:15:03 +0900

tool/rbinstall.rb が標準添付されている gem ライブラリの gemspec の date のデフォルト値を RUBY_RELEASE_DATE から取得するようにしています。 元のチケットは test-unit の gemspec の date がビルドした時の日付になってしまうため、毎回 gemspec の内容が変化するので Debian のパッケージ化の時に困るというものでした。 [ruby-core:57072] [Bug #8878]

svn:r42891 2013-09-09 09:15:09 +0900

version.h の日付更新。

nobu:r42892 2013-09-09 14:17:13 +0900

complex.c と rational.c の TYPE() でオブジェクトの型で分岐していたところを RB_TYPE_P() を使うように修正しています。定番の書き換えですね。

nobu:r42893 2013-09-09 14:17:17 +0900

eval.c と vm_insnhelper.c での関数定義のコーディングスタイルの修正。

nobu:r42894 2013-09-09 14:17:19 +0900

vm_insnhelper.c で callinfo のメソッドエントリを取得するのを関数 vm_method_cfunc_entry() として(構造体のメンバをたどるだけですが)して、VM_DEBUG_VERIFY_METHOD_CACHE が真に定義されていたらここでメソッドのタイプをチェックして不正なタイプだったら rb_bug() を呼び出して abort させるようにしています。

nobu:r42895 2013-09-09 14:47:47 +0900

r42892 の書き換えてうっかり RB_TYPE_P() に渡す引数の変数名を変えてしまっていたところがあったので修正しています。

nobu:r42896 2013-09-09 16:56:02 +0900

Refinements とメソッドキャッシュの変更の(おそらく)組合せで、using で Refinements 用の Module を追加した後で Module#refine でメソッド定義を追加した時にメソッドキャッシュの無効化漏れで不正なメソッドエントリにアクセスして SEGV してしまっていた不具合を修正しています。 [ruby-core:57079] [Bug #8880]

akr:r42897 2013-09-09 21:33:36 +0900

Process.clock_gettime や Process.clock_getres, Time#strftime, 拡張ライブラリ socket の Socket::AncillaryData の rdoc で milli second や nano second などの SI単位系の表記の標準は millisecond や nanosecond のように空白を入れずに繋げる記法とのことで、それに倣って空白を除去しています。おおー勉強になります。 参考 URL: http://www.bipm.org/en/si/si_brochure/ https://www.nmij.jp/library/units/si/
この変更はコメントのみの変更なので [DOC] タグつきと扱うべきですね。