ruby-trunk-changes 2023-11-28

今日は C API rb_require() の不具合修正、GC まわりの不具合修正、YJIT の --yjit-stats オプションによる出力の追加などがありました。

[1c3088117a] Benoit Daloze 2023-11-24 12:14:56 UTC

拡張ライブラリ stringio の extconf.rb で CRuby 以外では Makefile をダミーのものにしてビルドしないようにしています。 https://github.com/ruby/openssl/issues/699

[d7165d88ec] Peter Zhu 2023-11-22 15:45:50 UTC

Enumerator::Yielder クラスを RGenGC 用の Write Barrier で保護して WB-protected にマークしています。

[2dadd17c78] Peter Zhu 2023-11-22 15:49:28 UTC

Enumerator::Generator クラスを RGenGC 用の Write Barrier を追加して WB-protected にマークしています。

[2e4a0a4d90] Peter Zhu 2023-11-22 15:54:32 UTC

Enumerator::Producer クラスを RGenGC 用の Write Barrier を追加して WB-protected にマークしています。

[ca4755b59a] Nobuyoshi Nakada 2023-11-27 15:13:05 UTC

rb_require() に存在しないファイル名を渡すと異常終了する不具合を修正しています。引数の文字列オブジェクトについて rb_str_resurrect() を呼ぶ必要がある場合があったようです。 [ruby-core:115489] [Bug #20023]

[7835ebce97] Peter Zhu 2023-11-27 15:23:31 UTC

gc_start() で compaction 中の状態をセットするタイミングを full GC を実施するかの判定の後にして、full mark 実施する時だけ compaction 実行中の状態をセットするように修正しています。

[196c4aeb76] Nobuyoshi Nakada 2023-11-27 11:15:54 UTC

標準添付ライブラリ rdoc の生成する HTML の余分な空白の抑制。

[8427a8a655] KJ Tsanaktsidis 2023-11-27 06:33:08 UTC

GC.compact のテストでたまに失敗するものを安定化するよう修正しています。 [ruby-core:115483] [Bug #20021]

[7973eb7c3f] Nobuyoshi Nakada 2023-11-27 16:06:47 UTC

標準添付ライブラリ rdoc の生成 HTML のための css の修正。

[e3875dd0f8] Peter Zhu 2023-11-27 16:13:47 UTC

gc_start() で GC.stress=true が設定されている時に incremental marking を抑制するようにしています。GC.stress が設定されているということは GC が走るタイミングで Object Space の全ての slot が mark されて不要なものが回収されることが期待されているので incremental marking が有効になるとちゃんと mark しきれなくてテストにならないので。

[23a7714343] Jean Boussier 2023-11-24 12:18:00 UTC

Thread の生成/終了や GVL 解放してブロックする処理への出入りのイベントのカウンタの実装を大きく変更して、内部的に使う TypedData 型のオブジェクトとして Thread の timeline を固定長のバッファで保持する構造体を wrap して持つようにしています。バッファオーバーフロー時には rb_bug() で異常終了するようにしてるけどいいのかな? このオブジェクト自体テストで使う専用っぽいからいいのかな。

[acab060c17] Benoit Daloze 2023-11-27 17:17:51 UTC

spec/mspec に upstream から最新版をマージしています。

[cc05a60c16] Benoit Daloze 2023-11-27 17:17:52 UTC

spec/ruby に upstream から最新版をマージしています。

[150ed44d87] Peter Zhu 2023-11-27 16:30:47 UTC

Array オブジェクトのバッファの部分配列を共有する Array オブジェクトを作る ary_make_partial() で GC が走る可能性があるため作ったばかりの Array オブジェクトが slot への埋め込みを利用するようフラグがセットされる可能性があるのでリセットする処理を追加しています。

[872922b03d] Peter Zhu 2023-11-27 19:04:56 UTC

shape.c のインデントの修正のみ。

[4d71f70fd1] Peter Zhu 2023-11-27 19:05:25 UTC

Object Shapes の実装で使っている赤黒木に RUBY_DEBUG を真にしてビルドされたデバッグ用ビルドの時に RUBY_ASSERT() による assertion を追加しています。

[94015e0dce] Peter Zhu 2023-11-27 19:45:47 UTC

String#scan の実装でマッチした部分文字列のオブジェクトが処理中の GC で回収されるのを防ぐため RB_GC_GUARD() による mark 漏れ回避を追加しています。

[7f50c70574] Maxime Chevalier-Boisvert 2023-11-27 22:49:53 UTC

YJIT の --yjit-stats オプションによる統計情報に C 実装のメソッドのメソッド名のランキングを表示するようにしています。 https://github.com/ruby/ruby/pull/9047

[def416899d] Sutou Kouhei 2023-11-28 01:38:15 UTC

拡張ライブラリ stringio のバージョンを 3.1.1 に更新しています。

[031e81c8f3] git 2023-11-28 01:39:40 UTC

NEWS の default gems のバージョンリストの stringio のバージョンも更新しています。

[1a16b6ffc2] Kouhei Yanagita 2022-01-27 05:37:48 UTC

Range#reverse_each が endless range に対して呼ばれた場合 TypeError 例外を発生させるようにしています。