ruby-trunk-changes r50698 - r50717

今日は VM 回りのコード整理や mkmf の不具合修正、tk の不具合修正などがありました。

ko1: r50698 2015-06-01 03:53:45 +0900

GC::Profiler を利用するテストで assert_separately を利用する時のタイムアウトを 30 sec にのばしています。負荷が高いので時間がかかる可能性があるため。

ko1: r50699 2015-06-01 04:12:42 +0900

デバッグ用の関数 obj_info() に rb_obj_info() という wrapper 関数を作ってこれを gc.h で公開するようにしています。

ko1: r50700 2015-06-01 04:17:18 +0900

hash.c の has_extra_methods() からクラスの method entry テーブルに中身があるかどうかチェックする処理を class.c の rb_class_has_methods() という関数に切り出して公開関数にしています。

ko1: r50701 2015-06-01 04:23:32 +0900

ダミー用の VM スタックフレームを表す VM_FRAME_MAGIC_DUMMY という新しいタイプを追加しています。

zzak: r50702 2015-06-01 04:49:03 +0900

拡張ライブラリ date の DateTime と Time の使い分けについて rdoc コメントに追記しています。ためになるトリビアがありますね。また Markdown による rdoc になっています。ほほう。

ko1: r50703 2015-06-01 05:44:56 +0900

eval_intern.h で定義されていた cref の scope の操作マクロ SCOPE_TEST(), SCOPE_CHECK(), SCOPE_SET() を vm_method.c に rb_frame_visibility_test(), rb_frame_visibility_check(), rb_frame_visibility_check() という関数として定義しなおして、さらに rb_frame_visibility_set() は vm_intern.h で宣言して load.c で利用するようにしています(他の2つは static 関数)。

nobu: r50704 2015-06-01 07:32:14 +0900

拡張ライブラリ tk で ALLOC_N() でメモリ確保してから例外の発生する可能性のある処理をしていてメモリリークの可能性があるところを String オブジェクトを使ってバッファを作ることで GC 対象にして回収できるようにしています。 rb_str_tmp_new() という一時バッファを作るための専用の API もありますが、これを使わず rb_str_new(0, 0) を使ってるのは、拡張ライブラリなので古い ruby との互換性のためですかね。

zzak: r50705 2015-06-01 07:46:32 +0900

r50702 の rdoc 用コメントの見出しレベルの調整。

nobu: r50706 2015-06-01 08:06:25 +0900

r50703 でマクロから関数に定義しなおした rb_frame_visibility_check() で警告除去のため明示的なキャストを追加しています。

nobu: r50707 2015-06-01 08:07:49 +0900

r50702 で追記した DateTime の rdoc 用コメントで長い行を改行するようにしています。

nobu: r50708 2015-06-01 10:55:10 +0900

拡張ライブラリ tk で配列の配列にアクセスする時に中身の配列のサイズチェックを追加しています。

gogotanaka: r50709 2015-06-01 14:35:42 +0900

拡張ライブラリ csv の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/907

gogotanaka: r50710 2015-06-01 14:38:59 +0900

Enumerable#minmax の rdoc 用コメントの typo 修正。 https://github.com/ruby/ruby/pull/904

gogotanaka: r50711 2015-06-01 15:16:53 +0900

CMath.log2 に Complex を渡した時のテストを追加しています。

ko1: r50712 2015-06-01 15:44:16 +0900

class.c, struct.c, vm_method.c で method.h を不要に #include していたのを削除しています。

ko1: r50713 2015-06-01 15:48:07 +0900

internal.h の Class の実装に関連する構造体等の宣言を class.c についての部分に移動しています。

nobu: r50714 2015-06-01 18:46:41 +0900

標準添付ライブラリ mkmf の pkg_config で pkg-config コマンドの実行結果をログに出力しておくようにしています。
[ruby-core:69421] [Bug #11201] の報告を受けて pkg-config で何が起きているのかわかるようにしておこうということかと思います。

ko1: r50715 2015-06-01 19:26:05 +0900

vm_method.c の rb_method_entry_make() で r50691 で新規に導入した method entry のタイプ VM_METHOD_TYPE_ALIAS をメソッド再定義の警告の時の判定に追加しています。 alias で作ったメソッドは再定義しても警告しないんですね。
しかしなんか gc.c にゴミが入りこんでる…

ko1: r50716 2015-06-01 21:20:06 +0900

r50715 で入った gc.c のゴミを削除しています。

nobu: r50717 2015-06-01 22:01:52 +0900

標準添付ライブラリ mkmf の pkg_config メソッドで pkg-config コマンドが --libs-only-l オプションに対応していない時に ldflags から文字列操作で libs を得るように代替実装を追加しています。 [ruby-core:69421] [Bug #11201]