ruby-trunk-changes 2022-06-16

今日は主に MJIT の worker の Ractor による実装化による不要なコードの削除などの追随変更と標準添付ライブラリ net/http の Content-Range ヘッダの不正な内容の扱いの変更などがありました。

[d417c1ddc5] David Rodríguez 2022-06-15 10:42:12 UTC

e09bdc11ec74272eb9165b777fea43bbb99ae8bf の bundler のテストで環境変数 RUBYLIB の内容を変更する処理を revert しています。不要だったのか別の問題があったのか……。

[bb12aa4d15] Nobuyoshi Nakada 2022-06-15 06:25:48 UTC

parse.y の no_blockarg() で引数の node の NULL チェックは不要とのことで削っています。

[d154d5d281] Jemma Issroff 2022-06-15 13:25:07 UTC

misc/lldb_cruby.py の初期化処理で enum imemo_type の型の値を取得しておくようにしています。

[64fb3279d2] git 2022-06-15 16:04:32 UTC

version.h の日付更新

[1162523bae] Takashi Kokubun 2022-06-15 16:40:54 UTC

MJIT でコンパイラを起動するための Thread ではない native thread を立てていたのをやめて Ractor を利用して並列処理させるように変更しています。 https://github.com/ruby/ruby/pull/6006 [ruby-core:108925] [Misc #18830]

[23459e4dbb] Takashi Kokubun 2022-06-15 17:19:33 UTC

vm.c から RubyVM::MJIT のメソッド群を mjit.rb という ruby 実装に移行させています。

[a327ce8b07] Takashi Kokubun 2022-06-15 17:57:37 UTC

1162523bae926cfa6128043b635e28c14b732754 で MJIT の実装が native thread を別に起動しなくなったために不要になった rb_thread_create_mjit_thread() と mjit_worker() という関数の実装を thread_pthread.c および thread_win32.c から削除しています。

[acee714ce0] Matt Valentine-House 2022-06-15 13:06:36 UTC

misc/lldb_cruby.py に rb_rclass_ext という関数を追加して T_CLASS 型のオブジェクトを指定して rb_classext_t 構造体の内容を表示する機能を追加しています。

[9eabc57584] Matt Valentine-House 2022-06-15 20:41:15 UTC

misc/lldb_cruby.py の rb_backtrace という関数で lldb_init() による初期化がまだ呼ばれてなかったら呼ぶという guard を追加しています。

[1e8fed2d2a] Burdette Lamar 2022-06-15 20:56:36 UTC

標準添付ライブラリ fileutils の rdoc 用コメントの手直し。

[5310147bb8] Takashi Kokubun 2022-06-15 22:57:27 UTC

MJIT のコンパイラを子プロセスとして起動した時のエラー処理が抜けていたのを修正しています。

[17d260a87f] John Hawthorn 2022-06-15 06:52:20 UTC

52da90aceefd9f8de06666796f6a2d484ca18036 で rb_exec_recursive_outer() という関数を rb_exec_recursive_outer_mid() と改名していたのを revert して、別途 rb_exec_recursive_outer() という wrapper 関数を定義するように変更しています。公開 API だったので消すのはまずかったということみたいです。

[15a6dd56e0] Takashi Kokubun 2022-06-15 23:50:45 UTC

MJIT でコンパイラのプロセスのエラーハンドリングを追加しています。

[332985c178] Takashi Kokubun 2022-06-16 00:18:19 UTC

MJIT の mswin 版での実装で生成された関数のポインタを rb_iseq_body_t::jit_func にセットする処理がスキップされる条件があった不具合を修正しています。

[1ffc6c43f6] Takashi Kokubun 2022-06-16 04:32:29 UTC

MJIT の実装で子プロセスのコンパイラの終了による SIGCHLD の受信からの通知を受け取る mjit_notify_waitpid() で current_cc_unit->iseq が NULL のケースというのを考慮するように分岐を追加しています。

[66f0ce34f1] Takashi Kokubun 2022-06-16 04:58:00 UTC

MIT の実装で JIT コンパイル中の ISeq を保護するため格納しておく配列の compiling_iseqs という static 変数を削除しています。独自の native thread でなく Ractor を利用するようになったので rubyGC にまかせることができるようになったからですかね。

[b5079794fd] Takashi Kokubun 2022-06-16 05:09:37 UTC

MJIT のコンパイル処理停止時の mjit_wait() の呼び出しに struct rb_mjit_unit::compact_p のフラグを考慮する mjit_wait_unit() という wrapper 関数を定義して stop_worker() からこれを使うように修正しています。

[30ca4a8263] Takashi Kokubun 2022-06-16 05:10:54 UTC

66f0ce34f12ed710c97aad30b083017c73f399ad の static 変数 compiling_iseqs 削除時に mswin 版実装での free_compiling_iseqs() の呼び出し箇所が残ってたので追加で削除しています。

[8ef312fc5b] Takashi Kokubun 2022-06-16 07:47:16 UTC

mjit_notify_waitpid() でコンパイラのプロセスがエラーを返した時の処理で current_cc_unit->compact_p のチェックを追加しています。

[63546bfc15] Shishir Joshi 2022-06-16 11:16:47 UTC

標準添付ライブラリ net/http の Content-Range ヘッダのフォーマットが不正だった時に Net::HTTPHeaderSyntaxError 例外を発生させていたのを nil を返すように変更しています。コミットログによると Net::HTTPHeader#initialize_http_header の変更もしたつもりっぽいですが含まれていないですね。 pull request をみると変更したけど master ブランチで既に同じ変更がされていたのでその差分は消えたみたいですね。 https://github.com/ruby/ruby/pull/1018 [Bug #11450]

[714a4942fd] Alan Wu 2022-06-16 11:20:20 UTC

56cc3e99b6b9ec004255280337f6b8353f5e5b06 で Variable Width Allocation によるサイズの異なる slot の pool 間を T_STRING 型オブジェクトを埋め込みバッファの必要なサイズに応じて移動できるようにした時に不要になってた rb_str_shared_root_p() という関数の定義を削除しています。