今日は主に Ruby::Box の不具合修正や GC の mmtk 実装のオブジェクト移動を可能にする実装追加などがありました。
[da89f7f58d] Nobuyoshi Nakada 2025-12-29 11:26:00 UTC
enumerator.c の struct product_state という構造体の index というメンバーの順序を変更して構造体サイズを小さくし(padding をなくして)、引数の配列のためのメモリ確保に ALLOCA() を使っていたのを ALLOCV() を使うようにしてスタックオーバーフローしにくいようにしています。
[56147001ec] Peter Zhu 2025-12-23 00:38:47 UTC
T_IMEMO 型オブジェクトを生成する関数 MEMO_NEW() を rb_imemo_memo_new() に改名してその定義を internal/imemo.h の inline 関数から imemo.c に移動しています。
[01cd9c9fad] Peter Zhu 2025-12-23 16:45:16 UTC
GC でオブジェクトを明示的に pin-down するための API rb_gc_register_pinning_obj() というのを追加して、何箇所かから呼んでいます。実際の GC の default 実装での実装はただの空の関数なので何も実効性はないようです。
[7902ae34d0] Peter Zhu 2025-12-25 01:38:22 UTC
GC の C API rb_gc_move_obj_during_marking() という関数を追加しています。 GC.compact によるオブジェクトの slot 移動が起きた時に対象のオブジェクトがインスタンス変数を持っていたら? generic_ivar のテーブルの mark 処理を走らせるようにしていています。まだ定義を追加しただけで呼び元はないですが。
[782d959f67] Peter Zhu 2025-12-26 16:55:42 UTC
GC の mmtk 版実装でオブジェクトの移動をサポートしています。 7902ae34d01a142fcbc0f669d93b1af5664ece42 で追加した rb_gc_move_obj_during_marking() はここで利用しているようです。
[8afd4fade6] Thomas Marshall 2025-12-29 12:54:28 UTC
prism の文法エラー(不完全なスクリプトのため)になるテストのレパートリーを追加しています。
[14fbcf0e6e] Thomas Marshall 2025-12-29 12:55:18 UTC
prism で SyntaxError のメッセージで開きかっこや def xxx...end や do...end の開いているトークンに対応する閉じるトークンが不足していることを伝えるようにしています。
[65634d8df5] Earlopain 2025-12-23 13:41:09 UTC
標準添付ライブラリとしての prism の最適化。
[d5af8d7858] Satoshi Tagomori 2025-12-30 05:46:19 UTC
クラスを作成する時に Ruby::Box の root box 内で作成する場合に class_alloc0() の第3引数 boxable に true を渡すようにしています。 root box 内で Module を include した時に作成される IClass が複数の rb_classext_t を持てないように初期化されてしまって異常終了? する可能性があった不具合を修正しています。
[3f616d5701] Nobuyoshi Nakada 2025-12-30 09:33:03 UTC
GitHub Actions の workflows で利用している ruby/setup-ruby アクションのバージョンを更新しています。
[27d6c96658] Nobuyoshi Nakada 2025-12-30 08:58:44 UTC
GitHub Actions の rubyspec を実行する workflow で実行対象の ruby バージョンに 4.0 系列を追加しています。