ruby-trunk-changes 2019-11-10

今日は FreeBSD でのビルドエラーの修正や builtin function 呼び出し用 VM 命令の MJIT のテストの追加などがありました。

[fdfad90522] Hiroshi SHIBATA 2019-11-09 11:14:17 UTC

c5b4d2a2592942766dc2789f46105b91eba7026a の標準添付ライブラリ uri の default gem 化を revert しています。なぜか rubygems の gem か require あたりと干渉して deadlock が起きてしまうようです。 [ruby-core:95768] [Bug #16337]

[79f0e7aafd] Kazuki Tsujimoto 2019-11-09 12:12:29 UTC

cfccd59cb1adfee7b1f402609a4ee32298a26d87 と同様に Struct のテストのテストメソッド名の typo 修正。

[fcf37ca2fe] Nobuyoshi Nakada 2019-11-09 11:02:28 UTC

ff2d99406db4cd8aa0164c86525eedf627acffbe で common.mk 内で .rbinc ファイルの生成に使う組み込みクラス定義の .rb ファイルのパスの指定を $(VPATH) から $(srcs_vpath) に変更していたのを、ただの $(srcdir) に変更しています。 nmake でうまくいかなかった模様。

[f48655d04d] David Rodríguez 2019-11-08 14:03:02 UTC

ツールや拡張ライブラリの extconf.rb やテストなどで一部ファイルの mode に不要な実行可能ビットが立ってるものがあったので落としているようです。

[20bc038ea3] Nobuyoshi Nakada 2019-11-09 12:58:55 UTC

352096ef6047538bfedb974a7c1b1156f5a0e811 で spec/ruby/security/cve_2018_6914_spec.rb に追加したデバッグ表示を pp.rb の PP モジュールを使って整形して表示させるようにしています。ついでに @tmpdir の File.stat の結果も表示するようにしていますが、これはミスだったようです。

[774cfb0655] Nobuyoshi Nakada 2019-11-09 13:15:15 UTC

20bc038ea31ee799103bb89068537ed4e4f699b4 で追加した File.stat の情報は @dir のほうを表示するように修正しています。

[a68205c5c1] Nobuyoshi Nakada 2019-11-09 13:40:14 UTC

spec/ruby/security/cve_2018_6914_spec.rb で環境変数 TMPDIR をおきかえるために作成するディレクトリを 700 の permission を指定して作成するようにしています。

[03fdf02321] Nobuyoshi Nakada 2019-11-09 14:00:32 UTC

a68205c5c19277e9ece8409b1f6af7e226989dff の変更で spec/ruby/security/cve_2018_6914_spec.rb の問題が解消したみたいで、デバッグ出力やリトライするように対応したコードを削除しています。

[e0094df29d] Takashi Kokubun 2019-11-09 21:22:51 UTC

MJIT のテストで JIT 中に fork した場合のテストで sleep を入れている部分が Solaris のテストで不十分らしく 0.5秒から 2秒に伸ばしています。

[ff767dd914] git 2019-11-09 21:23:55 UTC

version.h の日付更新

[faa4f4f23f] Nobuyoshi Nakada 2019-11-10 00:15:12 UTC

FreeBSD 上の make では -j オプションを利用すると compatibility mode なるものが off になって、あるターゲットのアクションに書かれてるコマンドが単一の shell プロセスで実行されるらしく、Makefile 内で exit とか cd とかプロセス全体に影響するビルトインコマンドを利用すると後のコマンドに影響が出てしまうのでこれらを使っているところを別のコマンドに置き換えるか、ルールを分けるなどで対応しています。 [ruby-core:95741] [Bug #16331]

[2c55ba7191] Nobuyoshi Nakada 2019-11-10 01:09:26 UTC

faa4f4f23fbb6b48b158cc38d9b509fd00838976 の続きで exit の代わりに使うようにした NULLCMD というコマンドを示す変数を win32/Makefile.sub で初期化しておくようにしています。 [ruby-core:95741] [Bug #16331]

[11aa07c270] Nobuyoshi Nakada 2019-11-10 01:52:12 UTC

2c55ba7191a69dd4db34572754162308f0a9acdd のさらに再修正で win32/Makefile.sub で NULLCMD として : を指定していたのを type nul というコマンド? に変更しています。 [ruby-core:95741] [Bug #16331]

[0483d01f6b] Takashi Kokubun 2019-11-10 05:16:10 UTC

MJIT のテストで使う assert_eval_with_jit で渡された VM 命令の種類が script 内に含まれてるかチェックして警告を出力する処理を mark_tested_insn というメソッドに切り出しています。これメソッドに切り出したので warn の uplevel: は増やさなくていいのかな。けど元の uplevel のデフォルトが 1 で +2 するとこれで丁度いいような気も。またこれを利用して Array#pack を JIT 化して invokebuiltin 命令のテストを追加していますが、肝心の(?) mark_tested_insn を呼ぶところはコメントアウトされています。 RubyVM::InstructionSequence#to_a がうまく動いてないらしい。

[5c168c7e7f] Takashi Kokubun 2019-11-10 05:40:38 UTC

ということで RubyVM::InstructionSequence#to_a で invokebuiltin 命令に対応するようにしています。

[4570284ce1] Takashi Kokubun 2019-11-10 05:56:38 UTC

MJIT のテストに builtin func 用の命令 opt_invokebuiltin_delegate_leave を使うメソッドを使うテストを追加しています。