ruby-trunk-changes r43083 - r43099

今日は Refinements と undef の組み合わせでの不具合修正や ObjectSpace にオブジェクトの確保された位置を取得できるようにする機能の追加などがありました。

nobu:r43083 2013-09-29 22:56:33 +0900

よくわかっていませんがシンボルというか ID の "=" つきのフラグの扱いで ID_JUNK に "=" をつける操作を rb_bug() の呼び出しにしていたのを NameError の発生に変更しています。

nobu:r43084 2013-09-29 22:57:09 +0900

r43083 の ChangeLog エントリが2重に書かれていたので1つ削除。

nobu:r43085 2013-09-29 23:45:46 +0900

r43083 のさらに追加の変更みたいですがやっぱり ID_JUNK なシンボルに "=" をつけるのを NameError ではなくて OK にしています。 Struct のためとのこと。もちろん普通に呼べないはずですが __send__ でなどで呼ぶのでしょう。

nobu:r43086 2013-09-29 23:51:03 +0900

array.c で rb_funcall() を rb_funcallv() を使うようにする変更をいくつか。このほうが性能が良いからとか。

kazu:r43087 2013-09-30 00:56:15 +0900

r43067 の ChangeLog エントリの typo 修正。

svn:r43088 2013-09-30 00:56:19 +0900

version.h の日付更新。

kazu:r43089 2013-09-30 00:58:09 +0900

r43053 の ChangeLog エントリの typo 修正。

shugo:r43090 2013-09-30 10:49:21 +0900

Refinements で追加されているメソッドを元の Class/Module で undef しようとした時に実行できてしまう(ただ、多分 Refinements が効いていると呼べる)不具合を修正して、元々存在しないメソッドを undef しないようにしています。このテストのコードを 2.0.0 で実行しようとすると SEGV が発生するので 2.0.0 にもバックポートが必要そうです。 [ruby-core:57466] [Bug #8966]

nobu:r43091 2013-09-30 11:18:11 +0900

r43090 の ChangeLog エントリの行末の空白除去です。
コミットメッセージが svn property 設定の時みたいになっているのでなにか誤動作しているかも?

ko1:r43092 2013-09-30 11:20:28 +0900

GC.disable した時に rest_sweep() を呼び出して LazySweep で sweep していないオブジェクトが残らないようにしています。 TracePoint のテストで問題が発生していたのを修正しているそうです。これはバックポート必要かなぁ。 RGenGC でいろいろ変わってるとはいえ LazySweep も TracePoint も 2.0.0 にあるので入れておいがほうがいいかも……。

nobu:r43093 2013-09-30 16:07:06 +0900

Makefile の RUNRUBY からコマンド部分を RUNRUBY_COMMAND という変数に分離しています。オプションを渡す時に RUNRUBY に追加してしまうと "--" の後なので渡せるように、という r42910 あたりの教訓を生かすためのリファクタリングかと思います。

nobu:r43094 2013-09-30 17:06:20 +0900

gc.c の gc_before_sweep() のデバッグメッセージ( if(0) の中なので実行されないですが)での fprintf() のフォーマット指示子を修正してプラットフォームによっては警告が出るのを修正しています。

ko1:r43095 2013-09-30 17:17:30 +0900

拡張ライブラリ objspace で ObjectSpace に trace_object_allocations_start, trace_object_allocations_stop, trace_object_allocations_clear というメソッドを追加して、オブジェクトの確保された位置をファイル名と行数で取得できるようにしています。内部的には既に実装されていたものを objspace で Ruby から使えるようにしたというような感じです。

ko1:r43096 2013-09-30 17:29:30 +0900

r43095 の ObjectSpace.trace_object_allocations の rdoc コメントに、実施すると速度が極端に落ちることを追記しています。

zzak:r43097 2013-09-30 23:02:31 +0900

r43095 の ObjectSpace.trace_object_allocations_start などの rdoc の体裁と文法の修正。

zzak:r43098 2013-09-30 23:04:14 +0900

r43096 の ChangeLog エントリの typo 修正。

zzak:r43099 2013-09-30 23:15:41 +0900

ext/objspace/objspace.c の rdoc 用コメントのマークアップや文法の修正などまとめて行なっているようです。