ruby-trunk-changes r46639 - r46660

今日は Binding#local_variables の不具合修正、Binding#receiver の追加の他、リファクタリングやテストの修正などがありました。

usa: r46639 2014-07-01 23:51:13 +0900

NEWS ファイルに r44392 で追加された Binding#local_variables メソッドについて追記しています。 [Feature #8773]

nobu: r46640 2014-07-02 01:18:41 +0900

r46636 で rubygems のテストで起動したダミーのサーバを停止するのに Thread#kill で殺していたのを WEBrick::HTTPServer#stop でちゃんと停止するようにしています。 SSL server はちゃんと殺してあげないとなにかがリークするんでしょうね。

nobu: r46641 2014-07-02 01:18:43 +0900

rubygems のテストで一時ファイルの close 漏れを修正しています。

svn: r46642 2014-07-02 01:18:48 +0900

version.h の日付更新。

nobu: r46643 2014-07-02 02:14:19 +0900

Binding#local_variables のテストを test/ruby/test_variable.rb から test/ruby/test_proc.rb へ移動しています。 Binding のメソッドなので、とのこと。

nobu: r46644 2014-07-02 02:14:22 +0900

Binding#local_variables が Binding オブジェクトが生成されたスコープの変数名リストを返すことを確認するテストを追加しています。 r44392 で追加した機能のテスト追加。 [ruby-core:56543] [Feature #8773]

nobu: r46645 2014-07-02 02:14:48 +0900

Binding#local_variables をトップレベルの Binding オブジェクトなどで呼び出すと無限ループに陥る不具合を修正しています。 envval を更新したのに env を変更していないため同じ env をぐるぐるループしていたようです。 [ruby-dev:48351] [Bug #10001]

nobu: r46646 2014-07-02 02:24:02 +0900

Binding#receiver メソッドを追加しています。 NEWS にも追記されています。 これは Binding オブジェクトのコンテキストでの self を返すものです。 [ruby-dev:47613] [Feature #8779]

nobu: r46647 2014-07-02 02:55:44 +0900

vm.c と vm_eval.c の関数のポインタ引数に const を付加する変更。

nobu: r46648 2014-07-02 02:57:37 +0900

bind_local_variables() から envval からローカル変数名リストを返す部分を rb_vm_env_local_variables() として vm.c の関数に抽出して、これを利用するようにリファクタリングしています。また rb_f_local_variables() からもループの前後の処理を local_var_list_init() と local_var_list_finish() として切り出しています。

charliesome: r46649 2014-07-02 03:21:22 +0900

ruby --dump=parsetree オプションで AST 構造をダンプさせるモードの時に必須キーワード引数があると SEGV する不具合を修正しています。 おお、これは 2.1 にも必要ですね。

hsbt: r46650 2014-07-02 10:41:02 +0900

標準添付ライブラリ logger から Logger::Application を削除しています。 logger-application.gem に追い出したのでそちらを使うようにとのことです。 [ruby-core:62724] [Feature #9860]

nobu: r46651 2014-07-02 15:26:02 +0900

標準添付ライブラリ webrickWEBrick::Utils::TimeoutHandler で生成した Thread の inspect メソッドを上書きして "WEBrick::Utils::TimeoutHandler" を文字列に含めるようにしていましたが、これをやめて WEBrick::Utils::TimeoutHandler::Thread という Thread を継承した(だけ)のクラスを導入してこれを使うことで、クラス名で識別できるようにしています。

usa: r46652 2014-07-02 15:39:06 +0900

tool/redmine-backporter.rb というブランチメンテナ用のツールで Backport 欄の REJECTED という値を WONTFIX に変更しています。おお、こんなツールがあるの忘れてた。

ko1: r46653 2014-07-02 15:47:10 +0900

gc_page_sweep() の戻り値を TRUE/FALSE を返すようにして、解放する slot があったら TRUE を返すようにしています。また空き slot がなかったら heap->free_pages から free_next へ page を取り出すようにしています。

nobu: r46654 2014-07-02 16:59:20 +0900

test-all で TempFile, Thead, fd などの leak をチェックする LeakChecker に puts メソッドを実装して MiniTest::Unit.output を経由して出力するようにしています。並列実行時に出力がまざらないようにするためだそうです。

nobu: r46655 2014-07-02 16:59:31 +0900

test/ruby/test_io.rb のテストで Thread の終了待ちをするようにしています。

nobu: r46656 2014-07-02 17:03:48 +0900

sprintf.c の GETNUM() マクロの定義の大部分を get_num() という関数に括り出すようにするリファクタリング

nobu: r46657 2014-07-02 17:03:51 +0900

sprintf.c で GETNEXTARG() の定義から posarg のチェック部分を check_next_arg() という関数に切り出しています。

nobu: r46658 2014-07-02 17:03:53 +0900

sprintf.c の GETPOSARG() からも posarg のチェック部分を check_pos_arg() という関数に括り出しています。

nobu: r46659 2014-07-02 17:03:57 +0900

sprintf.c の GETNAMEARG() マクロの定義から posarg のチェック部分を check_name_arg() に括り出しています。

nobu: r46660 2014-07-02 17:25:21 +0900

hash.c の rb_hash_initialize()、rb_hash_fetch_m()、rb_hash_default()、env_fetch() など 1つの省略可能引数をもつメソッドの実装で引数の取り出しに rb_scan_args() を使っていたのを、rb_check_arity() を直接呼んで引数の数のチェックを行なうだけに変更しています。 これはなぜでしょうね。 rb_scan_args() は汎用的なのでこれでいいような気がするのですが、効率のためかな。
やっぱり効率のためだったみたいです。 [ruby-core:63495] [Bug #10003]