今日は主に GC の実装を切り出した部分の規約の整理や undef 文に対応する AST の作りかたの変更などがありました。
[0936e3d545] Peter Zhu 2024-07-18 14:38:52 UTC
ObjectSpace.define_finalizer の実装 define_final() を rb_define_finalizer() に委譲するようにリファクタリングしています。
[e8aa9daa5b] Peter Zhu 2024-07-18 17:36:23 UTC
rb_define_finalizer() の戻り値を GC 実装の rb_gc_impl_define_finalizer() の期待する形に合わせて2要素の配列に詰めて返すようにしています。
[57d9b8ee07] Peter Zhu 2024-07-18 17:44:38 UTC
gc/default.c の rb_gc_impl_define_finalizer() で引数の obj が freeze されていないことをチェックする GC_ASSERT() を追加しています。
[4b05d2dbb0] Peter Zhu 2024-07-18 17:39:24 UTC
GC の実装の undefine_finalizer という関数の戻り値を VALUE から void に変更しています。
[51505f70e3] Peter Zhu 2024-07-18 17:40:42 UTC
gc/default.c の rb_gc_impl_undefine_finalizer() で obj の freeze してないかのチェックをしていたのを呼び元の gc.c の undefine_final() のほうでチェックするように規約を変更しています。
[49cf042cd2] Kevin Newton 2024-07-19 13:06:48 UTC
prism を parser として利用していた時の __END__ があった時に DATA 定数を定義する処理を追加しています。
[30f2d69825] Jean Boussier 2024-07-19 13:31:29 UTC
拡張ライブラリ psych の Psych::ScalarScanner#tokenize でループ内の頻繁に呼ばれる位置で require を遅延して呼んでたのがパフォーマンスに影響があったようで Date に対して autoload を設定するようにしています。
[8cf708d7b4] Alan Wu 2024-07-19 19:53:16 UTC
chilled string の導入の影響で? rb_check_frozen() が inline 化されなくなってしまったのでその内容を include/ruby/internal/intern/error.h で rb_check_frozen_inline() という inline 関数として定義して、ここで CHILLED_STRING_P() というマクロを使っていたのを展開してベタ書きしておくようにしています。こうしないと inline 化されないのなんでだろう。
[174c01b80e] Takashi Kokubun 2024-07-20 01:36:14 UTC
Array#each, #map, #select などの ruby 実装のメソッドで Primitive.attr! :use_block でブロックを受け付けるフラグを立てていたのを削っています。 メソッド本体で yield を呼んでいれば明示的な宣言は不要とのこと。 https://github.com/ruby/ruby/pull/11203
[6be539aab5] yui-knk 2024-07-18 04:47:13 UTC
undef 文に対応する AST の NODE_UNDEF が複数の引数を持っていた時に複数の undef 文が書いてあった場合と区別のつかない構造になるように構築されていたのを、引数が複数であるという情報が保持されるようにしています。
[84680dc255] yui-knk 2024-07-20 01:02:16 UTC
6be539aab5b8fd66685e6079afc6ca83c89fcbd6 の続きで NODE_UNDEF に undef 文の位置情報をセットする処理が漏れてたのを修正しています。