以下の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20250501より取得しました。


ruby-trunk-changes 2025-05-01

今日は GCC 15 での警告対策や Object Shapes の単純なケースでの lock free 化の最適化などがありました。

[b42afa1dbc] Nobuyoshi Nakada 2025-04-30 09:35:25 UTC

GCC 15 で char の配列に対して NUL 文字終端していない時に警告が出るようになったようで、CRuby の実装では文字列ではない char 配列があるのでその部分で "__attribute__*1" という指定を追加して警告を抑制するようにしています。

[59a902cd79] Matt Valentine-House 2025-04-30 10:48:59 UTC

GC に mmtk 実装を利用している時に finalizer のテストを skip する指定を test/.excludes-mmtk/TestObjSpace.rb というファイルから test/.excludes-mmtk/TestObjectSpace.rb という新規ファイルに切り出しています。

[46c9e46ef6] Matt Valentine-House 2025-04-30 12:54:16 UTC

さらに GC の mmtk 実装利用時に Ractor のテストを skip するための指定を test/.excludes-mmtk/TestEtc.rb というファイルで追加しています。

[f55138c9e7] Jean Boussier 2025-04-30 07:13:29 UTC

拡張ライブラリ psych で組み込みクラスになった Set の dump/load の対応? をしているようです。

[c65991978b] Jean Boussier 2025-04-28 08:37:54 UTC

Object Shapes の実装のリスト操作で VM lock を使わずに atomic な操作ができるケースで lock を回避する最適化パスを追加しています。

[73fdd90315] Max Bernstein 2025-04-30 21:48:12 UTC

ZJIT の Class#new のインライン化で使う VM 命令 opt_new のメソッド呼び出しに fallback する時の実装を出力するようにしているようです。ZJIT の実装よくわからないな(YJIT もよくわかってないけどまだもうちょっと見た目で想像がつく)。 https://github.com/ruby/ruby/pull/13216

[7866e124a8] John Hawthorn 2025-04-30 21:17:48 UTC

主に Ractor の実装で現在の rb_execution_context_t を得るのに GET_EC() ではなくて rb_current_ec_noinline() を利用するようにしています。 GET_EC() の実体である rb_current_execution_context() は rb_current_ec_noinline() の結果と thread local storage から得た rb_current_ec() の結果が同一かどうかの assertion を含んでいて、LLVM 18 の最適化でなんらかの値の使いまわしかなにかでこれがこけることがあるみたいです。

[17912cb500] Hiroshi SHIBATA 2025-05-01 00:35:47 UTC

GitHub Actions の Windows 環境の workflow でもうすぐ EOL になる windows-2019 の指定を matrix から消しています。

[994dadfbf4] Hiroshi SHIBATA 2025-05-01 00:46:11 UTC

GitHub Actions の Windows 版 workflow から OS_VER という環境変数の設定が不要になってたので削除しています。

[1c89b1ec60] Yusuke Endoh 2025-05-01 04:36:24 UTC

tool/test-coverage.rb の at_exit ブロック内で GC.stress = false を実行してプロセス終了時の coverage のレポート作成? の処理を遅くしないようにしています。

[e8ad728209] Yusuke Endoh 2025-05-01 04:37:28 UTC

ISeq のテストで RubyVM::InstructionSequence#to_binary を直接呼んでいたのを RuntimeError を捕捉して skip するヘルパーメソッドを追加してこれを利用するようにしています。coverage を取っていると ISeq の binary ダンプが失敗するためとのこと。trace 版の VM 命令に差し変わるからかな。

[de6e59e5ba] Jean Boussier 2025-05-01 07:34:35 UTC

拡張ライブラリ jsonSIMD 命令を利用した実装の ON/OFF を切り換えるマクロ名を変更しています。

[5cee3329df] Yusuke Endoh 2025-05-01 07:50:46 UTC

拡張ライブラリ objspace のテストで ObjectSpace.allocation_class_path の結果が TracePoint を有効にしてテストを実行していると変化してテストがこけてしまうので一時的にコメントアウトしています。 [ruby-core:121791] [Bug #21298]

*1:nonstring




以上の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20250501より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14