今日は主に拡張ライブラリ json の JSON.parse の allow_invalid_escape オプションの追加、win32-registry の bundle gems への切り出し、IO::Buffer#locked の不具合修正などがありました。
[e7a098457a] Jean Boussier 2026-02-19 12:20:18 UTC
拡張ライブラリ json の JSON.parse のキーワード引数 allow_invalid_escape を追加して不正なバックスラッシュによるエスケープで例外を発生させず無視して読み取ることができるようにしています。 https://github.com/ruby/json/issues/939
[a19becac5b] Randy Stauner 2026-02-18 00:32:33 UTC
YJIT 利用時にプロセス初期化時の組み込みメソッドのメソッドエントリを取得しておくタイミングより前に prepend などでメソッドの上書きが行なわれると正しく最適化が行なわれない可能性があるため、メソッドエントリ取得を ruby_init_prelude() 呼び出し前に行なうようにしています。
[b9dc0a2bb8] Étienne Barrié 2026-02-18 13:19:02 UTC
a19becac5b3c0a477fc1883cdd7f9d7195d84349 の YJIT の初期化時の修正に対応するテストを追加しています。
[bf3bc12d38] Randy Stauner 2026-02-18 19:17:15 UTC
b9dc0a2bb8d08980aa98cf09a6e8615adcd8ffd4 で追加した YJIT のテストを bundler/setup を利用していたのを BUNDLER_SETUP に直接一時ファイルを指定する方法に変更しています。
[e7cff2e817] Randy Stauner 2026-02-18 00:36:12 UTC
a19becac5b3c0a477fc1883cdd7f9d7195d84349 のプロセス初期化時の YJIT 向けの組み込みメソッドのメソッドエントリ取得を早める修正と同様の修正を ZJIT 向けにも行なっています。
[3f5e85bf04] Max Bernstein 2026-02-19 00:43:42 UTC
ZJIT の中間表現 HIR に JIT 時のコードブロック? のパラメーター処理するために LoadArg という命令を新設して Param 命令のかわりにこれを利用するようにしています。将来的なコード生成の最適化? のための整理かなと思います。
[f5782840a3] Max Bernstein 2026-02-19 01:08:30 UTC
ZJIT のコード生成のための control flow graph (CFG) の構築方法を少し変更しているようです。
[c058a98866] Max Bernstein 2026-02-19 18:05:41 UTC
ZJIT において内部的な木構造を構築するアルゴリズムを変更して最適化するというリファクタリング(たぶん)です。
[607af489a2] Max Bernstein 2026-02-18 15:16:48 UTC
ZJIT の統計情報にコンパイルにかかった時間のうち side-exit 用のコード生成の時間? の割合を算出するようにしているようです。
[b205bf613f] Max Bernstein 2026-02-18 16:09:48 UTC
さらに ZJIT のコンパイル時間の測定にフェーズごとの内訳? を計測するようにしています。
[bb8881f31e] Andrii Furmanets 2026-02-18 19:12:10 UTC
rubygems で設定ファイルの concurrent_downloads が効くようにしています。
[7ca0aa5f73] Matt Valentine-House 2026-02-16 16:47:50 UTC
string.c の RESIZE_CAPA_TERM() というマクロで slot 内へのバッファの埋め込まれた String からヒープのバッファに memcpy(3) でコピーする際に終端文字のサイズも含めてコピーするように修正しています。
[e6f73fcf49] Matt Valentine-House 2026-02-18 12:42:15 UTC
GC のメモリ使用量のプロファイリング時に Variable Width Allocation による page 内のオブジェクト数が heap ごとに可変になっていることに対応できていないところがあったのを修正しているようです。
[c0c97c0f12] Max Bernstein 2026-02-19 20:59:40 UTC
ZJIT の Rust 実装の小さなリファクタリング。
[06c8b1abfa] Max Bernstein 2026-02-19 21:04:44 UTC
ZJIT の Rust 実装のリファクタリング。
[126b657bd1] John Hawthorn 2026-02-19 23:09:42 UTC
Dir.pwd の実装でヒープからメモリ確保するのに rb_imemo_tmpbuf_new() で T_IMEMO 型オブジェクトをアンカーとして使って大域脱出時に GC でメモリ解放させる機構を使っていたのを xmalloc() でメモリ確保して rb_ensure() を使って大域脱出時も解放処理を行うようにする普通の実装を使うようにしています。
[b5ccab2093] Kasumi Hanazuki 2026-02-20 01:56:50 UTC
IO::Buffer#locked メソッドがブロック内で例外が発生した時にロックを解放していないという致命的な不具合を修正しています。 https://github.com/ruby/ruby/pull/16180 [ruby-core:124833] [Bug #21882]
[6ea68a5841] Edouard CHIN 2026-02-10 12:48:59 UTC
bundler で動作の軽量化のために bundle install 時に plugin のインストールが必要かどうか(既にインストール済みか)のチェックを行なっていたのを削除しています。この時に行なう Dir.glob が重いのでそれを避けて、plugin の持つ gem の時に常にインストールを実行するようにしています。
[b093886df0] Earlopain 2026-02-19 19:48:19 UTC
Rance の rdoc 用コメント内のコードブロックのインデント修正。
[f01f66ca24] Lars Kanis 2026-02-17 20:23:35 UTC
拡張ライブラリ win32 内の win32/registry.rb を標準添付ライブラリから外して bundled gems にしています。 [ruby-core:124646] [Bug #21855]
[28de927b37] Hiroshi SHIBATA 2026-02-20 04:25:59 UTC
doc/maintainers.md と doc/standard_library.md に bundled gems になった win32-registry のエントリを追加しています。これまで拡張ライブラリ win32 の一部という扱いだったので gem としては新規の追加という形になっています。
[3417f8025d] git 2026-02-20 07:08:05 UTC
gems/bundled_gems と NEWS の bundled gems のバージョンリストに win32-ole の項目を更新/追加しています。
[3dc80a098c] Hiroshi SHIBATA 2026-02-20 03:41:13 UTC
spec/bundled_gems_spec.rb から不要になった Spec::Rubygems.test_setup の呼び出しを削除しています。
[2d2afa8c17] Nobuyoshi Nakada 2026-02-20 01:33:08 UTC
make 時の rubyspec の C API テスト用拡張ライブラリのビルドのメッセージを GitHub Actions でグループ化して表示するための対応。
[986aa6943f] Nobuyoshi Nakada 2026-02-20 10:44:00 UTC
bundler のテストなどで一時ディレクトリの管理のために読み込ませる tool/lib/_tmpdir.rb で未初期化変数の警告を抑制するためダミーの演算子つき代入 ||= での代入を追加しています。
[f3d52cb80d] Andrii Furmanets 2026-02-20 07:05:24 UTC
rubygems の gem environment サブコマンドのヘルプメッセージに concurrent_downloads という設定項目を追加しています。
[ee2d90295c] Étienne Barrié 2026-02-20 10:58:01 UTC
拡張ライブラリ json の昨日の で追加した JSON.parse のオプション allow_invalid_escape についての rdoc 用コメントでエスケープが二重になってわかりにくいので %{} でのクオートをやめてシングルクオートでくくるようにしています。