ruby-trunk-changes 2024-03-28

今日はいくつかの起動時の GC からの保護漏れの不具合修正や拡張ライブラリ stringio の chilled string 対応などがありました。

[9ad175c1ee] Peter Zhu 2024-03-26 15:34:28 UTC

Init_Numeric() で各数字の fstring を生成しておくところであとでまとめて rb_vm_register_global_object() で mark の root に登録していたので途中で fstring 生成時に GC が発生すると回収されてしまう可能性があったので 1つずつ生成してすぐに登録するようにマクロを定義して修正しています。

[1d99fe430a] Peter Zhu 2024-03-26 15:35:44 UTC

VM の内部的な処理をメソッドとして呼び出すためのオブジェクト FrozenCore の classpath の rb_vm_register_global_object() での GC の root 登録を確保してすぐ後に移動しています。これも登録前に GC が発生する可能性があったようです。

[f14e52c8c4] Peter Zhu 2024-03-26 15:37:21 UTC

コマンドラインオプション --debug=gc_stress で起動処理中の GC.stress=true 状態にする処理で objspace の初期化前に objspace->flags の設定の予約をするため専用の static 変数を導入するように修正しています。

[19916bac96] Peter Zhu 2024-03-26 15:37:54 UTC

9ad175c1ee7137321310c4e87d8ce952b95abc8f1d99fe430aff34a90544d23edbd707f6f240dafef14e52c8c45f1288537ff38c153096d095b5ad20 などの修正で環境変数 RUBY_DEBUG=gc_stress を設定して起動時に GC.stress=true にするテストの skip を revert しています。

[aa794cc5a2] Peter Zhu 2024-03-26 18:25:41 UTC

Windows 環境では起動時の GC を抑制するようにしています。異常終了するとのこと。

[e4d6479730] Jeremy Evans 2024-03-22 20:53:35 UTC

引数処理時の中間オブジェクトの Array や Hash の生成の抑制についてのテストを追加しています。

[4566843b3e] Peter Zhu 2024-03-26 17:54:18 UTC

gc_move() で objspace->obj_to_id_tbl の st_table を検索する前にそのオブジェクトの struct RBasic::flags に FL_SEEN_OBJ_ID フラグが付いてないかチェックしてスキップする最適化。

[c50b6425b4] Peter Zhu 2024-03-26 17:59:21 UTC

4566843b3e9daf68984e8b051c7b11023099e788 の再修正。 gc_move() での objspace->obj_to_id_tbl の検索を st_lookup() してから st_delete() で削除するという処理をしていたのを st_delete() を直接呼んで戻り値をチェックするようにしています。

[db5686a8ba] Nobuyoshi Nakada 2024-03-27 17:27:08 UTC

tool/sync_default_gems.rb で IO.popen で git コマンドを起動する時に binary モードを指定するようにしています。

[0f5ab4ad52] Étienne Barrié 2024-03-27 16:57:51 UTC

拡張ライブラリ stringio で 2b08406cd0db0042520fb0346544660e10a4d93c で追加した C API rb_str_chilled_p() を利用して渡されたバッファが chilled string だった時に rb_str_modify() で複製するようにしています。 [ruby-core:117305] [Feature #20390]

[06563d78a1] Nobuyoshi Nakada 2024-03-27 17:06:48 UTC

拡張ライブラリ stringio のインデントの修正のみ。

[51e6becd39] Nobuyoshi Nakada 2024-03-27 17:30:46 UTC

拡張ライブラリ stringio で frozen string と chilled string をまとめて判定する readonly_string_p() という関数を定義するリファクタリング

[8c7b9bd0eb] KJ Tsanaktsidis 2024-02-17 06:50:16 UTC

子プロセスで SEGV を発生させるテスト用の assertion メソッドで ASAN を有効にしたビルドの時に不要な捕捉を抑制するため環境変数 ASAN_OPTIONS に handle_segv=0 を指定して子プロセスを起動するようにしています。

[7bdd742c02] KJ Tsanaktsidis 2024-03-12 07:24:56 UTC

同じく rlimit 系のテストで core dump のサイズの指定のためのテストで子プロセスを起動する時に環境変数 ASAN_OPTIONS に disable_coredump=0 を指定するようにしています。

[75234beb24] KJ Tsanaktsidis 2024-03-12 09:55:44 UTC

テスト用の Test::Unit 自体のテストでのタイムアウトの秒数に RUBY_TEST_TIMEOUT_SCALE によるスケーリングが効くようにしています。

[dc9d2455b6] KJ Tsanaktsidis 2024-03-12 07:24:07 UTC

Process.warmup でアプリケーションの初期化処理が完了する時に heap のオブジェクトの処理をする時に asan_unpoisoning_object() マクロを利用して ASAN 有効化時の不要な検出を抑制するようにしています。

[8423613276] Naoto Ono 2024-03-26 03:47:29 UTC

GitHub Actions の macOS 環境版の workflow で ruby/rubyリポジトリの時は macos-arm-oss を使うようにしています。

[7293cef0a8] Nobuyoshi Nakada 2024-03-28 01:55:19 UTC

LEGAL の rubygems に vendoring されている molinillo の記述のファイルパスを修正しています。

[67bdb7aaba] Nobuyoshi Nakada 2024-03-28 02:18:31 UTC

LEGAL のライセンスについてのリンクを rdoc-label から rdoc-ref によるリンクに変更しています。

[7630a89a4b] Hiroshi SHIBATA 2024-03-28 00:45:01 UTC

あちこちのドキュメントやコメントでの RFC へのリンクを https://www.rfc-editor.org/rfc/ へのリンクに統一しています。