ruby-trunk-changes 2024-02-10

今日は主に Ractor::IsolationError 例外メッセージに含める定数名の不具合修正や YJIT の最適化、Proc の複製時の不具合修正などがありました。

[08b77dd682] Matt Valentine-House 2024-02-08 21:56:26 UTC

vm_eval.c の eval_make_iseq() という static 関数で未使用だった第3引数を削除しています。

[d19d683a35] Jean Boussier 2024-02-09 12:54:06 UTC

rb_obj_setup() という関数で引数の obj の struct RBasic::flags のビットフラグに設定する時に type の指定にあっても無視するビットフラグに RUBY_FL_SEEN_OBJ_ID というのを追加しています。 Proc オブジェクトの複製をした時に object_id の採番の状態が複製されてしまって異常終了になる可能性があったようです。 [ruby-core:116643] [Bug #20250]

[80490acfb6] Burdette Lamar 2024-02-09 17:08:54 UTC

IO クラスの rdoc 用コメントの書きなおしと追記をしているようです。が逆にサンプルを大きく消しているところもあるけど移動しているのかな。 https://github.com/ruby/ruby/pull/9842

[717adb564b] Takashi Kokubun 2024-02-09 17:12:45 UTC

case 文の分岐の最適化命令 opt_case_dispatch 命令の YJIT での最適化実装で型の候補が多すぎる時にすぐにあきらめないようにしているようです。また最終的に chain_depth が上限に達して諦める時のための --yjit-stats で表示するカウンタを追加しています。 https://github.com/ruby/ruby/pull/9894

[f7467e70e1] Kevin Newton 2024-02-08 20:46:53 UTC

prism での AST のコンパイル処理のために compile.c のマクロ群の行番号に関する引数の渡しかたを変更しているようです。

[e7b0a01002] Takashi Kokubun 2024-02-09 22:12:24 UTC

YJIT のオプション --yjit-stats 指定時に出力する統計情報に num_send_iseq というのを追加して ruby 実装のメソッド呼び出しの回数? をカウントするようにしているようです。他にも YJIT のカウンタ出力やインクリメントの処理のリファクタリング? やいくつかのカウンタ名の変更も含まれているようです。 https://github.com/ruby/ruby/pull/9906

[bf72cb84ca] yui-knk 2024-01-05 10:45:19 UTC

Ractor 間のオブジェクトの転送時に発生する Ractor::IsolationError 例外のメッセージにエラーとなった定数の名前を含めるのが "::C" のように先頭に "::" をつけているとうまくいかなかったのを修正しています。

[ea91ab696e] yui-knk 2024-01-06 08:33:20 UTC

bf72cb84ca52bc062cc1711c03622ed6c928fed8 に続いて Ractor::IsolationError 例外メッセージに含める定数名を決める時に ||= のような演算子つき代入の時にもうまく定数名を取り出せてなかった不具合を修正しています。

[6cafbd35d9] Nobuyoshi Nakada 2024-02-10 05:24:28 UTC

yjit.rb の未使用の変数を削除。

[fdd92c2d61] yui-knk 2024-02-10 05:04:38 UTC

parse.y の rb_parser_coderange_scan() で rb_parser_search_nonascii() の戻り値をチェックするために参照する変数名を間違えていた不具合を修正。