ruby-trunk-changes 2024-03-01

今日は主にデバッグ用の検証ビルド時チェック強化や Struct.new で定数を追加して remove_const で削除した時のメモリリークの修正などがありました。

[1a6a7c699c] Soutaro Matsumoto 2024-02-29 12:32:16 UTC

gems/bundled_gems の rbs のテストに使う commit hash の指定を追加しています。 https://github.com/ruby/ruby/pull/10121

[d5bca0668c] Peter Zhu 2024-02-29 14:32:10 UTC

finalizer の設定されているオブジェクトの struct RBasic::flags の FL_FINALIZE ビットフラグをクリアするのを run_finalizer() 実行前に変更しています。 GC.verify_internal_consistency で FL_FINALIZE フラグのチェックもするようになったので finalizer 実行中に GC が発生して別スレッドに処理が切り替わった時に検出されないようにするためだと思われます。

[950c60623b] Peter Zhu 2024-02-29 14:36:01 UTC

d5bca0668c6006e0e155d6d293ec3d9b9b2c386b の続きで finalizer の実行後前に st_table からのエントリ削除をしておくようにしています。やはり一貫性チェックの誤検出対応のため。

[8a918b456c] Peter Zhu 2024-02-28 21:29:22 UTC

gc.c で object space の heap 内の slot をループする処理を gc_each_object() という関数に切り出すリファクタリング。処理がコールバック関数経由になるのはパフォーマンスには影響しないのかな。

[4c0f0b90a4] Peter Zhu 2024-02-29 16:07:53 UTC

gc.c の rb_gc_copy_finalizer() という関数でも finalizer の設定されているオブジェクトの struct RBasic::flags の FL_FINALIZE フラグが立っているのに finalizer_table という st_table にエントリがない時に rb_bug() で異常終了させるようにしています。

[f9d5c604c8] Kevin Newton 2024-02-29 16:01:07 UTC

prism 用のコマンドラインオプションの -e の対応を追加しているようです。

[57f014b2fa] Yuta Saito 2024-02-05 17:38:05 UTC

enc/Makefile.in および lib/mkmf.rb が生成する拡張ライブラリ用 Makefile で LD 変数を rbconfig.rb の設定を伝播させるようにしています。本体のリンク時と異なるリンカを enc や拡張ライブラリのリンク時に使ってしまい特にクロスコンパイル時におかしくなってしまうみたいです。

[6e2880b388] Yuta Saito 2023-12-18 17:59:52 UTC

WASI 環境で動的リンクがサポートされたようなので configure で LDSHARED 変数の設定を追加しています。

[6665ec26db] Peter Zhu 2024-02-29 16:27:48 UTC

gc.c の gc_mark_stack_values() で mark する前に is_markable_object() を呼んでいたのが冗長だったようで削除しています。

[3d61477900] Peter Zhu 2024-02-29 16:29:18 UTC

gc.c の gc_mark_stack_values() という static 関数を削除して唯一の呼び元に処理を展開しています。

[1a588922ae] Takashi Kokubun 2024-02-29 18:30:38 UTC

VM_CHECK_MODE に正の数を指定してデバッグ用にビルドされた時に VM のスタック操作時に execution context と stack pointer のチェックをする関数 rb_vm_check_canary() で命令の名前を得る処理を後に移動しています。異常が検知されたけど詳しい状況がわからないので iseq が NULL であることを確認するためにそれとわかる別の処理を先に実行させるというデバッグのためみたいです。

[d3ae5808bb] Peter Zhu 2024-02-29 18:37:21 UTC

gc.c から each_machine_stack_value() という static 関数を削除して唯一の呼び元に処理を展開しています。

[2508a79699] Kasumi Hanazuki 2024-02-28 06:48:40 UTC

標準添付ライブラリ resolv で DNS の CAA レコードへの対応を追加しています。 https://github.com/ruby/ruby/pull/1732 [ruby-core:83602] [Feature #14066]

[8ec9c2dd16] "dependabot[bot]" 2024-03-01 02:48:46 UTC

GitHub Actions の独自アクションの実装で使っている actions/cache アクションのバージョンを更新しています。

[b26602f828] "dependabot[bot]" 2024-03-01 02:59:12 UTC

GitHub Actions の workflows で利用している github/codeql-action のバージョンを更新しています。

[1952c799af] Hiroshi SHIBATA 2024-03-01 03:01:19 UTC

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

[874e9fc34d] Hiroshi SHIBATA 2024-03-01 03:02:29 UTC

rubygems の再定義する require での警告のための tool/lib/bundled_gem.rb で drb.gem の依存関係のために考慮していたテスト時の ruby2_keywords の対応を削除しています。

[04a1b8739b] "dependabot[bot]" 2024-03-01 02:59:18 UTC

GitHub Actions の workflows で利用している actions/cache アクションのバージョンを更新しています。

[a465393cb9] git 2024-03-01 03:33:42 UTC

NEWS の bundled gems のバージョンリストの drb のバージョンを更新しています。

[452d51ffe1] Nobuyoshi Nakada 2024-02-29 17:24:00 UTC

テストでファイル出力するのに open でファイルを開いて書き込んでたのを File.write を使うようにリファクタリングしています。

[1a9a20cebd] Nobuyoshi Nakada 2024-02-29 17:24:57 UTC

io.c の rb_sys_fail_on_write() をマクロで定義していたのを static 関数として定義しなおしています。

[5baee82c76] Nobuyoshi Nakada 2024-02-29 17:27:56 UTC

Process モジュールの rdoc 用コメントにコマンド名がファイルパスじゃなかった時のパス探索や shell 利用について追記しています。

[9b75e5f085] Nobuyoshi Nakada 2024-02-29 17:34:39 UTC

rubyspec に Kernel#system で shell 経由する時のテストを追加しています。

[5d76fe6b2a] Nobuyoshi Nakada 2024-02-29 16:24:05 UTC

標準添付ライブラリ optparse で --help オプションでヘルプメッセージを出力する時に環境変数 RUBY_PAGER か PAGER でページャーコマンド指定があって出力先が端末の場合そのコマンドを使って出力を閲覧するようにしています。

[e626da82ea] Jean Boussier 2024-02-29 12:17:22 UTC

Struct.new で大文字で始まる名前を渡して定数を定義した場合 GC mark 用の root に登録されてしまいメモリリークのような挙動をしていたのを修正しています。 [ruby-dev:52069] [Bug #20311]

[c09e5ad17d] Jean Boussier 2024-02-29 16:15:06 UTC

rb_define_module_under() や rb_define_class_under() などの C APIDoxygen 用コメントに GC で回収されない旨の記述を追加しています。

[54d26221b4] Jun Aruga 2024-03-01 11:42:00 UTC

Travis-CI の設定で ppc64le-linux と s390x-linux の環境を allow_failure に再度追加しています。Travis-CI の環境が不安定で動かないことがあるためとのこと。