ruby-trunk-changes 2026-11-03

今日は主に正規表現の x オプションの挙動の不具合修正や parse.y でのパターンマッチのエラーチェックの不具合修正などがありました。

[b4e5cb2616] Hiroya Fujinami 2026-11-02 11:48:45 UTC

正規表現の x オプションつきのものをマッチングする文字列の Encoding の違いにより再コンパイルする時にオプションを渡しておらずコメントの除去処理が Onigmo で行なわれるように変化していて、さらに Onigmo によるコメント除去時に不具合があってコメントが完全に除去されないケースがあったので、両方の不具合を修正しています。 [ruby-core:127292] [Bug #22491]

[55a3ad40bc] Yusuke Endoh 2026-11-02 05:39:11 UTC

doc/_regexp.rdoc の正規表現の timeout 指定について、Regexp.new に渡す正規表現のソースではなくマッチさせる文字列が信頼できない時に有効という表現に修正しています。

[f426fa44e3] Jean Boussier 2026-11-02 12:31:30 UTC

Struct.new でクラス生成する時に名前を指定した場合に定数を定義するのをクラスの初期化が終わった後に遅延させて、未初期化のクラスが見えてしまうのを避けています。 ただ rb_class_inherited() の class.c での定義は第1引数が super なのですがこの変更後は第2引数に super 側を渡していて逆になってそうですね。

[9e651a3b74] Jean Boussier 2026-11-02 13:01:48 UTC

f426fa44e32e461f0610bfec0b15f95475c181c6 で無名の Struct の子クラスを生成する anonymous_struct() から rb_class_inherited() の呼び出しを削除したので Data.define が inherited フックを呼ばなくなっていたので rb_data_define() 内に rb_class_inherited() の呼び出しを追加しています。が、ここでも第2引数に super を渡していますね。

[e83592ba14] Étienne Barrié 2026-11-02 14:00:55 UTC

拡張ライブラリ json のテストで Dir#[] に渡すパスの File.join に余分な引数(__FILE__)が含まれていてファイルがマッチせずテストが実行されていなかったのを修正しています。

[269c74ce68] Kevin Newton 2026-11-02 15:30:42 UTC

prism の Unicode における alpha, alnum などの文字種の判定のテーブルの持ちかたを変更して効率化しているようです。

[2ddb42b3a5] Kevin Newton 2026-11-02 17:02:41 UTC

prism に a126d73d0f71ace8558816c665a96c119c9d0066 で追加していた pm_options_stack_budget_set() でのマシンスタックの上限設定に達した時のエラーメッセージを変更しています。

[15314737dd] XrXr 2026-10-30 17:19:31 UTC

ZJIT の Rust 実装のリファクタリング。

[36ba2601b1] XrXr 2026-10-30 17:31:19 UTC

ZJIT の Rust 実装の不要なキャスト削除などのコード整理リファクタリング。

[54e63a7744] Kevin Newton 2026-11-02 18:02:34 UTC

prism を parser として呼び出す際にマシンスタックの残りサイズを測定して pm_options_stack_budget_set() で設定するようにして、マシンスタック使い切った時に異常終了せず例外発生させるようにしています。

[b51db981f6] Alan Wu 2026-11-02 20:50:33 UTC

ZJIT の Stack maps の実装方法を大きく変更してメモリ使用量を削減するようにしているみたいです。

[13c3f56bb8] Thomas Klemm 2026-11-03 01:08:01 UTC

ZJIT でブロック引数を受け取るように定義されたメソッド(def m(&blk) ...) に対して & で Proc オブジェクトや Symbol をブロック渡ししていた呼び出しを最適化できるようにしているようです。

[2bc6f9a60e] Takashi Kokubun 2026-11-03 01:38:18 UTC

組み込みメソッド Array#each_index の定義を C 実装から ruby 実装に変更して JIT 有効化時にインライン化できるようにしています。 https://github.com/ruby/ruby/pull/19627

[599457650d] "dependabot[bot]" 2026-11-03 02:12:20 UTC

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

[64d821e685] Nobuyoshi Nakada 2026-11-03 02:46:08 UTC

拡張ライブラリ json のテストで JSON.load の結果と比較するためのデータファイルを読み込む時に明示的に UTF-8 を指定するようにしています。 default external が UTF-8 ではない環境のため。

[90dbced795] Nobuyoshi Nakada 2026-11-03 00:05:28 UTC

Enumerator::Lazy#each_with_index にブロックを渡して呼び出した時に super を呼んで Enumerable#each_with_index としてその場で評価するようにしています。が、これって #map みたいに Lazy に動かなくていいのかな? #each は eager に動くのでそれに合わせるということか……。 [ruby-core:121076] [Bug #21142] [ruby-core:127301] [Bug #22496]

[d4b4ad206f] Burdette Lamar 2026-11-03 07:19:49 UTC

MatchData#end のドキュメントを doc/matchdata/end.rdoc から doc/matchdata/end.md に移動しています。

[943faddb7b] Nobuyoshi Nakada 2026-10-25 14:46:09 UTC

標準添付ライブラリ cgi の拡張ライブラリ cgi/escape で #include "ruby/util.h" を追加して明示的な extern 宣言していたのをやめています。

[0c404b09a0] yuki300 2026-09-28 18:17:21 UTC

parse.y で pattern match の "|" を使った構文と変数束縛を併用するのを禁止するチェックに不具合があり、問題のないパターンでもエラーになっていた不具合を修正しています。 [ruby-core:126676] [Bug #22310]

[9f2e54518e] Nobuyoshi Nakada 2026-11-03 08:28:56 UTC

Array#sample の実装で 引数が 0 または配列サイズが 0 の時に capa が 0 の配列を返して処理をスキップするようにしています。

[74699c56fa] Hiroshi SHIBATA 2026-10-30 05:47:22 UTC

bundler の Gemfile の platforms ブロック内に gemspec を書いた時にその依存関係による間接的な gem にも platform 条件が伝播するように修正しています。

[2e61d0b910] Hiroshi SHIBATA 2026-10-30 05:47:24 UTC

bundler の ma ページの gemfile(5) に 74699c56fadd6ae17366f469882db330c89589de の変更について追記しています。

[c832e4058f] Hiroshi SHIBATA 2026-10-30 06:09:04 UTC

bundler のテストに 74699c56fadd6ae17366f469882db330c89589de に対応したテストを追加しています。

[39485fe1f1] Hiroshi SHIBATA 2026-10-30 08:35:33 UTC

bundler の man ページの gemfile(5) の追記場所を移動する再修正。

[82a16f7cc1] Hiroshi SHIBATA 2026-10-30 08:45:00 UTC

bundler のテストの 74699c56fadd6ae17366f469882db330c89589de に対応したテストをもうひとつ追加しています。

[25ad3d64fc] Matt Valentine-House 2026-10-27 00:03:05 UTC

GC の mmtk 実装版で mmtk の GC アルゴリズム(プラン)によっては不要になる RGenGC 用の Write Barrier の処理をスキップするようにしているようです。

[47d2b61542] Nobuyoshi Nakada 2026-11-03 07:36:12 UTC

拡張ライブラリ date でも #include "ruby/util.h" を追加して独自に extern 宣言していたのをやめています。ただし default gem として古い ruby でもコンパイルする可能性があるので未定義の時は宣言するようにしています。

[c260d575a1] yuki300 2026-09-28 18:17:22 UTC

parse.y の pattern match の hash pattern の **x のようなパターンで重複キーのチェックが漏れていて変数名の重複がエラーになっていなかったのを修正しています。 [ruby-core:126699] [Bug #22314]

ruby-trunk-changes 2026-11-02

今日は主に prism の不具合修正や ARM64 版 Windows でのビルド修正などがありました。

[b295b4d559] Tanaka Akira 2026-11-01 12:27:01 UTC

Integer#[] の実装に明示的な BDIGIT へのキャストを追加。実際には実害はないみたいですが型の正しさのために修正。

[81555ddab9] Jeremy Evans 2026-10-31 21:02:02 UTC

internal/class.h の rb_classext_t の classpath メンバーを共用体メンバーの as の中に移動して refinement_iclasses とメモリオフセットを共有するようにしています。というかこれまで IClass の時に classpath を流用していたのを実体に合わせて名前を分けるようにするリファクタリングのようです。

[7e57db06cb] mao 2026-10-29 12:51:10 UTC

標準添付ライブラリとしての prism の parser.gem 互換性の改善。

[bdecc971c6] Kevin Newton 2026-10-30 18:09:46 UTC

prism の不要な処理の削除。

[c1077a044d] Kevin Newton 2026-11-01 19:29:52 UTC

標準添付ライブラリとしての prism の parser.gem 互換性の改善。

[73397ad027] Peter Zhu 2026-10-27 12:00:27 UTC

iseq.c の rb_iseq_node_id() でロジックエラー時に VM_ASSERT() でデバッグビルド時のみ異常終了させていたのを rb_bug() で常に異常終了させるように修正しています。

[f855997a6f] Burdette Lamar 2026-11-02 00:46:37 UTC

MatchData#bytebegin メソッドのドキュメントを doc/matchdata/bytebegin.rdoc から doc/matchdata/bytebegin.md に移動して Markdown で書きなおしています。

[f36c22c8b9] Burdette Lamar 2026-11-02 00:47:04 UTC

MatchData#begin のドキュメントも doc/matchdata/begin.rdoc から doc/matchdata/begin.md に移動しています。 https://github.com/ruby/ruby/pull/19568

[286b83ecfc] BurdetteLamar 2026-10-28 15:44:36 UTC

MatchData#byteend のドキュメントも doc/matchdata/byteend.rdoc から doc/matchdata/byteend.md に移動しています。

[6a9a8760a6] BurdetteLamar 2026-10-28 19:12:54 UTC

MatchData#captures の rdoc 用コメントの手直し。

[025d104ec6] Kevin Newton 2026-11-01 20:13:15 UTC

prism の #include の追加。

[a126d73d0f] Kevin Newton 2026-11-02 01:40:45 UTC

prism の C API pm_options_stack_budget_set() を追加してマシンスタックの消費量の上限を設定できるようにしているようです。

[6065ea5f5e] BurdetteLamar 2026-10-28 20:22:11 UTC

MatchData#hash の rdoc 用コメントの手直し。

[7a58c043c7] BurdetteLamar 2026-10-28 20:30:26 UTC

MatchData#inspect の rdoc 用コメントの手直し。

[bfb5f2c295] BurdetteLamar 2026-10-28 21:01:24 UTC

MatchData#integer_at の rdoc 用コメントの手直し。

[4df3bcb173] Nobuyoshi Nakada 2026-11-02 07:56:37 UTC

GitHub Actions の check_misc workflow の __has_builtin() のチェックを prism では存在チェックマクロが異なるのでチェック方法を分離しています。

[e476b0461d] Nobuyoshi Nakada 2026-09-26 07:14:36 UTC

include/ruby/util.h の DECIMAL_SIZE_OF_BITS() という関数マクロの Doxygen 用コメントの引数 n の有効範囲が誤ってたので修正しています。

[a990df74db] Nobuyoshi Nakada 2026-10-28 10:32:14 UTC

numeric.c と bignum.c で重複していた 10進数変換のテーブルを bignum.c に集約して変換用の inline 関数 ruby_convert_to_decimals() を internal/bignum.h に追加しています。

[4faedd7373] Nobuyoshi Nakada 2026-11-02 05:09:40 UTC

a990df74db7794802164fedcf9cd2f4e9f7e92fa の続きで任意の基数での数値の文字列変換を ruby_convert_to_digits() という inline 関数に切り出しています。

[2968faa49e] Hiroshi SHIBATA 2026-11-01 10:59:48 UTC

win32/install-gnumeke.cmd に config.h.W32 の先頭に #define HAVE_STDINT_H 1 を追加するようにして ARM64 Windows での GNUMake でのビルド対応をしています。

[8355f2adc8] Hiroshi SHIBATA 2026-11-01 22:17:07 UTC

vcpkg.json に overlay-triplets の設定を追加して GitHub Actions の Windows 版 workflow で vcpkg のコマンドラインオプションで指定していたのを代替しています。

[d1c51d186c] Hiroshi SHIBATA 2026-11-01 22:17:08 UTC

win32/install-buildtools.cmd に ARM64 Windows でのビルドのためインストールパッケージを追加しています。

[b1ca94e1d4] Étienne Barrié 2026-09-21 10:26:48 UTC

拡張ライブラリ coverage のテストのインデント修正のみ。

[de57297f57] Étienne Barrié 2026-09-21 10:28:59 UTC

テスト test/ruby/test_string.rb の未使用変数警告の抑制のため変数を削除しています。

ruby-trunk-changes 2026-10-31

今日は主にオブジェクトの同値判定メソッドの最適化の拡張や正規表現の最適化などがありました。

[5263a42ccf] Jean Boussier 2026-10-17 12:59:07 UTC

ruby_vm_redefined_flag という組み込みメソッドの再定義について管理するフラグのビットフラグ定数に ANY_REDEFINED_OP_FLAG というのを追加して、どのクラスかは指定せずどこかで再定義された時に汎用的に立てるようにして YJIT や ZJIT での分岐をシンプルにしています。

[ebc20fd17d] Jean Boussier 2026-10-17 13:02:29 UTC

5263a42ccff5828bed95eb92fb791dcd33f3d487 の続きで Symbol#== の最適化で右辺値も static symbol かのチェックをしていましたが左辺値が再定義されてなければ右辺値のチェックは不要なので削っています。

[d7b8b28bfd] Jean Boussier 2026-10-17 13:17:46 UTC

5263a42ccff5828bed95eb92fb791dcd33f3d487 に対応して Integer, Float, String, Symbol の #== メソッドの再定義時のテストを追加しています。

[3249ea75ca] Jean Boussier 2026-10-17 13:27:56 UTC

NilClass, TrueClass, FalseClass の #== メソッド定義を追加して rb_obj_equal() を直接呼ぶ最適化の対象になるようにしています。

[652cf51253] Jean Boussier 2026-10-17 13:55:25 UTC

opt_equality_specialized() という同値チェックの最適化のための関数で VALUE 値が同一の即値は true を返すショートカットを追加しています。 VALUE が同じで再定義されてなければ即値じゃなくても同一なのではと思いましたが Float::NAN はそれ自身と同値にならないしそのようにメソッド定義されていれば false になり得るので組み込みのクラスで再定義チェックされているものでないとだめでしたね。

[f62a6346c2] Jean Boussier 2026-10-17 14:55:55 UTC

opt_equality_specialized() の後半の処理を opt_equality_specialized_miss() という関数に切り出して、opt_equality_by_mid() からの呼び出しではこちらを使い即値の同一性チェックを省くようにしています。

[b0b1dbe04b] Jean Boussier 2026-10-17 15:17:50 UTC

f62a6346c2021834ff71675305f009fa4e3a4c17 で切り出した opt_equality_specialized_miss() を internal/object.h に移動して inline 関数としてさらに rb_equal_inline()、rb_eql_inline() も inline 関数として rb_eql() をマクロ経由でインライン展開するようにしています。

[99fb833467] Nobuyoshi Nakada 2026-10-30 06:35:42 UTC

Process.spawn や Kernel#system のコマンドラインや環境変数に渡す文字列に NUL 文字を含んだり wide char の Encoding は弾く処理を共通化してチェックを強化しています。

[d6c924553a] Hiroshi SHIBATA 2026-10-30 11:59:04 UTC

include/ruby/internal/memory.h で MinGW 上の clang-cl でのビルド時の警告抑制のため intrinsic pragma を使わないようにしています。

[5415106dd5] Emily Samp 2026-10-30 20:15:21 UTC

prism のメソッド名の ?, !, = などの suffix の処理でバッファの末尾を越えて参照する可能性があった不具合を修正しています。

[fe65ddfa7b] Steven Webb 2026-10-30 22:16:37 UTC

組み込みメソッド Array#find の ruby 実装版を互換性の問題でコメントアウトしていたものを再度有効にしています。 https://github.com/ruby/ruby/pull/19525

[4e0e68bfba] Hiroshi SHIBATA 2026-10-30 23:14:04 UTC

win32/GNUmakefile.sub および win32/Makefile.sub で XCFLAGS に -DPRISM_XALLOCATOR オプションを追加するようにして prism に ruby 本体のアロケータ xmalloc() を利用させるように? しています。

[ff055a576f] Hiroshi SHIBATA 2026-10-30 23:14:15 UTC

win32/win32.c で #undef strdup してた位置を前に移動して dln_find.c の #include に影響させるようにしています。

[f97792437f] Hiroshi SHIBATA 2026-10-30 23:14:15 UTC

dln.c で preprocessor マクロで free を xfree にすりかえていたのをやめています。確保と解放がミスマッチになってたのを修正するためみたいです。

[bacb26a12f] Hiroshi SHIBATA 2026-10-30 23:14:17 UTC

win32/file.c で rb_default_home_dir() 内で xfree() を使っていたところを free() に修正しています。xmalloc() が使えるようになる前? に malloc(3) で確保するメモリ領域であったため。

[3c6a1c7a86] John Hawthorn 2026-10-11 06:28:24 UTC

正規表現オブジェクトはマッチする対象の文字列の Encoding にあわせて再コンパイルされる場合があるそうで、異なる Encoding の文字列に交互にマッチされると毎回再コンパイルが走って無駄だったので、Encoding ごとのコンパイル結果をリストで保持して既に同じ Encoding のものがあれば再利用するように最適化しています。

ruby-trunk-changes 2026-10-30

今日は複数 Ractor 利用化での Refinements の不具合修正や String#<< の不具合修正などがありました。

[6cfd3b4a3c] Kevin Newton 2026-10-29 14:28:49 UTC

prism の正規表現リテラルの parse 時に \M- や \C- などの meta/control キーのエスケープを連続した時に再帰的な関数呼び出しで処理していたのでマシンスタックを使いすぎないように連続する数の上限を設定しています。

[3fa454718d] Kevin Newton 2026-10-29 14:50:08 UTC

6cfd3b4a3c6b5dd7aead61f03f5440971a6b0b06 と同様に prism の文字列リテラルなどでも meta/control のエスケープの処理で再帰していたのでこちらは goto 文を利用したループ構造に変更しています。

[a6c4c8e8e6] Sutou Kouhei 2026-10-27 08:09:46 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket#min_version= および #max_version= を追加して対応する TLS protocol のバージョンの範囲を個別に指定できるようにしています。 https://github.com/ruby/openssl/issues/1125

[c34b156598] Jun Aruga 2026-10-26 17:47:41 UTC

拡張ライブラリ openssl のテストで使う鍵の組のサーバーと CA との組み合わせを反転しています。単に他と合わせるためと思われます。

[45bcb337e1] Kazuki Yamaguchi 2026-10-29 15:53:08 UTC

拡張ライブラリ openssl で OpenSSL::HMAC.allocate で確保した initialize による初期化が行なわれてないオブジェクトに reset メソッドを呼ぶと異常終了する不具合を修正。構造体に wrap するメモリ領域の確保を initialize メソッドで行なうようにしています。

[0819f5538f] Kazuki Yamaguchi 2026-10-27 19:28:44 UTC

45bcb337e176d511b217164b3b859412f7892f0d の続きで拡張ライブラリ openssl の OpenSSL::OCSP::BasicResponse#initialize で再初期化をチェックしれ例外発生させるようにしています。

[0dde38a194] nozomemein 2026-10-24 02:55:30 UTC

ZJIT で VM 命令 expandarray 第2オペランド flag に 1 が指定されている場合に side-exit していたのをコード生成するように対応しています。 a, *b = ary のように左辺値に * で配列に格納する構文があった時にも対応するようにしているようです。

[1b88c2e4bc] nozomemein 2026-10-24 03:17:14 UTC

0dde38a194e59e2978597b470a85a41a9526d93f の続き。 ZJIT の Rust 実装のリファクタリング。

[64ae80dd36] nozomemein 2026-10-28 07:04:26 UTC

0dde38a194e59e2978597b470a85a41a9526d93f の続き。 ZJIT の VM 命令 expandarray の第2オペランドの flag が 1 の時に is_splat という名前の変数にフラグをセットして可動性を上げるリファクタリング。

[67a320db3b] Thomas Klemm 2026-10-28 18:04:59 UTC

ZJIT の alias によるメソッドの呼び出し時のメソッド解決の不具合修正。

[1654a6a0fd] Thomas Klemm 2026-10-28 20:27:48 UTC

ZJIT の Rust 製テストのリファクタリング。

[54d0988167] Thomas Klemm 2026-10-27 08:24:27 UTC

YJIT でブロック呼び出し(yield)時のキーワード引数渡しの処理でキーワード引数が失なわれてた不具合の修正。

[461085c2c7] Thomas Klemm 2026-10-29 20:53:37 UTC

ZJIT の中間表現 HIR の SendDirect および PushInlineFrame でスタックオーバーフロー時の fallback で誤ったメソッド呼び出しをしてしまう不具合を修正しています。

[8258233785] Thomas Klemm 2026-10-29 21:47:33 UTC

ZJIT の統計情報カウンタの加算が重複してた不具合を修正。

[f34d844d4f] Hiroshi SHIBATA 2026-10-27 22:59:33 UTC

GC の default 実装で Windows 環境では sweep を上位アドレスから下位に向かって行うように方向を変更しています。フラグメンテーションの緩和のためとのこと。

[0abc5521a3] Hiroshi SHIBATA 2026-10-29 00:01:50 UTC

f34d844d4f70f184c095ff137b1a1d05bea2fa0b の続きで Windows 環境では GC による free region のリストの順序も変更してたのを元に戻しています。

[d5d40d2749] John Hawthorn 2026-10-29 09:15:05 UTC

複数 Ractor 利用時に Refinements 利用時にブロック引数に Symbol を渡すと異常終了していた不具合を修正。 ifunc が他の Ractor のキャッシュ内に格納されて不正メモリアクセスになる可能性があったようです。

[14733af5ef] John Hawthorn 2026-10-15 06:52:35 UTC

Ruby::Box の rb_classext_t の複製処理で RGenGC 用の Write Barrier が不足していたのを修正しています。

[b740f7d553] John Hawthorn 2026-10-14 22:59:03 UTC

String#<< で引数(右辺値)の文字列の code range を設定していたは不要な処理なのでやめています。 [ruby-core:127151] [Bug #22451]

[9953185a38] Hiroshi SHIBATA 2026-10-29 11:26:56 UTC

標準添付ライブラリ mkfm.rb のテストでログの読み込みに File.binread を使う修正。

[820ced8df0] Hiroshi SHIBATA 2026-10-29 11:34:55 UTC

Windows 版のビルドプロセスの win32/Makefile.sub で reconfig ターゲットで verconf.mk が更新されていた時はビルドを中断して最初からやりなおさせるようにしています。

[46d53e73b0] Hiroshi SHIBATA 2026-10-29 11:34:55 UTC

Windows 版の win32/GNUmakefile.sub で GNUmakefile 自身の再生成のルールを追加しています。

[773003bd04] Hiroshi SHIBATA 2026-10-29 23:08:18 UTC

String#split に正規表現を渡した時の GC 実装の mmtk で非常に遅くなっていたのを修正。 mmtk 実装では長い文字列も slot 埋め込みするので繰り返し複製が作成されて重くなってたようです。

[3b150a90ff] Max Bernstein 2026-10-28 19:34:17 UTC

ZJIT の Rust 製テストの追加。

[d1a7948529] Max Bernstein 2026-10-28 20:05:35 UTC

ここから怒涛の ZJIT の定数畳み込みの最適化が続きます。 Integer#== の引数 nil の最適化。

[599364e5be] Max Bernstein 2026-10-28 20:26:59 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。 String#== nil の最適化。

[7704181e64] Max Bernstein 2026-10-28 20:29:42 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。 Array#== nil の最適化。

[9982455489] Max Bernstein 2026-10-28 17:20:23 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続き。ZJIT の Rust 製テストの追加。

[fd25859651] Max Bernstein 2026-10-28 17:25:19 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。中間表現 HIR の IsBigtEqual 命令の量オペランドが同じ値なら true に畳み込みしています。

[02cd7c9408] Max Bernstein 2026-10-28 17:26:50 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。中間表現 HIR の IsBitEqual 命令の両オペランドが同一のオブジェクトだとわかっている場合の畳み込み。

[5f1eb9247a] Max Bernstein 2026-10-28 17:31:31 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。中間表現 HIR の BoxBool 命令の畳み込み対応。

[68c7ecc3fb] Max Bernstein 2026-10-28 18:50:43 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化に関連して ZJIT 製テストの追加。

[2a3eacc933] Max Bernstein 2026-10-28 18:58:03 UTC

3b150a90ff0401a150dd0101b84ca05b0b3dc6f3 からの続きの ZJIT の定数畳み込みの最適化。 ZJIT の nil, true, false の #to_s メソッドの畳み込み最適化。

[fb01ba3a41] Akito Shitara 2026-10-30 03:31:34 UTC

IO::Buffer#== メソッドを定義しています。引数が IO::Buffer でない時は false を返すようにショートカット? を追加しています。 https://github.com/ruby/ruby/pull/19604

[7eaf64c62b] Kevin Newton 2026-10-29 14:52:47 UTC

prism のエラー表示のための padding を修正しているようです。

[0a13de1f05] Kevin Newton 2026-10-29 15:11:29 UTC

7eaf64c62b59ab7329526168d8859070e4cc0dcd からの続きで prism のエラー表示の処理の最適化。

[2456bac544] Kevin Newton 2026-10-29 15:32:09 UTC

7eaf64c62b59ab7329526168d8859070e4cc0dcd からの続きで prism のエラー表示の最適化。

[31d395bd7b] Kevin Newton 2026-10-29 15:44:08 UTC

7eaf64c62b59ab7329526168d8859070e4cc0dcd からの続きで prism のエラー表示の非常に長い行を切り詰める修正。

[7be3ed7f86] Kevin Newton 2026-10-30 03:02:18 UTC

7eaf64c62b59ab7329526168d8859070e4cc0dcd からの続きで prism のエラー表示の最適化。

[f91fd23296] Takashi Kokubun 2026-10-28 08:25:38 UTC

ZJIT で数値演算や比較系のメソッドで数値の型を推論してコンパイル後に違う型が来た時に side-exit してたのを、コンパイル結果を破棄して再コンパイルするフローが使えるようにしています。

[18a2083c8e] Takashi Kokubun 2026-10-29 04:38:08 UTC

ZJIT の VM 命令 newrange で両端が Fixnum の時の最適化のため型プロファイル収集を追加しています。

[a51b413914] Takashi Kokubun 2026-10-30 04:19:51 UTC

ZJIT の VM 命令 newrange で両端が Fixnum の時の最適化を beginless range や endless range (どちらかが nil)の時にも使えるようにしています。

[4abb1199ba] Patrik Ragnarsson 2026-10-27 16:49:05 UTC

bundler の cooldown 機能で誤った表示が出力されることがあった不具合を修正。

[d531b6bc55] Denis Talakevich 2026-10-29 14:32:03 UTC

bundler で Gemfile の gemspec コマンドがそれを囲む group, platform などのブロックを無視していたのを修正しています。

[9c217d4616] Benoit Daloze 2026-10-27 13:36:00 UTC

よく読めてませんが、プロファイラ利用していてシグナルハンドラから rb_profile_frames() を呼び出すように設定されている状態で vm_make_env_each() の実行途中でシグナルハンドラが起動すると稀に異常終了してしまう可能性があった不具合を修正しているようです。 [ruby-core:127248] [Bug #22476]

[db6aebc5c1] Benoit Daloze 2026-10-27 13:41:44 UTC

9c217d461608f440a7c16fb00ce4f80fd472dab2 の続きでコンパイラによる処理順序の reorder を抑制するための atomic_signal_fence() を追加しています。やっぱりかなり繊細な修正だったみたいですね。 [ruby-core:127248] [Bug #22476]

[ca1ec04e0a] Benoit Daloze 2026-10-30 09:58:14 UTC

9c217d461608f440a7c16fb00ce4f80fd472dab2 の続きでテスト用拡張ライブラリの atomic 処理の修正。 [ruby-core:127248] [Bug #22476]

ruby-trunk-changes 2026-10-29

今日は macOS での pthread 実装のレアな不具合修正や Hash.new の特異メソッド化による最適化や ZJIT の最適化などがありました。

[810a5a1d14] Eileen 2026-10-28 20:10:00 UTC

String#upcase, #downcase, #capitalize, #capitalize!, #swapcase などの rdoc 用コメントの call-seq の省略可能引数の記述を必須引数のように変更しています。がコミットログをみると(そして実際に)第1引数は省略可能で、省略時の値が :ascii ではない(Unicode の case mapping) というだけなので、この記法だと誤解があるけど、どうも Unicode を明示的に指定する方法はないらしい? https://github.com/ruby/ruby/pull/19582

[1b06b950bb] Andrii Konchyn 2026-10-28 19:04:40 UTC

spec/ruby に upstream から最新版をマージしています。

[8f292dadbd] "William T. Nelson" 2026-10-24 13:16:44 UTC

macOS での pthread では pthread_create(3) の第1引数に実際に thread が起動した「後に」 thread id を書き戻すことがあり、その前にこの struct rb_native_thread のメモリ領域が free されてしまう可能性があって use-after-free になるケースがあったので、ローカル変数で受け取って struct rb_native_thread::thread_id には起動した thread 内で pthread_self() で thread id を得てセットするように修正しています。起動後に thread id が設定されない期間が存在しますが、そのあいだは Thread#native_thread_id は nil を返すようにしています。

[7985834379] Hartley McGuire 2026-10-21 02:23:50 UTC

ZJIT の Rust 製テストの追加。

[c50cc8dd7e] Hartley McGuire 2026-10-22 20:57:50 UTC

ZJIT の中間表現 HIR の ArrayAref, ArrayArefChecked の副作用の設定が過剰だったので修正しています。

[0a7b079d04] Hartley McGuire 2026-10-22 20:59:38 UTC

ZJIT の RGenGC 用の HIR 命令 Write Barrier のための命令の生成を即値の時には省略する最適化。

[eb1a765b9a] Hartley McGuire 2026-10-22 21:01:06 UTC

ZJIT の HIR 命令 ArrayAset で struct RBaisc::flags のキャッシュを保持するようにして最適化しやすく? しているようです。

[b62abdae8b] Luke Gruber 2026-10-23 16:52:28 UTC

ObjectSpace::WeakMap や ObjectSpace::WeakKeyMap やその他 VM 内部の弱参照の解放処理で GC の mark 処理時に Ractor の Object Space を取得するために rb_execution_context_t を得るのい毎回 thread local storage を引いていて遅かったので、objspace を引数でとり回すように最適化しています。

[d176801dd1] Shia 2026-10-28 23:27:44 UTC

Struct の継承関係にあるサブクラスのインスタンスでメンバーを保持する内部的インスタンス変数 member を参照する時に親クラスの member の値をキャッシュしようとする時に Ractor の所属チェックが漏れていて異常終了する可能性があった不具合を修正しています。

[952e77c511] "dependabot[bot]" 2026-10-28 02:10:10 UTC

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

[27d148a9bc] Nobuyoshi Nakada 2026-10-22 09:36:22 UTC

rubyspec の spec_helper.rb から不要になった古い ruby 向けの分岐を削除しています。

[bd8cf52bc0] Hiroshi SHIBATA 2026-10-29 01:20:22 UTC

GitHub Actions のリリース用の workflow publish で RUBY_VERSION のフォーマットを検証するステップを追加しています。

[0399e2ba07] Nobuyoshi Nakada 2026-10-21 15:30:09 UTC

dir.c および process.c で MinGW 上での clang でのコンパイル時の警告抑制のため preprocessor 分岐の条件追加や未使用変数のキャストなどを追加しています。

[a34946d692] "dependabot[bot]" 2026-10-29 02:12:07 UTC

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

[d411489ce5] uvlad7 2026-09-10 23:26:22 UTC

include/ruby/internal/memory.h で rbimpl_size_add_overflow() の定義に x64 版 MSVC でのビルド時に _addcarry_u64() という組み込み関数? を利用した実装を追加しています。

[c08130556a] Shia 2026-10-22 23:36:10 UTC

Data#initialize で要素を保持する内部的インスタンス変数 member の配列を複製していたのを抑制する最適化。

[7142a3debb] Jean Boussier 2026-10-26 11:12:19 UTC

Hash.new メソッドを再定義して、キーワード引数 capacity による指定を考慮して不要な st table 化を抑制して、最初から必要な最適な slot サイズの heap に確保できるように最適化しています。

[61332e5324] Hiroshi SHIBATA 2026-10-29 10:03:18 UTC

標準添付ライブラリ fileutils の Windows 環境でのエラー修正。

ruby-trunk-changes 2026-10-28

今日は主に RubyGems/Bundler の更新や正規表現や IO のエンコード変換などでの不具合修正などがありました。

[ae2c6841c4] Luke Gruber 2026-09-03 23:09:46 UTC

vm.c に struct rb_callcache の static な変数 vm_uncached_cc というのを定義して Module のメソッドエントリに関するメソッド群で callcache の生成を抑制してこの静的な変数への参照を利用するようにしています。通常 Class/Module に対して数回しか呼ばれないので callcache を作るメリットがないためということみたいです。

[25eb737f03] Luke Gruber 2026-09-04 15:47:37 UTC

ae2c6841c4a3e150199668d61627bc059edff128 の続きで callcache の生成を抑制する時の rb_vm_empty_cc() などの関数をやめて変数を直接参照するようにしています。

[caf4f279d1] Kevin Newton 2026-10-26 16:25:34 UTC

prism の ab52c6ab867ffb68f0051327a6c9a0d5ce6e7210 での newlib 対応の再修正。フォーマット文字列の指示子の %d のかわりに PRIi32 マクロを利用するようにして sys/types.h の不要な #include を削除しています。

[93d313551b] dak2 2026-10-18 09:18:39 UTC

ZJIT の Rust 製テストの追加。

[33ac6afea7] femto 2026-10-27 15:28:18 UTC

ZJIT の型プロファイルの String#% の戻り値のクラスを String 固定(サブクラスは含まない)に変更しています。 https://github.com/ruby/ruby/pull/19479

[93c45a96b5] Yusuke Endoh 2026-10-27 03:12:40 UTC

正規表現で大文字小文字の変換をすると文字数が変わるような言語の時の処理で 1バイトバッファ外のメモリを参照する可能性があった不具合を修正しています。

[95f21cd82c] Yusuke Endoh 2026-10-27 17:28:44 UTC

IO の読み込み時のエンコード変換処理中に不正なバイト列を検出した時に文字の途中までのバイト列かもしれないので pushback して書き戻す処理があり、これが誤ってバッファの先頭より前に書き戻される可能性があった不具合を修正しています。

[db563a3578] Benoit Daloze 2026-10-27 16:07:59 UTC

vm.c の rb_ec_clear_vm_stack() という関数に atomic_signal_fence() の呼び出しを追加。コンパイラによる機械語命令の順序変更により異常終了する可能性があったのを修正しています。 [ruby-core:127252] [Bug #22477]

[a98386e422] Hiroshi SHIBATA 2026-10-27 01:26:11 UTC

拡張ライブラリ socket の raddrinfo_pthread_create() を raddrinfo_thread_create() と改名し引数から不要な thread id を削除しています。

[47d566434f] Hiroshi SHIBATA 2026-10-27 01:26:24 UTC

拡張ライブラリ socket の Addrinfo の名前解決が mswin では割り込み可能な実装になっていなかったのを、_beginthreadex() というライブラリ関数を使った thread? による実装で対応するようにしています。

[021446fa21] Hiroshi SHIBATA 2026-10-27 04:16:29 UTC

拡張ライブラリ socket の名前解決のタイムアウト時の例外メッセージの組み立てで ArgumentError が発生する可能性があったので回避して正しい例外が発生するように修正しています。

[997e41e85f] Hiroshi SHIBATA 2026-10-27 21:21:24 UTC

bundler の source の比較時に認証情報を除いて判定するようにして lockfile に重複したエントリが残るのを防ぐ修正。

[1de408bb4d] Takashi Kokubun 2026-10-28 00:02:34 UTC

ZJIT の型プロファイラで特異クラスの型は参照を残さないようにしています。

[474d1b0eae] Hiroshi SHIBATA 2026-10-27 04:53:46 UTC

bundler の override 昨日のキーワード引数を to から with に変更しています。

[a5d2309e76] Hiroshi SHIBATA 2026-10-27 07:13:17 UTC

bundler のテストの 474d1b0eae862be4a077118281c76ad349a76103 に対応したテストの追加。

[78da6e26a6] Hiroshi SHIBATA 2026-10-27 23:05:22 UTC

bundler の override 機能のキーワード引数 from も in に変更しています。

[cf8f58a9f1] Hiroshi SHIBATA 2026-10-27 23:08:34 UTC

bundler の override 機能の前の書きかたがされてた時に書き換えの suggest をする例外メッセージを出すようにしています。

[79de9be7d8] Burdette Lamar 2026-10-28 00:59:50 UTC

MatchData#== の rdoc 用コメントの手直し。

[70e332c8a7] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[79a78fb1d9] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[d0693e50d5] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[7e58ec2ffd] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[c593a9e7d1] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[41e7a8f717] Hiroshi SHIBATA 2026-10-27 23:37:41 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[d5b9496e1b] Hiroshi SHIBATA 2026-10-27 23:38:02 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[6b66a7e193] Hiroshi SHIBATA 2026-10-27 23:38:02 UTC

rubygems の Gem::YAMLSerializer の YAML 対応の強化。

[6926e6565b] Hiroshi SHIBATA 2026-10-28 00:06:17 UTC

rubygems の Gem::YAMLSerializer のテスト修正。

[c7302c98a0] BurdetteLamar 2026-10-27 18:48:18 UTC

MatchData#[] の rdoc 用コメントの手直し。

[71f231d30e] Hiroshi SHIBATA 2026-10-28 01:12:50 UTC

bundler の platform の選択処理の効率化。

[a4af4a22b5] Hiroshi SHIBATA 2026-10-28 01:12:50 UTC

rubygems の Gem::YAMLSerializer の中間オブジェクト生成を抑制する最適化。

[8eaa862cdf] Hiroshi SHIBATA 2026-10-28 01:12:50 UTC

bundler の gem の比較処理で中間オブジェクト生成を抑制する最適化。

[c27aa17258] Takashi Kokubun 2026-10-28 03:46:15 UTC

ZJIT のブロック呼び出しの対応呼び出し形式を拡張して side-exit を減らす最適化。 https://github.com/ruby/ruby/pull/19549

[16cf9129cc] Peter Zhu 2026-10-28 02:06:00 UTC

GC の mmtk 実装の pin-down の実装の修正。

[8f7eb9c415] Hiroshi SHIBATA 2026-10-28 03:46:38 UTC

bundler のバージョンを 4.1.0.beta3 に更新しています。

[0c359f342d] Hiroshi SHIBATA 2026-10-28 03:46:38 UTC

rubygems のバージョンを 4.1.0.beta3 に更新しています。

[820ad50ee1] git 2026-10-28 04:22:18 UTC

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

[c7e123c750] Kevin Newton 2026-10-28 05:01:30 UTC

prism のバージョンを 2.1.0 に更新しています。

[65c8fc01ef] Kevin Newton 2026-10-27 15:17:11 UTC

prism の $1 のような特殊変数の数値部分をバッファを確保してコピーして strtoul(3) してたのを10進数の 1桁ずつ読み取るようにしています。

[e80cd771b3] Kevin Newton 2026-10-27 15:01:35 UTC

prism のメモリ確保失敗時の abort(3) による異常終了を PRISM_OOM() マクロを定義することで差し替えられるようにしています。今のところ結局 prism/internal/oom.h で abort の呼び出しに定義していますが、rb_eNoMemError 例外とかに変更するのかな。

[b1f8ac364d] Nobuyoshi Nakada 2026-10-28 06:29:32 UTC

3a55e5c6d34728ffcb5158dd7c36643e11c37f04 の到達不能なコード内の ensure が呼ばれてしまう不具合の修正の再修正。今度は逆に ensure 節が実行されない場合ができてしまっていたので条件分岐を修正しています。 https://github.com/ruby/ruby/pull/19513#issuecomment-6460531535

[670f6c1541] nishan 2026-10-28 05:07:33 UTC

File.realdirpath で symbolic link の解決をする時に参照先の文字列オブジェクトが GC で回収されるのを防ぐための RB_GC_GUARD() を追加しています。 [ruby-core:127256] [Bug #22479]

[8e87705be8] Charles Oliver Nutter 2026-10-28 09:34:33 UTC

拡張ライブラリ io/console のバージョンを 0.9.5 に更新しています。

[436e72e7f2] git 2026-10-28 09:37:10 UTC

NEWS の default gems のバージョンリストの io-console のバージョンも 0.9.5 に更新しています。

[130c9ec44b] Harmen Stoppels 2026-10-28 10:15:35 UTC

tool/make-snapshot で tar パッケージを生成する時に最後に EOA (End of Archive) のマーカーが出力されていなかったのを追加しています。 [ruby-core:127259] [Bug #22480]

[637bd7cba1] Nobuyoshi Nakada 2026-10-27 16:33:30 UTC

Ruby::Box#inspect で表示する box_id の文字列化にフォーマット文字列 %lf での埋め込みを使うようにして、わざわざ LONG2NUM() で Integer 化してから rb_funcall() による to_s のメソッド呼び出しをしていたのをやめています。