ruby-trunk-changes 2023-06-07

今日は YJIT の IO#reopen の挙動に対応する修正や GC.gc_verify_compaction_references の修正などがありました。

[c3dc9fcc70] Peter Zhu 2023-06-05 14:54:28 UTC

GC.gc_verify_compaction_references の実装で heap に pages を追加する数の計算の不具合を修正しています。

[fae2f80d06] Peter Zhu 2023-06-05 14:54:47 UTC

1ac17693de4e80f7b1e11622dd77376e409cd4ea などで GC のテストのデバッグ用のメッセージ追加をしていた変更を元に戻しています。 おそらく c3dc9fcc70514d2d74985e48ee24f7799a66899a が対応する不具合修正になってたのかな。

[7577c101ed] Peter Zhu 2023-06-06 14:19:20 UTC

T_STRING 型オブジェクトで文字列のバッファを slot に埋め込んでる場合とヒープ上にメモリ確保している場合で文字列長を管理する構造体メンバを共用体 struct RString::as の中に入れてたのを struct RString::len に括り出しています。サイズも同じで分けている必要がなかったので。これにより RSTRING_EMBED_LEN() というマクロも不要になったので削除しています。 https://github.com/ruby/ruby/pull/7908

[2b54c135ff] Alan Wu 2023-06-06 14:21:29 UTC

YJIT の実装で IO#reopen というメソッドを使うとインスタンスのクラスを変更できてしまうという特殊な挙動があるのでこれを JIT コード生成のためのクラスの推定の例外処理として対応を追加しています。 https://github.com/ruby/ruby/pull/7911

[46583f7dcf] Nobuyoshi Nakada 2023-06-07 01:10:08 UTC

io.c の関数定義の C のスタイル修正。