ruby-trunk-changes 2020-11-03

今日は GC 時に自動的に GC.compact も実施するように設定する GC.auto_compact= メソッドの追加などがありました。

[79b242260b] Nobuyoshi Nakada 2020-11-02 13:48:28 UTC

parse.y で magic comment の frozen-string-literal に不正な値が指定されてた時の警告を rb_compile_warning() を直接読んでたのを rb_warning2() というマクロ経由で呼ぶようにしています。拡張ライブラリ ripper で parse した時に警告を正しく扱えるようにするたみみたいですね。

[67b2c21c32] Aaron Patterson 2020-11-02 22:40:29 UTC

GC.auto_compact= というメソッドを追加して GC 実行時に自動的に GC.compact によるオブジェクトの移動も行なわれるよう設定可能にしています。おお、ついに。変更内容をみると単にフラグを追加して処理追加してるだけではなくて GC の sweep 処理内に参照の更新対応などがマージされているので結構大きな変更になっています。おそらく安定するまでしばらくかかりそうですね。またついでに GC.stat の返す統計情報に :read_barrier_faults, :total_moved_objects といった項目を追加しています。 read_barrier_faults はなにかなと思ったら GC.compact の処理中にのみ SIGBUS や SIGSEGV のシグナルハンドラに read_barrier_signal() というハンドラが追加されてて、移動したオブジェクトの struct RVALUE の領域を mprotect(2) などで保護して不正なアクセスがあったら検出するようにしているようです。デバッグ用かな? [ruby-core:100025] [Feature #17176]

[46f3b68fbf] git 2020-11-02 22:43:29 UTC

version.h の日付更新

[4f7d27a210] Luciano Sousa 2020-11-03 00:26:31 UTC

67b2c21c327c96d80b8a0fe02a96d417e85293e8GC.auto_compact= 追加の NEWS の追記部分の typo 修正。コミットログに絵文字が入っているのがいまどきですね。

[fa7484019d] Kazuhiro NISHIYAMA 2020-11-03 01:25:52 UTC

NEWS.md にチケットの参照リンク用 footnote を追記しています。