ruby-trunk-changes 2022-09-07

今日は MJIT のコンパイル処理をフックするメソッドの変更やデバッグ用のメソッドの追加、拡張ライブラリ psych の Date/DateTime のダンプ時の暦の扱いの修正(変更)などがありました。

[51022b8e06] Nobuyoshi Nakada 2022-09-06 15:04:28 UTC

MJIT を有効にしてビルドしている時に thread.c に #include <sys/wait.h> を追加しています。 FreeBSD で必要だったとのこと。

[a9c85c0c45] git 2022-09-06 15:05:24 UTC

version.h の日付更新

[87ef90909b] Takashi Kokubun 2022-09-06 20:54:37 UTC

MJIT の ruby 実装 mjit_compiler.rb のデバッグ用のメソッドを削除しています。そのかわり(?) RubyVM::MJIT::Compiler.rb_iseqw_to_iseq という ISeq を C の binding に変換するメソッドを追加しています。

[4c1f6750f2] Antonio Paulino 2022-08-29 19:00:07 UTC

rubygems の gem info コマンドの --version オプション指定時の不具合修正。

[d5752f73d2] Takashi Kokubun 2022-09-06 21:21:00 UTC

RubyVM::MJIT::Compiler.rb_vm_insn_encode というクラスメソッドを追加して VM 命令のアドレスを得ることができるようにしています。デバッグ用途のメソッドみたいです。

[bfa6d0f6d7] Hiroshi SHIBATA 2022-09-07 00:41:28 UTC

8cd6f2a0872e74c6cc089d2a4f8140483080c67a の修正で FreeBSD で拡張ライブラリ socket のテストをスキップするのに omit を使っていたのですが ensure 節のあるテストメソッドだったので、テストメソッドの定義自体を後置 unless で削るようにしています。

[cbdde8e0c5] Nobuyoshi Nakada 2022-08-09 00:22:53 UTC

拡張ライブラリ psych で YAML に Date や DateTime をダンプする時にカレンダーの種類をグレゴリオ歴を前提として扱うようにしています。

[1b034d66f5] Chad Wilson 2022-09-03 16:18:15 UTC

拡張ライブラリ psych の JRuby 版のときに使う snakeyaml というライブラリ? のバージョンの指定を更新しています。セキュリティ関係の修正みたいですね。

[3a575d13d5] Nobuyoshi Nakada 2022-09-06 04:45:45 UTC

configure 時に cross compiling する時には BASERUBY が必須なのでなかったら明示的にエラーにするようにしています。

[6a43245e6c] Nobuyoshi Nakada 2022-09-06 06:13:27 UTC

common.mk の enc.mk の生成ルールで enc/make_encmake.rb を実行するために fake.rb を利用するように書いてたのを $(BOOTSTRAPRUBY_COMMAND) (≒BASERUBY) を利用するようにしています。

[f24c65ea7e] Takashi Kokubun 2022-09-07 01:25:16 UTC

b726c06e7eeafff52e368179dbe79a11b1aff975 で RubyVM::MJIT::Compiler.compile メソッドを定義した時に MJIT の JIT コンパイルの挙動をフックできるようにした時に check_unit_queue() の処理をスキップさせるよう考慮が必要だったみたいなのでこの関数の先頭に分岐を追加しています。

[e6b47f2fb0] Nobuyoshi Nakada 2022-09-07 01:27:29 UTC

拡張ライブラリ psych のテストの一部をカレンダーの種類についての考慮の修正で実行除外する必要がなくなったので test/excludes/Psych/TestDateTime.rb を削除しています。

[f0661bf3a0] Takashi Kokubun 2022-09-07 01:40:22 UTC

MJIT の実装で mjit_add_iseq_to_process() の先頭で b726c06e7eeafff52e368179dbe79a11b1aff975 で追加した --mjit=pause を指定して precompiled header の作成などを遅延した時の考慮を追加しています。

[496bdf01e2] Takashi Kokubun 2022-09-07 01:46:49 UTC

同じく b726c06e7eeafff52e368179dbe79a11b1aff975 で追加した --mjit=pause による MJIT の準備の遅延化に追随した対応。

[cac0dcfbff] Takashi Kokubun 2022-09-07 05:26:29 UTC

b726c06e7eeafff52e368179dbe79a11b1aff975 で MJIT のコンパイル処理をフックするために定義するクラスメソッドとして RubyVM::MJIT::Compiler.compile をチェックするようにしてましたが、RubyVM::MJIT.compile をチェックするように変更しています。見逃してましたけどこの近くのコメントをみると RubyVM::MJIT.compile って書いてありましたね。

[1f91dcdab3] Nobuyoshi Nakada 2022-09-06 06:15:47 UTC

6a43245e6cda89eddd105f5a6e0182a7229657af で enc.mk 作成のために使うようにしてた変数 BOOTSTRAPRUBY_COMMAND の定義を common.mk に移動して、このコマンドで起動する ruby に渡すオプション(-r./xxx-fake)の変数の定義を template/Makefile.in や win32/Makefile.sub に分割するようにしています。sub make に変数を伝播させなくても良いようにするためとのこと。

[35c493ecf5] Nobuyoshi Nakada 2022-09-07 05:41:37 UTC

4d469472e2fda05cbdef98ce2a1fe945f2355f51 で tool/make-snapshot で cross compiling 時の cross.rb の内容を警告でダンプするようにしていたのを --verbose を指定している時だけ出力するようにしています。