今日は object_id の管理を Object Shapes の機構を利用して行なうようにする変更などがありました。
[3e94b5f9c0] Peter Zhu 2025-05-06 20:46:06 UTC
GC の default 実装 gc/default/default.c で internal/hash.h で宣言されている API を利用しないようにしています。rb_hash_has_key() のかわりに rb_hash_lookup2() を、rb_hash_stlike_foreach() のかわりに rb_hash_foreach() を利用するようにしています。
[4e30b77b90] Hiroshi SHIBATA 2025-05-08 02:53:39 UTC
テスト用の拡張ライブラリ ext/-test-/econv/ に依存関係を記述した depend ファイルを追加して、ヘッダ更新時に再コンパイルされるようにしています。
[0ea210d1ea] Jean Boussier 2025-04-30 07:42:57 UTC
構造体 rb_classext_t のメンバー iv_ptr を fields と改名して対応するマクロや変数名、関数名なども追随して変更しています。 https://github.com/ruby/ruby/pull/13159
[6c9b3ac232] Jean Boussier 2025-05-05 09:10:08 UTC
Object Shapes の実装で SHAPE_OBJ_TOO_COMPLEX の定数を直接参照する実装をしなくて済むように rb_shape_too_complex_p() や b_shape_id_too_complex_p() といった C API を追加して GC や YJIT/ZJIT からはこれを利用するようにしています。 https://github.com/ruby/ruby/pull/13159
[d34c150547] Jean Boussier 2025-04-21 03:01:01 UTC
Object Shapes の構造体 rb_shape_t に flags メンバーを追加してビットフラグで frozen という状態を持てるようにしてインスタンス変数のコピー処理を軽量化? しているようです。が、これ自体が目的というよりは次からの object_id の情報を Object Shapes に持たせる変更のための準備という感じみたいです。 https://github.com/ruby/ruby/pull/13159
[f48e45d1e9] Jean Boussier 2025-04-21 07:16:07 UTC
オブジェクトの object_id (__id__) の値を管理するテーブルを Object Shapes の rb_shape_t の管理するインスタンス変数のテーブルに同居させて Object Shapes で管理するようにしているようです。0ea210d1ea257162642969edce665935cc87c643 でのメンバー名の変更や d34c15054708c84e9d3305ede0752820b42ac498 での rb_shape_t::flags メンバーの追加などはこのための準備も兼ねてたようです。 https://github.com/ruby/ruby/pull/13159
[2d1241ba97] Jean Boussier 2025-05-07 15:56:13 UTC
f48e45d1e9c4412d5f3ee49241d0b9359651ce7c の object_id の管理を Object Shapes に混ぜる変更の追随で GC の mark 処理の rb_gc_vm_weak_table_foreach() で不要になったテーブル種類 RB_GC_VM_ID_TO_OBJ_TABLE_KEYS の処理を削っています。
[cf9046c00b] Jean Boussier 2025-05-07 16:17:16 UTC
GC で id_to_obj_tbl を GC.compact で更新する処理で st_foreach_with_replace() を使って st_foreach() のコールバック内で st_insert() する実装を置き換えています。一時的に GC を停止するのを不要にするため。
[71baa6943b] Jean Boussier 2025-05-08 07:05:28 UTC
variable.c のコンパイル時の警告抑制のため明示的な初期化と UNREACHABLE_RETURN() で到達しない節の明示をしています。
[49b4e0350d] Jean Boussier 2025-05-08 07:11:09 UTC
Ractor 間での ENV のテストで Ractor 間でやりとりするオブジェクトを object_id の結果の整数を使ってたのを ENV 自身を渡すようにしています。けど ENV って Ractor shareable なのかな。
[1f2a9dc2a9] Jean Boussier 2025-05-03 10:57:39 UTC
拡張ライブラリ psych で組み込みクラス化した Set の時の対応のため Set#encode_with メソッドを追加するのを、Set のインスタンスのインスタンス変数の有無で判定して組み込みクラスの時だけ定義するようにしています。
[61b6f226e8] Nobuyoshi Nakada 2025-05-06 09:22:18 UTC
拡張ライブラリ json の vendoring している fpconv の実装でテーブル的に使う配列の変数宣言に const 修飾子を追加しています。
[5a0306f9c1] Charles Oliver Nutter 2025-05-03 00:26:53 UTC
拡張ライブラリ strscan のテストに StringScanner#scan_integer の前に StringScanner#pos= で位置を指定するケースを追加しています。 https://github.com/jruby/jruby/issues/8823 https://github.com/ruby/strscan/pull/150
[8685a81e6a] Charles Oliver Nutter 2025-05-03 04:26:05 UTC
拡張ライブラリ strscan の StringScanner#scan_integer のテストに "+" や "-" だけの文字列の時のテストケースを追加しています。 https://github.com/ruby/strscan/pull/152 https://github.com/ruby/strscan/pull/153
[819ecd115d] Yusuke Nakamura 2025-05-03 14:59:41 UTC
rubygems の gem パッケージにファイルを追加する時の mtime を Gem::Package::TarWriter#add_file の引数で指定できるようにしています。
[a41eed99c0] Ellen Marie Dash 2025-05-05 22:03:26 UTC
819ecd115d663e5d0c7e1f14902f5bfde0a7414a で追加した rubygems の Gem::Package::TarWriter のテストで引数に渡す Time と assertion で比較する Time を同一のものを使うようにしています。
[f3006c26de] Nobuyoshi Nakada 2025-05-08 08:31:56 UTC
テスト用の拡張ライブラリ群に depend ファイルを追加しています。