ruby-trunk-changes 2025-11-22

今日は拡張ライブラリ json の内部利用するクラスの Ractor shareable 化や Gem::Version#<=> に文字列を渡した時の deprecated 警告をやっぱりやめる変更などがありました。

[7ae0809c7c] Peter Zhu 2025-11-21 15:00:39 UTC

GitHub Actions のいろんなコンパイラオプションを試す workflow で利用するコンパイラの選択肢から clang18 はコメントアウトしています。clang18 に不具合があるため異常終了するようです。

[bdca2a9975] Étienne Barrié 2025-11-18 10:44:06 UTC

拡張ライブラリ json で内部で利用する JSON::Coder というクラスを Ractor sharable にするように対応を追加しています。

[419efd5ca5] Étienne Barrié 2025-11-21 10:53:17 UTC

拡張ライブラリ json のテストで JRuby で失敗するものを skip するようにしています。

[ffa105c27f] Étienne Barrié 2025-11-21 11:48:21 UTC

bdca2a9975c7859f2e1702a517d59bb6cb254acb の再修正で古い ruby 向けに RUBY_TYPED_FROZEN_SHAREABLE の定義をするのをソースファイル ext/json/parser/parser.c からヘッダファイル ext/json/json.h に移動しています。

[d3b6f835d5] Nobuyoshi Nakada 2025-11-21 15:54:58 UTC

5f5da2c293766b98e543b3215b1af7ad6950977druby_atomic.h の rbimpl_atomic_u64_fetch_add() の実装で stdatomic.h の atomic_fetch_add_explicit() を使った実装を削除していたのを一部 revert して復活させています。かわりに configure 時に libatomic の存在チェックを追加しています。

[e5e8ac5149] Max Bernstein 2025-11-21 16:48:18 UTC

ZJIT で String#empty? メソッドを関数呼び出しにしていたのを直接実装するよう最適化しています。 https://github.com/ruby/ruby/pull/15283

[f52edf172d] Max Bernstein 2025-11-21 16:48:36 UTC

ZJIT で defined? でインスタンス変数の定義済みかどうかを判定する処理でプロファイリイングで常に receiver のクラスが一定であるとわかった時にそれによって固定の値を返せる場合があるので定数として畳み込む最適化が行なえるようにしています。 https://github.com/ruby/ruby/pull/15281

[6cebbf4037] Max Bernstein 2025-11-20 15:43:08 UTC

ZJIT の x86_64 のコード生成の不具合修正(あるいは効率化?)。 https://github.com/Shopify/ruby/issues/876

[8090988f87] Max Bernstein 2025-11-20 01:53:41 UTC

ZJIT で Array#length などを C の関数呼び出しから直接コード生成するようにインライン最適化しています。

[8728406c41] Max Bernstein 2025-11-21 16:49:57 UTC

ZJIT で Thread.current をインライン化する最適化。 https://github.com/ruby/ruby/pull/15272

[e0bb3fb1cd] Max Bernstein 2025-11-21 16:57:26 UTC

ZJIT で Integer#<< メソッドの右辺値が定数で receiver が Fixnum の範囲だった時のインライン最適化。 https://github.com/ruby/ruby/pull/15258

[ff89e470e2] Max Bernstein 2025-11-19 21:37:45 UTC

ZJIT で Module#=== メソッドと Kernel#is_a? の実装を直接コード生成するインライン最適化。

[14e34fa7c0] Max Bernstein 2025-11-20 22:56:17 UTC

ZJIT の HIR のダンプ時の Class オブジェクト(つまりクラス)の表示でクラス名がわかるように? しています。

[1959fcacb3] Max Bernstein 2025-11-21 16:53:35 UTC

ZJIT の Rust 製のテストに Kernel#kind_of? についてのテストを追加。

[e31c256907] Max Bernstein 2025-11-19 23:17:43 UTC

ZJIT で中間表現 HIR の命令 GuardNotFrozen を C の関数 rb_obj_frozen_p() を呼び出す実装にしていたのを直接コード生成するように最適化しています。

[6e2906f60d] Max Bernstein 2025-11-21 18:43:52 UTC

e31c2569079d09cf63d6822558b053b8b8cc9937 の変更の続きで ZJIT の HIR の GuardNotFrozen 命令の実装で VALUE が即値オブジェクトかどうかのチェックするコードを生成していたのをやめています。

[2289961b48] Jean Boussier 2025-11-21 18:30:04 UTC

rubygems で Gem::Version#<=> で引数に文字列が渡された時の deprecated 警告出力をやめています。

[b47b37c12c] BurdetteLamar 2025-11-21 12:46:03 UTC

Integer#*、Float#*、Rational#*、Complex#* などの rdoc 用コメントの記述をまとめて手直し。

[7789aaca37] BurdetteLamar 2025-11-21 16:44:55 UTC

Integer#** の rdoc 用コメントにサンプルと引数に Rational や Complex を渡した時の挙動についての記述を追加しています。

[ec296f63e3] Jean Boussier 2025-11-22 09:32:16 UTC

拡張ライブラリ json の string_scan() という inline 関数の戻り値が bool のところ return 1 や return 0 としていたのを true/false を使うように修正しています。