今日は ZJIT のいくつかのメソッドのインライン化の最適化や ZJIT でコード生成中に GC を止める対策などがありました。
[63a58c7943] Max Bernstein 2025-10-15 14:24:10 UTC
ZJIT で de310176c25bfb82e972025c1ea388228bcea159 の最適化の際に Array#[] で引数が Fixnum の時に定数に展開する最適化が receiver の Array が freeze されていない時も行なわれていて不具合になっていたのを修正しています。 https://github.com/ruby/ruby/pull/14841
[31a1a39ace] Alan Wu 2025-10-15 17:27:30 UTC
ZJIT でコード生成しているあいだ GC を止めて安定化するようにしています。
[27ff586152] Luke Gruber 2025-10-10 18:47:46 UTC
オブジェクトを解放する free 関数の中では複数 Ractor 対応のための VM ロックの取得をしないようにしています。主に fiber pool の管理のところでロック取得をやめてロックが既に取られている時だけ fiber_stack_release() を呼ぶような実装にしています。 GC の mmtk 実装の時の制約で free 関数実行が別の thread から呼ばれる可能性があり EC を取得できないためとのこと。これってメモリリークが発生するってことなのかな?
[6a94632d4a] Aiden Fox Ivey 2025-10-15 18:00:44 UTC
ZJIT で Hash#[] をインライン化する最適化を実装しています。 https://github.com/ruby/ruby/pull/14838
[829b1884c0] Nathan Froyd 2025-10-15 17:24:56 UTC
prism の整数リテラルに明示的に 1U のように unsigned を指定する suffix を付ける警告除去。
[b052d706a5] Nathan Froyd 2025-10-15 17:26:01 UTC
prism の 829b1884c0c917ca47988abc2c626c47c5748197 と同様の整数リテラルの suffix 追加。
[4c426e98a8] Alan Wu 2025-10-15 17:53:57 UTC
31a1a39ace8971f7ac8e1d192c4e61ae89108422 の再修正で ZJIT で GC を停止する時に rb_gc_disable_no_rest() のかわりに rb_gc_disable() を使うようにしています。再入による異常終了が発生する可能性があったようです。
[d272a81f42] Aiden Fox Ivey 2025-10-15 18:39:46 UTC
ZJIT の Rust 実装の小さなリファクタリング。
[5a9fac6939] Peter Zhu 2025-10-15 00:49:59 UTC
Namespace のテストで assert_equal の引数の expect と result の順序が逆だったのを修正しています。
[9e4a756963] John Hawthorn 2025-10-15 06:59:39 UTC
GC の default 実装で不正なオブジェクトチェック時に RB_TYPE_P() マクロを利用していたところを BUILTIN_TYPE() を利用するようにやや軽量化しています。
[45c016866c] John Hawthorn 2025-07-22 16:40:20 UTC
内部的に利用している concurrent_set という構造体の実装で atomic な操作のために RUBY_ATOMIC_VALUE_LOAD() や RUBY_ATOMIC_VALUE_SET()、RUBY_ATOMIC_VALUE_EXCHANGE() などの厳格な atomic 処理のためのマクロから rbimpl_atomic_value_load()/rbimpl_atomic_value_cas() といった memory order の指定つきのより柔軟な inline 関数を直接利用するようにしています。少し高速化が期待できるようです。
[7a474e1fbd] Max Bernstein 2025-10-16 02:01:00 UTC
ZJIT で String#getbyte をインライン化する最適化を実装しています。 https://github.com/ruby/ruby/pull/14842
[1d95d75c3f] Max Bernstein 2025-10-16 03:40:45 UTC
ZJIT の Integer#succ もインライン化する最適化を実装しています。 https://github.com/ruby/ruby/pull/14846