ruby-trunk-changes r63779 - r63790

今日は先日の SIGCHLD の処理の不具合修正や RubyVM::AST::Node#children の不具合修正などがありました。

nobu: r63779 2018-06-28 22:18:52 +0900

ちょっと動機がよくわからなかったのですが rubyspec の C API のテスト用の拡張ライブラリで rb_encdb_alias() を利用していたところを rb_enc_alias() を使うように変更しています。

nobu: r63780 2018-06-28 22:22:13 +0900

ruby --dump=parsetree_with_comment で表示される AST のコメントの子ノードの表示を u1.xxx みたいなのじゃなくて別名の nd_xxx で表示するようにしています。 https://github.com/ruby/ruby/pull/1901

mame: r63781 2018-06-28 23:18:56 +0900

r63779 の rubyspec の拡張ライブラリの変更を revert しています。テスト通らなかった模様。

yui-knk: r63782 2018-06-28 23:33:28 +0900

RubyVM::AST::Node#children で NODE_DEFN と NODE_DEFS の時にメソッドの ID を含めるようにしています。

nobu: r63783 2018-06-29 08:46:59 +0900

r63779 のやりなおし。rubyspec で利用する C API の関数名を rb_encdb_alias() から rb_enc_alias() に変更しています。 include/ruby/encoding.h の関数宣言も追加しています。

svn: r63784 2018-06-29 08:47:00 +0900

version.h の日付更新。

normal: r63785 2018-06-29 11:21:08 +0900

SIGCHLD がない環境(Windows とか)の waitpid の処理で引数に渡すポインタをミスを修正。 [ruby-core:87655] [Bug #14873]

normal: r63786 2018-06-29 11:53:11 +0900

Process.waitpid のテストが CI でこけるのがあるので、assertion を pipe を閉じる前に移動しています。うーん? どういうことだろ。なんか SIGCHLD の処理の変更がうまくいってなさそうな雰囲気が。

nobu: r63787 2018-06-29 12:28:26 +0900

bootstrap/runner.rb で Interrupt 例外を rescue して再度 raise Interrupt してるところがあって冗長なので(今だと cause に入るので前の例外も残っちゃうし)、同じ例外をそのまま再 raise するように修正しています。

shyouhei: r63788 2018-06-29 13:56:07 +0900

bootstraptest/test_insns.rb に setblockparam、getblockparam、getblockparamproxy、checktype などの新しい命令についてのテストを追加しています。

normal: r63789 2018-06-29 16:52:24 +0900

SIGCHLD の処理の変更で waitpid(2) を呼び出すために GVL 外した時に timer thread から配送される SIGCHLD 受信の通知を待つための rb_native_cond_wait() に入る条件に RUBY_VM_INTERRUPTED_ANY() のチェックを追加しています。どうやら race condition があって待ちっぱなしになる可能性があったみたいですね。

normal: r63790 2018-06-29 17:51:33 +0900

r63758 の SIGCHLD を自前で配送する処理の SIGCHLD が存在しないプラットフォームでエラー時の errno の伝播が不足していた不具合を修正。