ruby-trunk-changes 2022-12-11

今日は主に Object Shapes の最近のインスタンス変数削除時の実装変更に追随した修正や GC.lastest_gc_info の項目追加などがありました。

[12003acbb9] Jemma Issroff 2022-12-09 18:33:48 UTC

edc7af48acd12666a2945f30901d16b62a39f474インスタンス変数を削除した時に Object Shapes のツリー情報を再構築するように変更した時に rb_shape_t::capacity を更新するのが漏れているところがあったので修正しているようです。

[ea613c6360] Mirek Klimos 2022-12-10 18:35:31 UTC

GC.latest_gc_info で返す GC の統計情報に need_major_by という項目を追加しています。これは major GC のトリガーの理由を :nofree, :oldgen, :shady, :force などの Symbol で返すものみたいです。 pull request の説明をみると web アプリケーションでリクエストの処理中に major GC を実施したくないのでリクエスト間で GC を明示的に起動したいけど、毎回やると無駄が多いので「次は major GC が必要になる」というのを検出して実施したい、という同期によるものみたいです。ということはこれは起動した GC の情報じゃなくて「次の GC が major になる」という状態を検出するためのものなのですかね。 https://github.com/ruby/ruby/pull/6791 あとこれは [NEWS] に追記が必要そうですね。

[7055574cf9] Nobuyoshi Nakada 2022-12-06 13:16:29 UTC

make に ALWAYS_UPDATE_UNICODE=yes を指定すると Unicode のデータファイルのダウンロードが二重に行なわれるとのことで update-unicode-xxx のターゲットを .SECONDARY という特別なターゲットの依存関係にしています。これは .PHONY のような特別な意味のあるターゲットでこのターゲットの依存にしたターゲットは中間ファイルとして扱われるとのことで、不要な再実行を抑制する意味があるみたいです。 [ruby-core:111205] [Bug #19182]

[9d59d093bd] Takashi Kokubun 2022-12-11 06:21:06 UTC

MJIT でメソッドの ISeq を JIT コンパイルするかどうかを呼び出し回数を元に判定しているあたりの処理を大きく変更しています。詳細は読んでいませんが pull request のコメントによると(利用状況にも依ると思いますが)より小刻みにコンパイルするようにしているようです。 https://github.com/ruby/ruby/pull/6900

[9477ec732b] nagachika 2022-12-11 11:23:36 UTC

NEWS.md でチケット参照があやまってセクションヘッダについているところがあったので修正しています。