ruby-trunk-changes r65790 - r65805

今日は IO#ungetbyte や String#setbyte で 1byte の範囲外の整数を渡すと RangeError を発生させるようにする変更や子プロセスでも MJIT 有効化でのハングアップの不具合修正などがありました。

k0kubun: r65790 2018-11-18 22:32:49 +0900

r65785 の子プロセスでの MJIT 有効化でデッドロックが入ってしまったのを修正。 mjit.c の stop_worker() で stop_worker_p フラグを立てるのを while ループ内で rb_native_cond_broadcast() する前に行なうようにしています。 RUBY_VM_CHECK_INTS() で割り込みチェックすると start_worker() が別の thread から呼ばれる可能性があって(fork 直後の再起動のため?)そこと競合する可能性があるため。

nobu: r65791 2018-11-19 08:29:40 +0900

tool/update-deps で環境変数の文字列は freeze されているため sub! で破壊的に置換はできないので String#sub を使うように書き換えています。

nobu: r65792 2018-11-19 08:29:41 +0900

make clean で ruby-runner.o と ruby.imp も削除するようにしています。

svn: r65793 2018-11-19 08:29:42 +0900

version.h の日付更新。

shyouhei: r65794 2018-11-19 11:58:51 +0900

configure.ac でコンパイラの警告オプションの対応をチェックするための for 文のリストの順番を辞書順にソートしています。

shyouhei: r65795 2018-11-19 12:01:55 +0900

configure.ac にコンパイラの警告オプションに -Wno-unused-value を追加しています。clang の大量の警告を抑制するためとのこと。

shyouhei: r65796 2018-11-19 12:08:32 +0900

.travis.yml の before_script に CFLAGS のデフォルト値を設定するコマンドを追加していくつかの警告抑制するオプションを追加しておくようにしています。

shyouhei: r65797 2018-11-19 14:04:02 +0900

r65796 の続きで .travis.yml の CFLAGS に設定する警告オプションに -Wno-unknown-warning-option も追加するようにしています。

shyouhei: r65798 2018-11-19 15:48:09 +0900

array.c の Array#zip の実装で内部で呼ぶコールバック関数 take_i() で引数の VALUE が 0 の時にも -- でデクリメントしてしまっていたので 1以上の時のみ減算するようにしています。

nobu: r65799 2018-11-19 15:52:54 +0900

.travis.yml の CFLAGS 環境変数の設定を cflags/cppflags/warnflags/debugflags/optflags などの変数への設定に分解しています。

nobu: r65800 2018-11-19 15:52:55 +0900

make reconfig のコマンドで warnflags 設定を明示的に再適用するようにしています。

nobu: r65801 2018-11-19 16:00:12 +0900

tool/m4/_colorize_result_prepare.m4 で r65702 で変更した CONFIGURE_TTY の設定を反映させる変数名を rb_cv_configure_tty から configure_tty に変更しています。 rb_cv_ という prefix は reconfig 時に継承するものという意味があるそうで、出力が端末かどうかというのは configure しなおす度に変わるかもしれないものなので継承すべきではないということでした。

shyouhei: r65802 2018-11-19 17:10:48 +0900

IO#ungetbyte の実装で Integer(Fixnum) から直接 char 型の変数に代入して文字列化していたのを int 型の変数に変換してから 256 以上の数値だったら RangeError 例外を発生させるようにしています。これまでは黙って下位ビットのみ使ってたので仕様変更になりますね。 [ruby-core:84872] [Bug #14359]

nobu: r65803 2018-11-19 18:42:10 +0900

.travis.yml の r65799 と r65800 の追加修正で warnflags の変数に before_script で -Wno-unknown-warning-option を追加していたのをやめています。

shyouhei: r65804 2018-11-19 18:52:46 +0900

String#setbyte でも IO#ungetbyte と同様に引数に渡されたバイト値を意味する整数が 0-255 の範囲外だったら RangeError 例外を発生させるようにしています。

nobu: r65805 2018-11-19 19:15:20 +0900

configure.ac で extra_warnflags という変数が与えられていたら extra_warning という変数にセットするようにして、結果的に warnflags に追加されるようにしています。