ruby-trunk-changes 2026-03-17

今日は主に Enumerator::Lazy#tee メソッドの新規追加や Fiber のマシンスタック解放が行なわれない可能性があった不具合の修正、VM の構造体のレイアウト変更の最適化などがありました。

[54c85b8026] Burdette Lamar 2026-03-16 13:12:34 UTC

Pathname#cleanpath の rdoc 用コメントを追記しています。 https://github.com/ruby/ruby/pull/16387

[c2c6c9b530] BurdetteLamar 2026-03-15 18:54:08 UTC

File#path の rdoc 用コメントの typo 修正。

[a188e960c8] Peter Zhu 2026-03-15 17:21:21 UTC

RB_OBJ_WB_UNPROTECT() マクロの Doxygen 用コメントの説明を書き換えています。意味は変わってはないですがわかりやすくしたということかと思います。

[cb55f334b9] Jean Boussier 2026-03-16 10:27:33 UTC

構造体 struct rb_id_table の定義をヘッダファイル id_table.h に移動して他のソースファイルから参照できるようにしています。 ZJIT の binding も追加しているので ZJIT で使う予定なのかな。

[2003835d53] Jean Boussier 2026-03-16 10:31:35 UTC

構造体 rb_vm_t から constant_cache メンバーが struct rb_id_table へのポインタとして持っていたのを構造体を直接埋め込むように変更しています。

[caef12448c] Jean Boussier 2026-03-16 10:33:59 UTC

同じく構造体 rb_vm_t のメンバー negative_cme_table もポインタから直接 struct rb_id_table 構造体を埋め込むようにしています。

[08e03af56b] Jean Boussier 2026-03-16 10:46:17 UTC

同じく構造体 rb_vm_t のメンバー overloaded_cme_table もポインタから直接 struct rb_id_table 構造体を埋め込むようにしています。

[086c53dade] Jean Boussier 2026-03-16 10:57:01 UTC

同じく構造体 rb_vm_t のメンバー unused_block_warning_table もポインタから直接 struct rb_id_table 構造体を埋め込むようにしています。

[53351a4363] Jean Boussier 2026-03-16 11:39:07 UTC

同じく構造体 rb_vm_t のメンバー static_ext_inits もポインタから直接 struct rb_id_table 構造体を埋め込むようにしています。

[bbf00cea25] Aaron Patterson 2026-03-16 17:20:22 UTC

ZJIT の中間表現 HIR にデバッガ用の BearkPoint という命令を追加しています。元々 assembler に breakpoint を出力する機能はあったようで、中間表現 HIR で明示的に差し込むことができるようにしたみたいです。ZJIT 自体の開発時に BreakPoint 命令を生成するようにしてデバッグするという用途で通常の JIT で生成するわけではなさそうです。 https://github.com/ruby/ruby/pull/16390

[8f98abfc46] Alan Wu 2026-03-12 22:33:00 UTC

