ruby-trunk-changes r63528 - r63540

今日は rubygems の 3.0.0.beta1 への更新、ruby スクリプトを parse した結果の AST を取り出せる RubyVM::AST の追加などがありました。

hsbt: r63528 2018-05-30 22:01:35 +0900

rubygems 3.0.0.beta1 をマージしています。 beta なのでまだ History ファイルの記述はなさそうですが deprecated になったメソッドを mark (警告が出る?) したり不要になったクラスを消したりとコードベースに大きな変更があったようです。

svn: r63529 2018-05-30 22:01:37 +0900

r63528 の行末の空白除去。

svn: r63530 2018-05-30 22:01:37 +0900

r63528 の新規追加ファイルの svn property 設定。

hsbt: r63531 2018-05-30 22:03:47 +0900

r63528 の rubygems の更新で追加されたテストで bundler 絡みのテストを Gem::USE_BUNDLER_FOR_GEMDEPS をチェックしてから実行するようにしています。たぶん ruby 本体に bundler が組込まれかけてキャンセルしたあたりの都合で ruby 本体のテストで実行すると通らないやつかと。

yui-knk: r63532 2018-05-31 14:49:56 +0900

ASt の C API テスト用の拡張ライブラリで TOPLEVEL_BINDING を参照していたのをやめています。rb_parser_set_context() の第2引数には NULL を渡すようにしています。これは defined? とかでローカル変数を扱う時以外使わないから NULL でもテストの範疇だったら大丈夫、ということかな。

svn: r63533 2018-05-31 14:49:57 +0900

version.h の日付更新。

yui-knk: r63534 2018-05-31 15:13:06 +0900

r63532 で修正してたテスト用の拡張ライブラリ ext/-test-/ast/ast.c をコアの一部に昇格して RubyVM::AST モジュールとして追加しています。おっ、一気にすごい出世だ。RubyVM::AST.parse や RubyVM::AST.parse_file でスクリプトからそれを parse した結果の AST を表現するオブジェクトが取り出せ、また最近の変更で AST のノードには行番号やカラムなどの情報が詳細にのるようになってきてるので、エディタのハイライトとかにも使えそう。と思ったけど RubyVM::AST は全体が parse が可能なスクリプトでないといけなさそうなので、そういうエディタ向けのはノード毎にフックを呼ぶことができる ripper のほうが向いているかも。

yui-knk: r63535 2018-05-31 15:24:19 +0900

r63534 の続き。 RubyVM::AST::Node.new のメソッドは undef して ruby レベルで node を作れないようにしています。

yui-knk: r63536 2018-05-31 15:25:58 +0900

r63534 の RubyVM::AST の追加について NEWS ファイルに追記しています。

nobu: r63537 2018-05-31 15:57:47 +0900

Process.setproctitle のテストで子プロセスがプロセス名を書き換えるのを待つのに 10.times を使ってループを回してたのを後置 while で子プロセスが生きてる間はループを繰り返すように修正しています。負荷が高い時に 10回では足りないことがあったみたいです。

nobu: r63538 2018-05-31 16:10:39 +0900

r63537 の再修正。 Process.wait() に WNOHANG を渡して呼んでたので生きてる時は nil が返るので、後置 while ではなく後置 until でループするようにしています。

nobu: r63540 2018-05-31 18:30:49 +0900

m(**h) のように Hash オブジェクトをキーワード引数への展開させるように渡して呼んだ時に、メソッドにキーワード引数がない時に通常の引数に Hash がそのまま渡されてしまった時の警告をもう少し詳しくしています。