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


ruby-trunk-changes 2025-08-13

今日は主に T_TYPEDDATA 型のインスタンス変数などの管理の参照を slot に埋め込む最適化や Set の実装のメモリレイアウトについての最適化などがありました。

[099df0b40b] Jun Aruga 2025-07-22 14:12:46 UTC

GitHub Actions の Ubuntu 向け workflow に s390-linux でのビルドを追加しています。

[05b654b43f] Jun Aruga 2025-07-22 14:12:46 UTC

099df0b40b215b2fc5db59569d45c59ee48111a7 の続きで GitHub Actions の Ubuntu 向け workflow で ppc64le/s390x でのビルド時の環境変数 HOME の設定を追加しています。

[9fa87a6688] Jun Aruga 2025-08-12 10:32:49 UTC

099df0b40b215b2fc5db59569d45c59ee48111a7 からの GitHub Actions の Ubuntu 向け workflow の s390x でのビルド追加の追加修正で rubyspec の拡張ライブラリ etc のテストにパッチを当てて実行除外するようにしています。

[0019e7c702] Peter Zhu 2025-08-11 15:01:24 UTC

Module#autoload 用の管理テーブルの mark 関数と compact 関数を同一にしてどちらでも rb_gc_mark_and_move() を呼び出すようにしています。

[814eaf336a] Peter Zhu 2025-08-11 15:03:25 UTC

Module#autoload の実行中のデータを管理する autoload_data の内部的オブジェクトクラスでも mark 関数と compact 関数を統一して rb_gc_mark_and_move() を呼び出すようにしています。

[37e991b02c] Nobuyoshi Nakada 2025-08-12 14:33:46 UTC

GitHub Actions で rdoc のカバレッジをチェックするジョブで利用する rdoc をブランチやタグで指定したら upstream のリポジトリ ruby/rdoc から pull してきて使うようにしています。

[8f6f9e88c7] Nobuyoshi Nakada 2025-08-12 11:41:08 UTC

gems/bundled_gems の rdoc のテスト(というかおそらく 37e991b02c8664875007779352aa45e9924f3528 で指定できるようになった GitHub Actions で利用するバージョンの指定?)のための commit hash の指定を追加しています。

[c5c894c6e4] Nobuyoshi Nakada 2025-08-12 11:39:08 UTC

doc/globals.md のコードサンプルのマークアップスニペットの種類の指定を追加しています。

[e26ab5dbf2] Takashi Kokubun 2025-08-12 16:54:50 UTC

ZJIT の x86_64 向けの命令生成で不要なロード命令の生成を抑制する最適化。 https://github.com/ruby/ruby/pull/14177

[998be6b3a4] Max Bernstein 2025-08-12 17:00:22 UTC

ZJIT のデバッグ目的で中間表現 HIR での最適化を抑制する --zjit-disable-hir-opt オプションを追加しています。 https://github.com/ruby/ruby/pull/14181

[3e1e2bda49] Peter Zhu 2025-08-12 14:14:57 UTC

複数の Enumerable を連結した Enumerator を生成する Enumerator::Chain に RGenGC 用の Write Barrier を追加して WB-protected に宣言しています。

[a9230e76ee] Peter Zhu 2025-08-12 14:16:55 UTC

Enumerator::Product も RGenGC 用の Write Barrier を追加して WB-protected に宣言しています。

[2f95eb4e80] John Hawthorn 2025-07-19 06:03:46 UTC

include/ruby/atomic.h で定義している inline 関数の rbimpl_atomic_ptr_set()/rbimpl_atomic_value_set()/rbimpl_atomic_set() などをそれぞれ rbimpl_atomic_ptr_store()/rbimpl_atomic_value_store()/rbimpl_atomic_store() のように set -> store と改名しています。

[1d9f76096e] John Hawthorn 2025-07-28 23:13:37 UTC

include/ruby/atomic.h で定義する atomic な操作用の inline 関数が引数に memory order を指定する int 型引数を受け取るようにして、そこから利用しているコンパイラの builtin 関数に固定値で渡していたのを指定できるようにして、実際にソースファィルから利用するマクロの段階で memory order を指定するようにしています。実際に今のところ指定しているのは RBIMPL_ATOMIC_SEQ_CST だけで変更はないみたいですが、今後別の memory order を指定するマクロを追加する予定なのかな?

