ruby-trunk-changes r58382 - r58393

今日は Windows 環境でのイベント処理の修正や例外処理時のハングアップの修正などがありました。

nobu: r58382 2017-04-17 22:23:42 +0900

Windows 環境で Event を待つ w32_wait_events() で WaitForMultipleObjects() の戻り値のチェックを修正しています。 r58370 の再修正かと思ったけど元からずれてたっぽい?

nobu: r58383 2017-04-17 22:38:34 +0900

String#[]= で文字列の一部を変更する時に文字列が single byte の文字だけだった場合に code range の再設定を最適化しています。 [ruby-dev:49984] [Bug #13228]

ko1: r58384 2017-04-18 08:47:12 +0900

TracePoint のテストで TracePoint.new のブロック内で別の Thread だったらスキップするための分岐で return してしまっていたので next に変更しています。

svn: r58385 2017-04-18 08:47:13 +0900

version.h の日付更新。

nobu: r58386 2017-04-18 11:58:44 +0900

enc/depend を更新して enc/unicode.o から enc/data/9.0.0 など Unicode のバージョン毎に生成されるヘッダファイルへの依存を消しています。

nobu: r58387 2017-04-18 11:58:45 +0900

tool/vcs.rb で環境変数 SVN, GIT で実行するコマンドを変更できるようにしています。

nobu: r58388 2017-04-18 14:56:34 +0900

configure の --with-git オプションを指定した時に環境変数 GIT の値を利用するようにしています。

nobu: r58389 2017-04-18 17:34:40 +0900

setup_exception() で PUSH_TAG() と POP_TAG() のペアの間(つまり setjmp() と longjmp() の間のセクション)で rb_threadptr_set_raised() に失敗した時に goto fatal で飛んで TH_JUMP_TAG() を呼んでしまっい無限ループに陥いる可能性があったので、結果を変数に取っておいて POP_TAG() の後に goto fail するようにしています。と、読めるのですが、TH_JUMP_TAG() は TAG_FATAL でジャンプしてるから status が非0 になって再度失敗するパスには入らないんじゃないのかな。

shyouhei: r58390 2017-04-18 19:58:49 +0900

insns.def の VM 命令の実装は vm_exec_core() という巨大な関数の中に埋め込まれて VM ループ用の様々な最適化が行なわれたりしてましたが、これを関数として切り出しています。コンパイラが inline してくれるのでコンパイル結果のサイズはむしろ小さくなるそうです。

svn: r58391 2017-04-18 19:58:50 +0900

r58390 の行末の空白除去。

shyouhei: r58392 2017-04-18 20:06:58 +0900

r58390 のインデントのタブ化。

hsbt: r58393 2017-04-18 20:55:44 +0900

README.md の Contributing の節の見出しのマークアップを修正しています。 https://github.com/ruby/ruby/pull/1586