YJIT を起動時には有効にしておらず後から RubyVM::YJIT.enable で有効にした場合に初期化が不完全で? fork 後のプロセスなどの特定の条件で変数が見えなくなるなどの不具合が発生していたのを修正しているようです。 [ruby-core:124920] [Bug #21941]

[cfe7565f62] Edouard CHIN 2026-03-12 00:31:00 UTC

bundler の bundle install で gem パッケージを並列でダウンロードする処理を高速化するために、拡張ライブラリを含む gem は優先的にビルドを行うようにしているようです。

[77b5ab1f6f] Aaron Patterson 2026-03-16 17:55:10 UTC

ZJIT のオプション --zjit-dump-asm や --zjit-dump-disasm でダンプ結果をディレクトリ指定して process id を含むファイル名で出力するようにしています。

[471b68ba10] Max Bernstein 2026-03-16 17:29:46 UTC

ZJIT に bbf00cea2550024b2c8aab7f8c82fd1d62e1776f で追加した中間表現 HIR の命令 BreakPoint を ruby レベルで明示的に追加するためのメソッド RubyVM::ZJIT.induce_breakpoint! を追加しています。いちいち HIR の生成を変更しなくてもスクリプトから breakpoint を生成できるようにしています。

[06957d7b47] Max Bernstein 2026-03-16 17:33:36 UTC

ZJIT の Rust 実装のコメントの修正。

[14eb083152] Jean Boussier 2026-03-16 08:44:22 UTC

rb_gccct_clear_table() という global callcache のテーブルをリセットする関数で MEMZERO() を利用して一括でメモリクリアする最適化。

[0f109203b3] Jean Boussier 2026-03-16 14:23:30 UTC

構造体 struct rb_ractor_pub の targeted_hooks メンバーを st_table へのポインタにしていたのを st_table 自体を埋め込むようにしています。

[8982de2de8] Jean Boussier 2026-03-16 14:29:01 UTC

同様に構造体 rb_vm_t の ci_table メンバーもポインタによる参照から st_table を直接構造体に埋め込むようにしています。

[b1220ac587] Jean Boussier 2026-03-16 15:58:22 UTC

rb_estimate_iv_count() という関数内で struct rb_id_table を rb_id_table_create() でヒープからメモリ確保していたのをやめてマシンスタック上に struct rb_id_table を配置して初期化して利用するようにしています。

[6721ec2612] John Hawthorn 2026-03-06 19:34:19 UTC

拡張ライブラリ objspace の ObjectSpace.dump で T_TYPEDDATA 型オブジェクトを dump する時にヒープ上のメモリへの参照があるかどうか? のフラグ free_immediately のダンプを追加しています。

[4c6c02d86c] tompng 2026-02-21 18:00:58 UTC

Pathname#plus メソッドのコメントをドキュメント化抑制するため :nodoc: タグを追加しています。

[8723c8b256] Edouard CHIN 2026-03-16 21:12:40 UTC

rubygems の Gem::YAMLSerializer でとても古い gem の gemspec ファイルで余分な項目が存在して? 処理できないケースがあったのを修正しています。

[60e8042e69] Hiroshi SHIBATA 2026-03-16 07:44:36 UTC

rubygems の Gem::YAMLSerializer の psych との互換性を高めるための修正。

[3092f4fed4] "Garen J. Torikian" 2026-03-17 00:00:40 UTC

rubygems の gem owner サブコマンドでのユーザーの表示に role も追加しています。

[3b86c93740] Hiroshi SHIBATA 2026-03-17 01:26:23 UTC

rubyspec の gem owner のテストで master ブランチの ruby では通らなくなってたものを ruby_version_is で guard を追加しています。

[46f43eb475] Hiroshi SHIBATA 2026-03-17 04:30:56 UTC

GitHub Actions のリリース作業に関する workflow で別の GitHub Actions の workflow を起動して docker image をビルドさせる時のコマンドラインを修正して repository_dispatch というイベントで workflow を起動する? ようにしています。

[e2a705e5e5] "dependabot[bot]" 2026-03-17 05:42:44 UTC

GitHub Actions の workflows で利用しているアクションのバージョンを更新しています。

[8ecf28f938] Hiroshi SHIBATA 2026-03-17 03:51:06 UTC

rubygems の未代入のローカル変数への参照が起きる可能性があった不具合を修正しています。

[c40a29f79d] Hiroshi SHIBATA 2026-03-17 06:21:03 UTC

bundler で source に git リポジトリを指定していた時の git fetch コマンド実行時に --depth オプションの指定でエラーになったら --depth を外してリトライするように対応を追加しています。

[eb460a126b] Hiroshi SHIBATA 2026-03-17 06:22:59 UTC

bundler の Bundler::Source::Git::GitProxy の full_clone? メソッドを shallow? に改名して真偽値を反転させています。

[82b56a2825] Red 2026-03-17 08:32:45 UTC

Enumerator::Lazy#tee メソッドを追加しています。 Object#tap に似たようなもので最終的に評価される時にブロックに要素を渡して呼び出しつつ Enumerator::Lazy を返すというパイプラインの途中にブロックを差し込めるメソッドです。 each メソッドでそれできないんだっけ? と思ったのですが Enumerator::Lazy#each は最後まで評価を続けてしまうんでしたね(なので無限リスト的な Lazy に each を呼ぶと止まらない)。 [ruby-core:122847] [Feature #21520]

[2602e3a9b6] Erik Berlin 2026-03-05 21:12:25 UTC

標準添付ライブラリ net/http の gemspec ファイルの spec.files から test_sig という rbs のテスト用のディレクトリ? を除外するようにしています。

[dc1777d017] Samuel Williams 2026-03-17 09:18:45 UTC

Fiber の終了後にマシンスタック用のメモリ領域が解放されないケースがあった不具合を修正しています。 https://github.com/ruby/ruby/pull/16416 [ruby-core:125045] [Bug #21955]