今日は ISeq のバイナリフォーマットからのロードの処理の不具合修正などがありました。
nobu: r62613 2018-02-28 22:32:29 +0900
make clean-local で MJIT のヘッダ用の timestamp ファイルと mjit_config.h を削除するようにしています。
k0kubun: r62614 2018-02-28 23:31:17 +0900
r62612 の NEWS ファイルの変更でチケットへの参照が消えてしまっていたので戻しています。
nobu: r62615 2018-03-01 08:31:42 +0900
r61936 の ibf_dump_object_list() でメモリ確保に ALLOCV_N() を使うようにした変更を revert しています。ここのループを回している dump->obj_list の Array オブジェクトはループ内で要素が追加されて最終的な要素数が伸びるかもしれないので、ALLOCV_N() で固定サイズのバッファを作るのではオーバーフローする可能性があったので、rb_ary_tmp_new() で一時利用の Array オブジェクトを作って普通の rb_ary_push() で(可能ならバッファの伸張が行なわれる)追加していくように修正しています。なるほどー、これは気がつかなかった。
svn: r62616 2018-03-01 08:31:43 +0900
version.h の日付更新。
nobu: r62617 2018-03-01 09:37:47 +0900
ISeq のバイナリフォーマットからのロードで ISeq の path と realpath をロードするところで、realpath が nil の場合に TypeError になるのを修正しています。 https://github.com/Shopify/bootsnap/issues/132
nobu: r62618 2018-03-01 11:33:15 +0900
tool/bisect.sh という git bisect のためのユーティリティツールで make srcs の実行をビルドディレクトリへの移動の後に行うように修正しています。
nobu: r62619 2018-03-01 12:26:05 +0900
tool/bisect.sh の引数の run-miniruby と run-ruby の時の処理を共通化するリファクタリング。shell でこういうところに凝ると環境依存のなにかを踏みそうだなぁ、と思ったけどビルドに必須のツールでもないし、ぱっと見トリッキーなところはないので大丈夫そう(sed への依存は増えてるけど sed は .sh を実行する環境ならあるだろう)。
nobu: r62620 2018-03-01 13:10:25 +0900
条件部で代入が行なわれてたときの警告は、右辺値がリテラルの時だけ行われるので、警告メッセージにもそのように明記するようにしています。 [ruby-core:85872] [Bug #14562]
if a = 0 do_something(a) end
こんな感じのですね。
if a = foo() do_something(a) end
こういうのは警告は出ないと。
nobu: r62621 2018-03-01 16:59:57 +0900
ibf_dump_object_regexp() で REGEXP_SRC() の戻り値を一旦 long 型の構造体メンバーに代入してから ibf_dump_object() に渡してたので、long と VALUE のサイズが異なる環境では情報が落ちてる可能性があったので VALUE 型の変数に一時的に受けるようにしています。
nobu: r62622 2018-03-01 17:26:02 +0900
ISeq のバイナリフォーマットからのロードで、未サポートというか不正なオブジェクト型だった時などに rb_bug() で異常終了していたのを、例外を発生させるようにしています。