今日は Struct や Ractor 用の内部オブジェクトのクラスなどで Variable Width Allocation による拡張された slot にさらに情報を埋め込めるようにする変更や callcache まわりの不具合修正などがありました。
[06312377ad] Peter Zhu 2025-07-31 18:38:16 UTC
Ractor::Selector#add の実装に RGenGC 用の Write Barrier を挿入して WB-protected なクラスとして宣言しています。
[9b3ad3449b] Jean Boussier 2025-08-06 13:23:29 UTC
子 Ractor での require 時に main Ractor に require 実行させてそれを待つための機構で内部的に使う T_TYPEDDATA 型オブジェクトのクラスの宣言に RUBY_TYPED_EMBEDDABLE フラグをつけて構造体部分を Variable Width Allocation で拡張された slot に埋め込めるようにしています。
[f3206cc79b] Jean Boussier 2025-08-06 12:46:36 UTC
T_STRUCT 型のオブジェクトで定義されている attribute は Variable Width Allocation で拡張された slot に埋め込みで保持されている場合がありますが、ここにさらに VALUE を埋め込む余地がある場合に追加のインスタンス変数や object_id などのための fields_obj への参照も埋め込むようにしています。
[7aa0e09bfe] ydah 2025-08-05 12:44:13 UTC
autogen.sh のコメントの typo 修正。
[bcd21053f7] S-H-GAMELINKS 2025-07-26 01:31:23 UTC
parse.y の AST の NODE の module 文に対応する NODE_MODULE に位置情報の保持を追加しています。
[ebb775be8d] Takashi Kokubun 2025-08-06 17:05:20 UTC
ZJIT の x86_64 向けの実行コード生成での整数の型の扱いの不具合修正。 https://github.com/ruby/ruby/pull/14125
[71b46938a7] Peter Zhu 2025-08-05 19:53:02 UTC
Symbol の管理用のグローバル変数 ruby_global_symbols の初期値がメンバーが last_id から next_id に変更されたのにオフセットがそのままで ID の採番が 1つずれていたのを修正しています。 6c24904a690eb7c4e20c3fa8c3751acc03454100 のあたりの変更の追随ですね。
[21cb1c9e92] Alan Wu 2025-08-06 05:25:27 UTC
ZJIT の x86_64 向けコード生成の不具合修正。
[e378a21a32] Alan Wu 2025-08-06 05:27:16 UTC
make zjit-test-all で TestFixnum のテストを skip していたのを実行するようにしています。たぶん 21cb1c9e929e9aaad24a9b64576aceb54b8e4e7a で修正したのでしょう。
[4a70f946a7] Stan Lo 2025-08-06 20:51:41 UTC
ZJIT で複数 Ractor を利用しはじめた時に Ractor が1つの前提で生成されたコードを破棄するための機構を準備しているみたいです。 https://github.com/ruby/ruby/pull/14121
[ba4a36e226] Max Bernstein 2025-08-06 20:56:01 UTC
ZJIT で attr_reader などで定義されたインスタンス変数を参照するメソッドの呼び出しをインライン化する最適化。 https://github.com/ruby/ruby/pull/14126
[a9f6fe0914] John Hawthorn 2025-08-06 21:05:03 UTC
T_IMEMO 型オブジェクトの GC.compact による移動の参照更新の処理で imemo_callcache 型の時に既にその callcache が invalidate されてた時に mark 処理をスキップするように修正しています。
[640a2f1dc7] John Hawthorn 2025-08-06 20:44:46 UTC
拡張ライブラリ objspace の ObjectSpace.dump で T_IMEMO 型オブジェクトの imemo_callcache タイプの時の処理でも callcache が invalidate されているかをチェックして不正なアクセスを抑制するようにしています。
[fccd96cc6c] John Hawthorn 2025-08-06 20:53:00 UTC
構造体 struct rb_callcache のメンバーにアクセスするための inline 関数 vm_cc_cme() と vm_cc_call() に VM_ASSERT() で invalidate されてないことをチェックするようにしています。