ruby-trunk-changes r63252 - r63259

今日は String#scan に \K を含む正規表現を渡した時の不具合修正や VM 命令列の最適化の不具合修正などがありました。

nobu: r63252 2018-04-24 21:25:46 +0900

String#scan の引数に /\K/ を含む正規表現を渡すと \K の前の後読み部分まで切り出されてしまっていた不具合を修正しています。 2.5 からの不具合みたいです。 [ruby-core:86663] [Bug #14707]

normal: r63253 2018-04-25 05:31:59 +0900

Copy-on-Write friendly GC と相性の悪い Linux の Transparent Huge Pages 機能を off にするため起動時の ruby_setup() で prctl(2) を呼んでおくようにしています。 [ruby-core:86651] [Feature #14705]

svn: r63254 2018-04-25 05:32:00 +0900

version.h の日付更新。

nobu: r63255 2018-04-25 15:45:05 +0900

iseq_peephole_optimize() の VM 命令の最適化で、必ず真値になるオブジェクトをスタックに積む命令の後で branchif 命令があった時に jump 命令に置き換える最適化で dup が挟まっている時にも対応していましたが、この時 VM スタックの深さの一貫性が壊れるので jump 命令の後にダミーの pushnil 命令を追加するようにしています。 [ruby-core:86666] [Bug #14708]

eregon: r63256 2018-04-25 17:11:01 +0900

rubyspec で子 Thread 内でビジーループとして空の loop{} が使われていましたが Thread.pass を呼んで明示的に Thread 切り替えを促すようにして速く親 Thread に切り替わるようにしています。

eregon: r63257 2018-04-25 17:15:58 +0900

rubyspec で lambda{} 記法のかわりにを ->() {} の記法を使うように書き換えています。

eregon: r63258 2018-04-25 17:16:09 +0900

rubyspec の Thread#raise を終了した Thread に対して呼んだ時のテストで Thread#value が例外を発生しないことを should_not raise_error でチェックしていましたが、単に普通に join を呼ぶ(例外が発生すればエラーになるので)ようにしています。

nobu: r63259 2018-04-25 20:56:58 +0900

標準添付ライブラリ url の URI::HTML5ASCIIINCOMPAT という定数を削除しています。もう不要になっていたけど defined? の優先度の変化で本来の Encoding の配列じゃなくて "expression" という文字列が格納されてしまっていたみたいです。 [ruby-core:86678] [Bug #14711]