ruby-trunk-changes 2025-12-11

今日は拡張ライブラリ json の文字列にコントロール文字を許容するオプションの追加や String#strip などのメソッドに削る文字を指定する引数を受け付ける機能追加などがありました。

[ed18a212ab] Max Bernstein 2025-12-10 16:08:55 UTC

ZJIT のインスタンス変数を設定する処理で Objective Shapes の too_complex の時のチェックを C 関数 rb_shape_get_iv_index() の呼び出し前に行うようにして異常終了を修正しているようです。 https://github.com/ruby/ruby/pull/15478

[1eb10ca3cb] Takashi Kokubun 2025-12-10 17:45:09 UTC

GitHub Actions の ZJIT 関連の workflow で ruby-bench でベンチマークを実行するジョブで fluentd、psych-load、railsbench の 3つを実行除外するようにしています。 https://github.com/ruby/ruby/pull/15479

[41ee65899a] John Hawthorn 2025-12-08 23:54:26 UTC

Encoding クラスのオブジェクトは T_TYPEDDATA 型のオブジェクトですが struct RData として扱っていた古いコードが一部残っていたので RDATA() のかわりに RTYPEDDATA_GET_DATA() を使うなど移行しています。

[330ddccfee] Takashi Kokubun 2025-12-10 18:10:54 UTC

GitHub Actions の Ubuntu 版の workflow に ruby-bench でベンチマークを行うジョブを追加しています。 https://github.com/ruby/ruby/pull/15480

[3640cfe5e0] Alex Rocha 2025-12-10 20:30:04 UTC

ZJIT の Rust 実装で文字列に式を埋め込む時に文字列内の {} の中に直接式を書く記法を使うようにリファクタリングしています。 https://github.com/ruby/ruby/pull/15482

[ccfd31162a] Jean Boussier 2025-12-10 20:23:08 UTC

C API の rb_tracepoint_new() から TracePoint を使って RUBY_INTERNAL_EVENT_NEWOBJ のイベントのフック内で rb_obj_id() を呼ぶという拡張ライブラリを使ったテストを削除しています。 [Bug #21710] の修正が 8c3909935e2ba9f79bf3492772c77c305a0d370b でなされましたが、その後の議論によると https://bugs.ruby-lang.org/issues/21710#note-23 などからこの呼び出しをサポートしないようにしたようです。

[c890903097] Tobias Lütke 2025-12-10 21:18:08 UTC

ZJIT で freeze されたオブジェクトの attr_reader などからインスタンス変数を読み込む処理では結果が固定のはずなので定数畳み込みの最適化を行うようにしているようです。 https://github.com/ruby/ruby/pull/15483

[96c804de1f] Alan Wu 2025-12-09 03:08:04 UTC

zjit.c の不要な #include を削除しています。

[b0ea9070d4] Alan Wu 2025-12-09 03:09:38 UTC

yjit/yjit.mk で libyjit.a のビルドのために touch コマンドでファイルの更新時刻を変更する必要があった? ハックが不要になっていたみたいで削除しています。

[1bab216062] Alan Wu 2025-12-09 03:12:12 UTC

b0ea9070d4f42f1844af7eac347ddfb9b4760439 と同様の不要になった touch コマンド実行の削除を zjit/zjit.mk でも行なっています。

[121d0da025] Alan Wu 2025-12-09 03:30:22 UTC

defs/jit.mk の RUST_LIB_TOUCH という変数の定義を cargo コマンドが利用可能な時だけ行うようにしています。

[029a48176c] Alan Wu 2025-12-09 03:25:05 UTC

YJIT および ZJIT の Rust 実装のビルドに cargo がなくても release build ができるようにしているようです。

[b208f46f48] Alan Wu 2025-12-10 21:26:22 UTC

c8909030974772b4f19742bac55875e32674d27f の freeze したオブジェクトでの attr_reader の定数畳み込みの条件を追加しています。実際にどういうケースなのかはわかりませんが。

[5828872ec4] John Hawthorn 2025-12-10 21:13:21 UTC

Ractor 利用時の experimental 警告のメッセージを変更して Ractor is experimental から Ractor API is experimental にしています。また "there are many implementation issues." という文言は消しています。

[1c29fbeca0] John Hawthorn 2025-12-10 20:58:23 UTC

GC の default 実装で GC_DEBUG_STRESS_TO_CLASS というマクロを 1 に定義していたのを RUBY_DEBUG で定義するようにして、デバッグ用のメソッド GC.add_stress_to_class と GC.remove_stress_to_class がデバッグビルド時のみ定義されるようにしています。

[c7d56e90d3] Takashi Kokubun 2025-12-11 00:07:39 UTC

ZJIT においてひとつの ISeq を複数回コンパイルすることができるようにしていて、これは実行時に最適化が適用できなくて PatchPoint を書き換えて脱最適化するように変化した時に再度新しい条件で呼び出された時にもう一度 ISeq からコンパイルして最適化されたコードを実行するチャンスを持てるようにしているようです。 https://github.com/ruby/ruby/pull/15459

[83e080705c] Nobuyoshi Nakada 2025-12-11 01:28:03 UTC

configure.ac の余計な閉じかぎかっこ(]) が残っていたのを削除しています。たぶん 029a48176cf9fd367d52d8c9f87cb9f77d425a43 の再修正。

