ruby-trunk-changes r50566 - r50596

今日は Method#to_proc で作った Proc から binding で取得した Binding オブジェクトの不具合修正などがありました。また標準添付ライブラリ net/telnet が gem パッケージ化され、bundled gem (パッケージに同梱)になりました。

ko1: r50566 2015-05-21 04:11:47 +0900

RubyVM::InstructionSequence#to_a で catch table の例外タイプを Symbol に変換するところで、不正な例外タイプだった時の rb_bug() のメッセージが適当だったのでちゃんと表示するようにしています。

svn: r50567 2015-05-21 04:12:19 +0900

version.h の日付更新。

nobu: r50568 2015-05-21 07:03:06 +0900

BMethod(define_method でブロックで定義されたメソッド)の呼び出しに vm_invoke_proc() を利用していたのですが、safe_level のリセットのための EXEC_TAG() の利用は不要だったので別に vm_invoke_bmethod() という関数を定義して vm_invoke_proc() からは不要な分岐を削除するようにしています。

normal: r50569 2015-05-21 09:15:00 +0900

T_OBJECT や T_CLASS, T_MODULE など struct RVALUE のスロット内にインスタンス変数用のテーブルを持ってないオブジェクトは generic_iv_tbl というグローバルな st_table にオブジェクトの VALUE の値と対応したインスタンス変数用のテーブルの対応を持つようにしているのですが、この generic_iv_tbl がメモリ確保を遅延させるようになっていたのに、実際には起動するだけで常に必要になっていたので初期化時に確保してしまうようにして不要な分岐を消しています。 [ruby-core:69155] [Feature #11146]

nobu: r50572 2015-05-21 10:51:51 +0900

IO.select の rdoc 用コメントの文法などの修正。 https://github.com/ruby/ruby/pull/906

ko1: r50573 2015-05-21 11:00:31 +0900

proc.c の method_proc() という関数を method_to_proc() と改名しています。

nobu: r50580 2015-05-21 14:03:55 +0900

拡張ライブラリ digest に RB_GC_GUARD() の追加。

zzak: r50585 2015-05-21 15:40:27 +0900

private な attr_accessor を使うと警告メッセージが出ていたのを削っています。 [Bug #10967] https://github.com/ruby/ruby/pull/849

hsbt: r50586 2015-05-21 15:46:14 +0900

標準添付ライブラリ net/telnet が gem パッケージとして切り出され、bundled gem としてパッケージに同梱する形になっています。 [Feature #11083]

ko1: r50587 2015-05-21 16:54:44 +0900

proc.c の rb_method_get_iseq() を rb_method_iseq() に改名しています。

ko1: r50588 2015-05-21 17:01:59 +0900

r50587 で iseq.h ヘッダの関数の宣言部分の改名がコミット漏れしていたのを追加しています。

ko1: r50589 2015-05-21 17:02:31 +0900

r50587 の ChangeLog エントリにも iseq.h について追記しています。

ko1: r50590 2015-05-21 17:03:58 +0900

proc.c の method_get_def(), method_get_iseq(), method_get_cref() などをそれぞれ method_def(), method_def_iseq(), method_cref() などに改名しています。

hsbt: r50591 2015-05-21 17:29:32 +0900

標準添付ライブラリ matrix の Matrix.empty と Matrix#/ について追記しています。 [ruby-dev:48433] [Feature #10070]

ko1: r50592 2015-05-21 17:45:57 +0900

r48160 で Method オブジェクトから to_proc で Proc オブジェクト化したものの binding で取得した Binding オブジェクトの receiver を修正した時に、この Binding オブジェクトの eval を呼ぶと rb_bug() になっていた不具合を修正しています。 Method が呼ばれた時に作られるのに似た、しかし別の rb_env_t を作成して利用するようにしています。 [Bug #11163]

ko1: r50593 2015-05-21 18:01:44 +0900

iseq.c, iseq.h, method.h, proc.c, vm_method.c で rb_block_t* や rb_iseq_t* の変数や引数に const を付加しています。

nobu: r50594 2015-05-21 20:28:55 +0900

r50592 で書きかえられた Method から作った Proc の binding のテストで Binding#local_variables で local_variable_set で追加した変数が取れるというチェックを追加しています。

naruse: r50595 2015-05-21 20:39:15 +0900

configure.in の dtrace のチェック部分で使っていた cmp コマンドの -b オプションは GNU 拡張らしいので cmp -s を利用するように変更しています。

ko1: r50596 2015-05-21 20:52:21 +0900

proc.c と vm.c のインデント修正のみ。