ruby-trunk-changes r63454 - r63464

今日は rubygems の 2.7.7 への更新などがありました。

nobu: r63454 2018-05-17 21:36:33 +0900

rb_parser_printf() の宣言に PRINTF_ARGS() をつけて引数のフォーマット文字列を解釈してチェックさせるようにしています。また呼び元で1箇所明示的なキャストの追加を行っています。

k0kubun: r63455 2018-05-18 02:11:07 +0900

r63212 で入って r63249 で一旦 revert されて r63333 で再度入った attr_reader によるメソッドの MJIT コンパイル時の inline 化の一部、opt_send_without_block 命令の VM スタック消費量を調整しているところを revert しています。

svn: r63456 2018-05-18 02:11:08 +0900

version.h の日付更新。

nobu: r63457 2018-05-18 09:36:24 +0900

if や unless などの条件部にリテラルが書かれてる時の警告に、true と false が直に書かれてるケースは除外するようにしています。 while true ... end で無限ループというのは(あまりしないけど)普通の書きかただし、デバッグコードなんかを一時的に on/off するのに if false みたいな書きかたはありますからね。

nobu: r63458 2018-05-18 09:37:59 +0900

r63457 の変更をうけて(というかこっちを修正しようとして警告に気がついたのかも) tool/redmine-backporter.rb の無限ループが while 1 だったのを while true に書き直しています。

nobu: r63459 2018-05-18 09:38:00 +0900

tool/ の下の各種スクリプトの未使用のローカル変数の削除。たぶん警告除去ですね。

nobu: r63460 2018-05-18 09:40:06 +0900

tool/ の下の各スクリプトでブロックパラメータで外の変数を shadowing している警告の除去。

hsbt: r63461 2018-05-18 10:39:13 +0900

標準添付されている rubygems を 2.7.7 に更新しています。リリースノートはこちら。 https://blog.rubygems.org/2018/05/18/2.7.7-released.html

normal: r63462 2018-05-18 17:01:07 +0900

thread.c の errno の EINTR や ERESTART などリトライ対象のエラーを判定する retryable() をタイムアウトの期限も引数に渡してこのタイマーを 0 にセットしなおしてリトライするようにして wait_retryable() という関数名に変更しています。EINTR などのエラーが do_select() などからかえらないようにしているみたいです。

normal: r63463 2018-05-18 17:29:28 +0900

gc.c の rb_objspace_t::malloc_params::increase というメンバーを size_t から size_t の2つのメンバー(add, sub)をもつ構造体による表現に変更し、減算時に sub を増やすことで表現するようにしています。ATOMIC_SIZE_CAS() を利用した atomic な減算がコストが高いのでこれでシンプルに減算を行なえるようにしてパフォーマンスを改善しているそうです。 [ruby-core:87096] [Feature #14767]

normal: r63464 2018-05-18 17:40:16 +0900

r63463 を revert しています。 かえって遅くなることがあったみたいです。