[77d29ef73c] John Hawthorn 2025-07-29 06:22:34 UTC

77d29ef73cba81e7c18ab9bb95e0756b9f173f38 の続きで ruby_atomic.h のマクロ ATOMIC_LOAD_RELAXED() で memory order の指定のために独立した inline 関数を定義していたのをやめて rbimpl_atomic_load() の memory order の引数に RBIMPL_ATOMIC_RELAXED を指定するようにしています。

[cb360b0b4b] John Hawthorn 2025-07-29 06:24:11 UTC

ruby_atomic.h のマクロ RUBY_ATOMIC_VALUE_LOAD() のために VALUE へのキャストつきの inline 関数 rbimpl_atomic_value_load() の定義を追加しています。

[4cf05ea77a] John Hawthorn 2025-07-29 07:14:54 UTC

include/ruby/atomic.h で stdatomic.h を使う (_Atomic という型を使うだけで関数を利用しない)時の実装でも inline 関数 atomic_fetch_xxx() を利用して memory order の指定をするようにしています。

[507b1e4bde] Kazuki Yamaguchi 2025-08-12 17:36:02 UTC

拡張ライブラリ openssl のテストで FIPS モードでは使えない鍵を利用するテストを skip するようにしています。

[85c52079aa] Jean Boussier 2025-08-07 11:30:53 UTC

組み込みクラス Set やインタプリタで内部的に利用している set 用の構造体 struct set_table で bins というメンバーは削除してかわりに entries メンバーの配列のうしろに連結してメモリ確保するようにしています。 Variaable Width Allocation を利用して Set に埋め込めるオブジェクト参照を増やすためみたいですが、ポインタの型が違うしちょっと hacky ですね。アライメントの厳しい環境とか大丈夫かな?

[360be94d04] Jean Boussier 2025-08-06 17:47:08 UTC

T_TYPEDDATA 型のオブジェクトで f3206cc79bec2fd852e81ec56de59f0a67ab32b7 で T_STRUCT 型オブジェクトでやったのと同じように Variable Width Allocation による slot の領域に埋め込んだ構造体の余りがあったらインスタンス変数や object_id の管理のための T_IMEMO オブジェクトへの参照 fields_obj も slot 内に埋め込むようにしています。

[231407c251] Takashi Kokubun 2025-08-12 20:40:42 UTC

ZJIT でなんらかの理由で JIT コンパイルできなかった ISeq を struct IseqPayload に status というメンバーを追加して保存しておいて、同じ ISeq を再度コンパイルしようとした時に無駄な処理を省いてすぐあきらめるようにしています。 https://github.com/ruby/ruby/pull/14195

[b934f989b9] BurdetteLamar 2025-08-12 17:32:09 UTC

GC.disable の rdoc 用コメントを修正して GC.start で明示的に実行することはできることを明示しています。

[8b530e1282] BurdetteLamar 2025-08-12 17:37:00 UTC

GC.enable の rdoc 用コメントの手直し。

[31e8a9fced] BurdetteLamar 2025-08-12 18:40:39 UTC

GC.latest_gc_info の rdoc 用のコメントの call-seq 修正やサンプル追加。

[1afc07e815] Luke Gruber 2025-08-06 18:30:03 UTC

複数 Ractor 利用時の String#encode での暗黙の Encoding の load でデッドロックする恐れがあった不具合を修正。

[df7d9812cc] Stan Lo 2025-08-13 00:39:46 UTC

ZJIT の HIR の SetGlobal 命令(グローバル変数への代入)でフックが定義されていると例外が発生する可能性があり leaf 命令でなくなるのでスタックフレームの用意などを省略しないようにしています。 https://github.com/ruby/ruby/pull/14197

[40d07f268e] Kazuhiro NISHIYAMA 2025-07-17 05:35:01 UTC

doc/NEWS/NEWS-3.0.0.md の Thread#join の Scheduler 対応についての記述が Thread クラスのセクションの外にずれていたので記述位置を修正しています。




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

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