ruby-trunk-changes 2026-04-28

今日は主に主要な組み込みオブジェクト型を RGenGC の WB-protected としてビルドするための preprocessor 用マクロを削除する変更などがありました。

[558c104139] Earlopain 2026-04-22 19:29:13 UTC

prism で END ブロック内での break が文法エラーになっていなかったのを修正しています。 [ruby-core:117434] [Bug #20409]

[79aa1d238f] Jean Boussier 2026-04-27 13:38:57 UTC

新規オブジェクトを確保する特に NEWOBJ_OF() マクロから呼ばれる関数 rb_wb_protected_newobj_of() と rb_wb_unprotected_newobj_of() を rb_newobj_of() に統合して rb_execution_context_t の取得方法を統一するリファクタリング。

[587d03e74b] Jean Boussier 2026-04-27 13:50:48 UTC

79aa1d238fffe9726de7fdb3fadad2bcf92d7a9b からの続きで、リファクタリングで統合した rb_newobj_of() 関数からさらに rb_ec_newobj_of() という関数に改名して rb_newobj_of() はこれに GET_EC() で rb_execution_context_t を取得する wrapper 関数として定義しなおしています。

[ef7582802f] Étienne Barrié 2026-04-27 14:16:18 UTC

RubyVM::InstructionSequence のテストで未使用リテラルの警告抑制のためのダミーの代入を追加しています。

[5da79da578] Masafumi Koba 2026-04-27 16:04:15 UTC

標準添付ライブラリとしての prism の ripper 互換性対応。

[e603aa0d2f] Jean Boussier 2026-04-27 23:53:19 UTC

T_ARRAY 型オブジェクトが RGenGC の WB-protected であることを示す RGENGC_WB_PROTECTED_ARRAY というマクロはもう削除して常に WB-protected として扱うようにリファクタリングしています。

[7040286dfc] Jean Boussier 2026-04-27 23:55:08 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_HASH というマクロも削除して T_HASH も常に RGenGC の WB-protected なオブジェクトとしてビルドするようにしています。

[9307d1b5b6] Jean Boussier 2026-04-27 23:56:02 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_STRUCT マクロも削除して常に T_STRUCT 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[267ce6f842] Jean Boussier 2026-04-27 23:58:32 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_STRING マクロも削除して常に T_STRING 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[83d4117b07] Jean Boussier 2026-04-27 23:59:48 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_OBJECT マクロも削除して常に T_OBJECT 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[e9f372a231] Jean Boussier 2026-04-28 00:00:34 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_REGEXP マクロも削除して常に T_REGEXP 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[9e47f988fb] Jean Boussier 2026-04-28 00:01:10 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_MATCH マクロも削除して常に MatchedData オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[ac0a319dd5] Jean Boussier 2026-04-28 00:01:54 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_CLASS マクロも削除して常に T_CLASS 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[92cba2ef72] Jean Boussier 2026-04-28 00:02:40 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_FLOAT マクロも削除して常に T_FLOAT 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[5e99295f1e] Jean Boussier 2026-04-28 00:04:00 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_COMPLEX マクロも削除して常に T_COMPLEX 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[70451a4018] Jean Boussier 2026-04-28 00:04:48 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_RATIONAL マクロも削除して常に T_RATIONAL 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[c95a190d9c] Jean Boussier 2026-04-28 00:05:33 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に RGENGC_WB_PROTECTED_BIGNUM マクロも削除して常に T_BIGNUM 型オブジェクトが RGenGC の WB-protected なオブジェクトになるようにしています。

[379b95a2df] Jean Boussier 2026-04-28 00:06:06 UTC

e603aa0d2fecc80ef386c23886c9328933f86fcc と同様に既に未使用となっていた RGENGC_WB_PROTECTED_NODE_CREF マクロも削除しています。

[c202bc08e1] Jean Boussier 2026-04-28 00:47:55 UTC

NEWOBJ_OF() マクロを EC_NEWOBJ_OF() と改名して、NEWOBJ_OF() は最後の引数 ec を削除して ec に 0 を渡していた呼び元で使うようにリファクタリングしています。

[e4667e5109] Jean Boussier 2026-04-28 01:29:41 UTC

さらに NEWOBJ_OF() のリファクタリングで、flags に FL_WB_PROTECTED のビットが立っているかで分岐させていたのを、もう WB-protected なオブジェクトのほうが主流なので NEWOBJ_OF() は暗黙のうちに FL_WB_PROTECTED を立てるようにして、WB-unprotected なオブジェクトの確保用に UNPROTECTED_NEWOBJ_OF() マクロを用意するようにしています。

[2432ed8904] Jean Boussier 2026-04-28 01:42:08 UTC

さらに rb_ec_newobj_of() の引数から shape_id の指定を削除しています。 0 以外を渡すことはめったにないので必要な時は rb_newobj() を直接呼ぶようにしています。

[5e6e6781c2] "dependabot[bot]" 2026-04-28 03:41:43 UTC

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

[8d929853d8] Jean Boussier 2026-04-28 05:31:45 UTC

MatchData クラスのオブジェクトの wrap する構造体 rb_matchext_t をヒープに配置するのをやめて struct RMatch 内に埋め込むようにしています。 Variable Width Allocation で RVALUE のサイズに限定する必要がなくなったので slot 内に埋め込んでいるようです。