ruby-trunk-changes 2024-02-21

今日は YJIT の最適化や TracePoint の :thread_end イベントの発火がされないケースがある不具合の修正などがありました。

[c22cb960cf] Hiroshi SHIBATA 2024-02-20 11:52:04 UTC

gems/bundled_gems の debug のテストに使う commit hash を更新しています。

[835fa98a62] Nobuyoshi Nakada 2024-02-20 14:03:13 UTC

コマンドラインオプションの -W でカテゴリごとの警告の有効化/無効化を反映させるためのビットフラグの初期化を --dump フラグの処理の前に移動しています。 prism 利用時の experimental 警告の抑制がきくようにするためみたいです。

[c184aa8740] Peter Zhu 2024-02-16 18:35:33 UTC

rb_method_entry_t および T_IMEMO 型オブジェクトの GC の mark 処理で GC.compact による参照の更新対応の実装を rb_gc_mark_and_move() という関数を使いまわすようにしているそうです。処理の共通かな?

[c0e5de9567] Takashi Kokubun 2024-02-20 17:13:36 UTC

tool/missing-baseruby.bat で BASERUBY として要求する最低バージョンのメッセージを 2.7.0 から 3.0.0 に更新しています。

[2e2e3d89af] Alan Wu 2024-02-20 18:29:02 UTC

YJIT で C 実装のメソッドに対する **nil での空のキーワード引数を渡す呼びかたへの対応を追加しているようです。

[77c1233f79] Jeremy Evans 2024-01-30 18:31:27 UTC

メソッドの引数の処理で不要な中間オブジェクトの生成を抑制するために VM 命令に pushtoarraykwsplat というのを追加しています。うーん徹底してますね。速くするためなんでしょうが。

[b3c13de858] Koichi Sasada 2024-02-20 06:31:24 UTC

prism を parser として使うテストで Encoding.locale が UTF-8 じゃない時に通らないものをチェックして実行しないようにしています。

[d4b4b53bc0] Burdette Lamar 2024-02-20 21:10:52 UTC

File の rdoc 用コメントに改行についてのセクションを追加してリンクを追加したりしています。 https://github.com/ruby/ruby/pull/9970

[9216a2ac43] Takashi Kokubun 2024-02-20 21:42:29 UTC

YJIT の実装で C 実装のメソッドの C の関数を直接呼ぶ時に例外が発生しない(leaf)かどうかを引数の型のチェックなども含めて実行時に確認するようにしてより強く最適化するようにしているようです。 https://github.com/ruby/ruby/pull/10002

[8e1090487e] Alan Wu 2024-02-20 21:20:02 UTC

YJIT で ruby 実装の組み込みメソッドへ *nil や **nil で空の引数やキーワード引数を渡す時のスタック処理の不具合修正。

[35fdf1a624] Alan Wu 2024-02-20 21:21:32 UTC

bootstraptest の YJIT の冗長なテストを削除。

[97d4363d3b] Peter Zhu 2024-02-16 20:12:53 UTC

GC.latest_compact_info の rdoc 用コメントのキーの説明部分のマークアップを変更しています。

[e7ab5d891c] yui-knk 2024-02-10 01:05:18 UTC

正規表現リテラルのために専用の AST のノードタイプ NODE_REGX を追加しています。 AST から ruby のオブジェクトを直接持つのを除外する一環でしょうか。

[776dbbba72] yui-knk 2024-02-20 14:52:23 UTC

parse.y で %type の先頭に ripper 向けにコメントを書く必要があったのが昨日の ripper の実装の大幅変更で不要になったようなので削除しています。

[ce4142bcb7] Takashi Kokubun 2024-02-21 01:23:08 UTC

YJIT の VM 命令 concatstrings の実装で rb_str_concat_literals() を呼ぶために leaf 用の準備をしていたけど leaf ではなかったので jit_prepare_call_with_gc() のほうを呼ぶほうにしています。 https://github.com/ruby/ruby/pull/10035

[5fb574ae4e] yui-knk 2024-02-18 22:55:21 UTC

parse.y の Hash リテラルの重複したキーの警告のための処理で NODE_LIT ノードを考慮する必要がなくなったそうなので実装をシンプルに作りなおしています。 NODE_LIT はまだあるけど magic comment の shareable_constant_value でだけ使われるとのこと。

[2a6917b463] Alan Wu 2024-02-20 21:45:59 UTC

Hash リテラルの ISeq へのコンパイル時の処理でリテラル判定する関数に Hash の値のほうもキーとして扱ってしまっていたのを修正しています。キーのほうは frozen_string_literal でなくても freeze されてるのでそれに合わせた判定をしてしまってたようです。

[1c97abaaba] John Hawthorn 2024-02-12 05:43:38 UTC

