ruby-trunk-changes 2021-02-18

今日は GC の複数 Ractor 化での不具合修正などがありました。

[969b824a0c] Koichi Sasada 2021-02-18 06:47:32 UTC

Ractor を利用時に大きな配列をたくさん作ったりしてると異常終了することがある不具合の修正。 gc_enter() で gc_enter_event_rest というイベントの時も mark 時には rb_vm_barrier() を呼び出して他の Ractor を停止させておくようにしています。 [ruby-core:102541] [Bug #17634]

[feed820c96] git 2021-02-18 07:41:20 UTC

version.h の日付更新

[70cf53b4d2] Nobuyoshi Nakada 2021-02-18 07:51:44 UTC

gems/bundled_gems の rbs のバージョンを 1.0.6 に更新しています。

[100e464bee] Koichi Sasada 2021-02-18 07:15:41 UTC

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations_start でオブジェクト確保の情報収集中に T_NONE 型のオブジェクトを mark しようとして異常終了してしまうという不具合の修正。gc_event_hook() というマクロに任意の式を埋め込める gc_event_hook_prep() というマクロを追加して newobj_slowpath() で GC のイベントフック呼び出し前に確保したオブジェクトの struct RVALUE のメンバーを 0クリアしておくようにしています。イベントフック内で不正なメモリにうっかり触らないようにするため? [ruby-core:102334] [Bug #17599]

[07ab172ebe] Koichi Sasada 2021-02-18 06:04:33 UTC

check_rvalue_consistency_force() という RGENGC_CHECK_MODE マクロで GC 関係のデバッグ用の一貫性チェックを実行する関数が複数 Ractor が動いている環境で異常終了してしまうので RB_VM_LOCK_ENTER_NO_BARRIER()/RB_VM_LOCK_LEAVE_NO_BARRIER() で他の Ractor を停止させてから実行するようにしています。 [ruby-core:102543] [Bug #17636]