[c76ba839b1] Shugo Maeda 2025-12-11 08:34:57 UTC

String#strip や #lstrig, #rstrig, #strip! などなどの strip 族のメソッドで引数に端から削除すべき文字の指定を受け付けるようにしています。引数は 1文字だけでなくて文字列で渡すとそこに含まれる文字や正規表現のように範囲指定(a-z) や否定(^0-9) の記法も受け付けるようにしているようです。 [ruby-core:123063] [Feature #21552]

[87f0701b61] Hiroshi SHIBATA 2025-12-11 08:06:28 UTC

bundler の gemspec ファイルで spec.files の設定のため Dir.glob を呼ぶ時にキーワード引数 base を指定しています。 ruby 本体のリポジトリ上でも正しい値が得られるようにするため?

[240e7999de] Shugo Maeda 2025-12-11 08:57:49 UTC

NEWS に c76ba839b153805f0498229284fea1a809308dbc で追加した String#strip 系メソッドの引数追加について追記しています。 [ruby-core:123063] [Feature #21552]

[278a93a1bb] Hiroshi SHIBATA 2025-12-11 09:18:09 UTC

87f0701b6106569a8486c9623dc6b0b32438355c の bundler の gemspec の変更を revertt しています。

[c5b51bdd8c] yui-knk 2025-12-02 02:03:02 UTC

parse.y 利用時に do...end による? ブロックを渡したメソッドの戻り値(つまり end のあと)に .() の記法で Proc#call を行なおうとすると SyntaxError になるのを修正しています。 [ruby-core:123914] [Bug #21712]

[dc41cf3326] Nobuyoshi Nakada 2025-12-11 09:42:07 UTC

internal/bits.h に追加していた整数の演算のオーバーフローチェックつきのマクロ ADD_OVERFLOW_P() や SUB_OVERFLOW_P() などを parser_bits.h にも追加し、rb_popcount32() と rb_popcount64() の関数の実装の修正も parser_bits.h に適用しています。 internal/bits.h への変更を移植しているようです。 [ruby-core:123827] [Misc #21690]

[281a000d66] Nobuyoshi Nakada 2023-03-30 16:09:22 UTC

String#undump で \u による Unicode の文字と \xXX の記法が隣接していた? 時に常に例外が発生していたのを、\xXX が ASCII 文字の範囲であれば許容するようにしています。 [ruby-core:113041] [Bug #19558]

[6ad4e6a298] Jean Boussier 2025-12-11 10:09:05 UTC

拡張ライブラリ jsonJSON.parse のオプションとして allow_control_characters を追加して文字列内にコントロール文字が含まれていてもエラーとしないよう指定可能にしています。

[6b469b7e40] Jean Boussier 2025-12-11 10:55:40 UTC

拡張ライブラリ json のバージョンを 2.18.0 に更新しています。

[674ddf4b7d] git 2025-12-11 10:59:34 UTC

NEWS の default gems のバージョンリストの json のバージョンも更新しています。