ruby-trunk-changes r61510 - r61513

今日は $SAFE をプロセス全体で共有にする変更や String#lines などの separator の指定と chomp オプション指定を同時に使った時の不具合修正などがありました。

ko1: r61510 2017-12-29 05:09:24 +0900

徐々に対応するレベルが減らされてきた $SAFE ですが、この変更で Thread や Proc のブロック内毎に別の値を持っていたのを、プロセス全体で共通の値をみるようにしています。チケットのほうをみますと、これによりコンテキスト切り替え時の safe_level の復旧が不要になるため、パフォーマンスを良くすることができるというのが動機みたいです。 rb_execution_context_t::safe_level や rb_proc_t::save_level 等のメンバーも削除されています。またそうすると $SAFE = 1 にするとずっと 1 のままだと困ることもあるので、再代入でレベルを緩めることもできるようにしています。なるほどー。まあ、$SAFE はいずれ消されるんだろうなという感じではありましたが、その前にもう一段階置くって感じなんですかね…。 [ruby-core:84519] [Feature #14250]

svn: r61511 2017-12-29 05:09:25 +0900

version.h の日付更新。

normal: r61512 2017-12-29 15:47:29 +0900

[Feature #14225] の Hash の key を taint しないようにする変更に供えた準備とのことですが、Hash#keys のキーについてのテストで assert_equal を assert_predicate や assert_not_predicate を使うようにするテストのリファクタリング

nobu: r61513 2017-12-29 21:19:03 +0900

String#each_line や String#lines などで chomp オプションを指定した時に、separator として改行コード以外を指定した時にも "\n" が削られてしまっていたという不具合を修正しています。ううむ、これは盲点 [ruby-core:84552] [Bug #14257]