rb_vm_t 構造体に ci_table という st_table のメンバーを追加してここで VM 全体で共有する struct rb_callinfo のキャッシュを持ち同じ内容の callinfo は使いまわすようにしているようです。肥大化したりしないのかなと思ったけど開放時には削除処理もしていて、しかしその時に参照カウンタとかの管理はしていないので、callinfo 自体 T_IMEMO 型のオブジェクトで GC の対象なのでその回収時に ci_table の登録から削除するということですね。

[081ee3d355] John Hawthorn 2024-02-15 23:32:01 UTC

1c97abaabae6844c861705fd07f532292dcffa74 の変更により eval でキーワード引数を含むメソッド呼び出しをコンパイルし続けると callinfo が T_CLASS/T_MODULE に溜まり続けるメモリリークが修正されたのでそれに対応するテストを追加しています。

[a605234bfa] Yusuke Endoh 2024-02-20 07:16:28 UTC

NEWS に例外メッセージのクオート記号の変更とバックトレースのメソッドに Class/Module 名も含めるようにした変更について追記しています。 [Feature #16495] [Feature #19117]

[08753f2037] Hiroshi SHIBATA 2024-02-20 07:47:48 UTC

rubygems と bundler のドキュメントやコメント内のリンクの http を https に変更しています。

[d0786cde3f] Hiroshi SHIBATA 2024-02-20 10:12:44 UTC

bundler の man ページの更新。

[91cb303531] yui-knk 2024-02-18 09:33:29 UTC

Universal Parser の構造体 rb_parser_config_t から不要な関数ポインタのメンバーを削除しています。

[d578684989] Koichi Sasada 2024-02-20 10:09:23 UTC

M:N Threads が有効な時に native thread を現在の Thread で専有するための? C API rb_thread_lock_native_thread() を追加しています。 https://github.com/ruby/ruby/pull/10031

[c8fb4f308b] Nobuyoshi Nakada 2023-11-01 14:45:48 UTC

rubygems の専用の YAML 実装で Hash の値が nil の場合にキーごと削除するようにする変更を加えています。 libyaml がバージョンによっては値が nil の Hash をうまく扱えないみたいです。

[fc1a7a46dc] Hiroshi SHIBATA 2024-02-21 05:27:58 UTC

c8fb4f308bc24c75c2713129a0972ffcd8742b3f の再修正で Hash の値が nil のものを消すのに dup+delete_if を使ってたのを Hash#compact を使うように変更しています。Hash#compact ってキーじゃなくて値のほうが nil の要素を消すのか。

[1fa4d15ca7] Nobuyoshi Nakada 2024-02-21 06:45:53 UTC

テスト用の tool/lib/test/unit の Test::Unit::TestCase の __name__ の alias として method_name というメソッドを生やしています。 test-unit.gem との互換性のためとのこと。

[6ecb14df2c] Nobuyoshi Nakada 2024-02-20 17:32:24 UTC

rubygems のテスト用の helper メソッドで終了時に一時ディレクトリの削除確認を追加し、一時ファイルが残ってたのを修正しているようです。

[b1431ce427] Yusuke Endoh 2024-02-21 08:14:49 UTC

dmydln.c/dmyenc.c/dmyext.c などの拡張ライブラリの静的リンク時のためのソースコードの先頭にコメントで miniruby と本番の ruby どちらで使われるのかといった説明を追記しています。

[6aa5067ab9] Nobuyoshi Nakada 2024-02-21 10:28:23 UTC

6ecb14df2cda223e2280891150b3f41c1eb2edf0rubygems のテストでの一時ディレクトリ削除のチェックする assertion の追加を revert しています。どこで消し漏れているか確認するために入れたものだったみたいです。

[fd91354628] Yuta Saito 2024-02-21 10:17:13 UTC

template/exts.mk.tmpl に EXTOBJS に複数のエントリがあった時の処理に理由をコメントとして追記しています。

[78d9fe6947] Samuel Williams 2024-02-21 11:32:59 UTC

TracePoint の Thread が終了する時のイベント :thread_end の発火が例外で終了した時に行なわれていなかったのを修正しています。 https://github.com/ruby/ruby/pull/10039 [ruby-core:116890] [Bug #20286]

[04729fe68d] Samuel Williams 2024-02-21 11:33:18 UTC

78d9fe69479d32214a52ad7291c3973f1b6b7f6f の追加修正? で non-blocking Fiber 用の scheduler のセットをする rb_fiber_scheduler_set() で既存の scheduler を終了させる処理中の例外を捕捉する rb_ensure() を追加しています。 https://github.com/ruby/ruby/pull/10042 [ruby-core:116890] [Bug #20286]