今日は 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: 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
標準添付ライブラリ webrick の WEBrick::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]