ruby-trunk-changes 2023-03-31

今日は主に lldb や gdb のためのカスタムコマンドの実装の修正や拡張、Ractor まわりのデバッグのためのログ出力の強化、拡張ライブラリ ripper のパターンマッチの文法での RGenGC の Write Barrier 関係の不具合の修正などがありました。

[339295dd7c] Nobuyoshi Nakada 2023-03-30 16:16:44 UTC

misc/lldb_rb/utils.py の rp コマンドの不具合修正。

[9a617c067f] Takashi Kokubun 2023-03-30 21:15:59 UTC

YJIT で JIT コードの利用をあきらめる処理の位置を変更しようとしているようです。 https://github.com/ruby/ruby/pull/7612

[dabeec8034] Matt Valentine-House 2023-03-30 19:39:59 UTC

misc/lldb_rb/utils.py の rp コマンドの不具合修正。

[a8782c454c] Jimmy Miller 2023-03-30 14:20:23 UTC

YJIT の JIT コード利用をあきらめる時の理由ごとのカウンタの名前を変更とテストの追加。

[3488eda41d] yui-knk 2023-03-30 10:26:29 UTC

parse.y のパターンマッチの処理 ripper 用の実装の共通部分を ripper_new_yylval2() という関数に切り出して add_mark_object() を呼んで作る NODE を NODE_RIPPER2 というノードに変更しています。 GC のために mark するために add_mark_object() を呼んでいるのに NODE から mark されるタイプの NODE を使っていたので両方から mark される可能性があって RGenGC の処理で問題があったようです。

[8523892d08] "dependabot[bot]" 2023-03-30 03:00:34 UTC

GitHub Actions の workflow で利用している ossf/scorecard-action アクションのバージョンを更新しています。

[cd65e4adca] Nobuyoshi Nakada 2022-03-28 15:52:10 UTC

標準添付ライブラリ rdoc で File.open のブロックつき呼び出しを使っていたところを File.binread を利用するようにリファクタリングしています。

[5116e8bdf8] Nobuyoshi Nakada 2023-03-31 01:06:02 UTC

標準添付ライブラリ rdoc のテストで File.read を利用していたところを File.binread に変更しています。

[bccdc04166] Nobuyoshi Nakada 2023-03-31 02:11:45 UTC

f6adc5be94a9f70a5b9897b81dabdeb49b573393 で tool/lib/leakchecker.rb 内で環境変数のリークチェックのために除外する環境変数を判定するために Bundler::EnvironmentPreserver::BUNDLER_PREFIX 定数を参照する前に defined? でチェックしていたのがループ内だったので、ループの前に defined? でのチェックを出して結果を変数にいれて使いまわすようにしています。

[83667008b9] Koichi Sasada 2023-03-30 19:11:15 UTC

GitHub Actions でコンパイラオプション -DUSE_RUBY_DEBUG_LOG=1 をつけてビルドしてみるテストで出力先を指定する環境変数 RUBY_DEBUG_LOG を /dev/null にしておくようにしています。大量のログが出るのでそれがディスクフルになってしまわないように。

[2093e4c2db] Koichi Sasada 2023-03-30 18:52:58 UTC

USE_RUBY_DEBUG_LOG マクロを有効にしてビルドした時に出力される RUBY_DEBUG_LOG() でのログに native thread を識別する通し番号? を表示するようにしています。

[d8b8294c28] NAKAMURA Usaku 2023-03-30 11:10:01 UTC

標準添付ライブラリ net/http で HTTP ヘッダのヘッダ名と値のそれぞれにバイトサイズの上限(ヘッダ名1024, 値 65536)を設けてこれを越えた時に ArgumentError を発生させるようにしています。

[eedcd696a5] NAKAMURA Usaku 2023-03-30 12:41:03 UTC

d8b8294c28a09278de357c26b291abf1b9f3cc5d でヘッダ名が Symbol の場合があるので文字列化してから String#bytesize を呼ぶように再修正しています。

[fbc6661a72] Koichi Sasada 2023-03-31 05:23:37 UTC

83667008b925c32b3ab70fb6ec70f7398e960d1eGitHub Actions で RUBY_DEBUG_LOG の出力先を /dev/null に指定するようにしたのを revert しています。

[f500df097f] Takashi Kokubun 2023-03-31 06:58:07 UTC

.gdbinit の rp コマンドで T_OBJECT 型のオブジェクトでインスタンス変数が slot 内に埋め込まれている時のサイズを Object Shapes の実装に対応して変更しています。

[9f426491ca] Takashi Kokubun 2023-03-31 06:57:13 UTC

misc/gdb.py というファイルを追加して .gdbinit からこのファイルをロードするようにしています。そして cfp コマンドという control frame の情報を表示するコマンドを追加しています。

[a57270a848] Takashi Kokubun 2023-03-31 07:52:47 UTC

.gdbinit のタブを空白に展開。

[66755164aa] Koichi Sasada 2023-03-31 08:18:02 UTC

gc.c の each_machine_stack_value() 内に RUBY_DEBUG_LOG() によるデバッグログ出力を追加しています。

[fdfd50d006] Koichi Sasada 2023-03-31 08:12:46 UTC

精査していませんがコミットログによると thread_pthread.c 内の関数の定義の順番を入れ替えているそうです。

[369bdff9ca] Koichi Sasada 2023-03-31 08:33:05 UTC

rb_ractor_thread_switch() 内に RUBY_DEBUG_LOG() によるデバッグログ出力を追加しています。

[95dafb53cd] Koichi Sasada 2023-03-31 08:33:17 UTC

ractor_core.h の rb_ractor_set_current_ec_() 内の VM_ASSERT() によるチェックで rb_execution_context_t のポインタ ec が NULL なのを許容するように条件を修正しています。

[ad7362db07] Koichi Sasada 2023-03-31 08:42:03 UTC

rb_thread_t 構造体の locking_native_thread という bit field メンバーを has_dedicated_nt と改名しています。

[4c0f82eb5b] Koichi Sasada 2023-03-31 09:15:04 UTC

RUBY_DEBUG_LOG() によるデバッグログに渡す文字列の不要な改行コードを削除しています。出力時に自動的に改行が付加されるため。

[f803bcfc87] Koichi Sasada 2023-03-31 08:57:25 UTC

thread_sched_to_waiting() および thread_sched_to_waiting_common() という関数に rb_thread_t のポインタを引数に追加しています。しかし最終的に渡された thread_sched_to_waiting_common() ではこの引数を使ってなくて、将来の拡張のためとのこと。

[98347c251a] Takashi Kokubun 2023-03-31 09:54:24 UTC

misc/gdb.py で追加した gdb の独自コマンド cfp の機能を拡張して control frame の env 情報やフラグの情報などを表示するようにしています。

[0f368bfb7b] Takashi Kokubun 2023-03-31 10:05:29 UTC

misc/gdb.py で追加した cfp コマンドの出力にさらにローカル変数の情報も表示するようにしています。

[185f39df79] Takashi Kokubun 2023-03-31 10:20:40 UTC

misc/gdb.py の gdb の cfp コマンドでさらに control frame 内の VALUE の値も表示するようにしています。

[1d19776c7f] Koichi Sasada 2023-03-31 10:26:06 UTC

thread.c の関数などの定義の順序の入れ替え。