以下の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20260210より取得しました。


ruby-trunk-changes 2026-02-10

今日は主に ZJIT での Array の組み込みメソッドのインライン化による最適化などがありました。

[cb37ef5b2a] Earlopain 2026-02-09 15:36:18 UTC

prism の自動生成する Node 用の ruby スクリプト内の rdoc 用コメントのリンクの追加などの改善。 https://github.com/ruby/prism/pull/3912

[0679e3b6bc] "dependabot[bot]" 2026-02-09 02:18:55 UTC

YJIT および ZJIT 用の Cargo.toml で capstone のバージョンを更新しています。

[84c9822fef] Max Bernstein 2026-02-09 15:16:03 UTC

0679e3b6bc76509d7c65ae15f4516efabbd62b26 に続いてトップディレクトリの Cargo.lock も更新しています。また capstone という Rust のパッケージの更新に伴なって YJIT/ZJIT の Rust 製テストの修正をしています。

[21862be0af] Max Bernstein 2026-02-09 17:40:27 UTC

ZJIT の中間表現 HIR のダンプ時に命令 GuardAnyBitSet と GuardNoBitsSet にビットマスクを定数名で表示するようにしています。 https://github.com/ruby/ruby/pull/16064

[4d13aeb3ca] Max Bernstein 2026-02-09 17:52:35 UTC

ZJIT で defined?(yield) がメソッド内でない(トップレベル?)で書かれてた時に nil を返すショートカットを実装しています。 https://github.com/ruby/ruby/pull/16063

[be54efb403] Max Bernstein 2026-02-05 18:52:15 UTC

ZJIT の中間表現 HIR の GuardGreaterEq 命令に reason を追加して side-exit 時の理由を伝播させるようにしています。

[3d00e34ab1] Max Bernstein 2026-02-05 18:53:08 UTC

ZJIT で多値代入(代入の左辺が `a, b =` のようにカンマで複数の変数が書かれている)時の右辺値の配列の要素数が変数の数より多くても許容するようにしています。 GuardGreaterEq 命令でチェックするように変更しているけど、これ右辺値の要素数が少なくても文法上はOKなんじゃなかったっけ。その場合 JIT コードを実行続けられずに side-exit するだけということだと思うけど。

[51d4c2c465] Xavier Noria 2026-02-09 12:46:05 UTC

rubygems の Gem::Specification クラスの rdoc 用コメントに gemspec ファイル内で分岐しないようにしましょうという注意を追記しています。

[9efe557da5] Max Bernstein 2026-02-09 21:40:25 UTC

ZJIT でブロック渡しのメソッド呼び出しがあるとローカル変数がブロック内から変更される可能性があるため ruby のローカル変数の VALUE 型をレジスタに割り当てるなどの最適化はできないようにしていましたが、より詳細にエスケープの有無を判定して極力最適化できるように対応しています。 https://github.com/ruby/ruby/pull/16113

[e0b757f63a] Nozomi Hijikata 2026-02-09 22:34:59 UTC

ZJIT で VM 命令 getconstant のコンパイルに対応しています。また実装されてなかったんだ。 https://github.com/ruby/ruby/pull/16109

[836c170010] Mike Dalessio 2026-02-09 18:45:34 UTC

UnboundMethod#== メソッドで Module#include や Module#prepend で差し込まれた T_ICLASS 経由のメソッドの時の誤判定を修正しています。 [ruby-core:124741] [Bug #21873]

[f43d294d58] Max Bernstein 2026-02-06 20:50:56 UTC

組み込みクラスの ruby 実装から使う Primitive.attr! で設定できるメソッドの属性に :without_interrupts というのを追加して、この属性を持つメソッド内ではジャンプ系の VM 命令 jump, branchif, branchunless, branchnil などに _without_ints という suffix をつけた新しい命令を使うようにしています。 YJIT や ZJIT でもこれらの命令に対応してジャンプ後に割り込みチェックを行なわないようにしています。で Array#each などにこの属性を追加しています。

[f96f84837d] Max Bernstein 2026-02-06 22:40:17 UTC

Array クラスの組み込みメソッドの ruby 実装から Primitive.cexpr! 経由で呼び出す C の関数に ary_fetch_next() を呼び出していたのを JIT 専用の関数を導入して Primitive.rb_jit_ary_at や Primitive.rb_jit_fixnum_inc などの特殊メソッドで呼び出すようにしています。 C の関数呼び出しすらなくしてフラットなループとして実装したいということですかね。

[98e6f5e4bc] Max Bernstein 2026-02-06 22:45:58 UTC

ZJIT の有効化時に? RubyVM::ZJIT.call_jit_hooks メソッドを呼ぶようにしています。

[11c845efec] Max Bernstein 2026-02-07 02:43:23 UTC

f96f84837d5dfedaee9758141fd2006ffb03e96d で導入した Array の ZJIT 時に利用する組み込みメソッドの ruby 実装版の Primitive のメソッドで呼ぶ関数をさらに ZJIT でインライン化する最適化。

[f96d106d3a] Max Bernstein 2026-02-09 23:55:32 UTC

11c845efecc76735110e40d9b05ff5045f1ce925 の続き? で ZJIT 利用時の Array の組み込みメソッドの ruby 実装版で Array への要素追加も rb_ary_push() を呼んでたのを専用の関数 rb_jit_ary_push() を定義してこれを Primitive.rb_jit_ary_push で呼ぶようにしています。 JIT で関数を認識してこれも inline 化するためですかね。

[7c13b21f47] BurdetteLamar 2026-02-09 17:30:09 UTC

doc/jit/yjit.md のリンクを修正しています。

[a4b28f14cc] Peter Zhu 2026-02-10 02:16:20 UTC

Array#flatten! の rdoc 用コメントのサンプルの Hash#inspect の形式を変更しています。

[752c88bab3] Peter Zhu 2026-02-10 02:17:10 UTC

Array#flatten の rdoc 用コメントのサンプルの Hash#inspect の形式を変更しています。

[1fcabc481a] Burdette Lamar 2026-02-10 02:55:35 UTC

doc/contributing/documentation_guide.md のリンクを絶対 URL にしていたのを相対パスでのリンクに変更しています。

[8f82cbf8ff] Peter Zhu 2026-02-10 02:51:04 UTC

dependabot の設定で cargo の更新の対象から gc/mmtk/ の配下を除外しています。upstream で更新チェックしているので ruby/ruby 内では不要とのこと。

[2967f98f30] Peter Zhu 2026-02-10 03:50:33 UTC

8f82cbf8ffc3e22b489efa19c006789f90bc0046 の .github/dependabot.yml のパス指定の先頭に "/" が含まれていたのを削っています。

[1ea75b711f] git 2026-02-10 07:09:10 UTC

gems/bundled_gems と NEWS の bundled gems バージョンリストの rdoc と irb のバージョンを更新/追記しています。




以上の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20260210より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14