今日は Array#pack/String#unpack にアライメント指定の指示子サポートの追加、昨日の Proc#refined 追加後の修正、Class#subclasses の管理のためのリストの追加漏れの不具合修正、標準添付ライブラリ ipaddr の新規メソッド追加、Ractor.make_shareable の不具合修正などなどたくさんの変更がありました。
[bb472c530a] HoneyryderChuck 2026-06-22 12:11:11 UTC
標準添付ライブラリ ipaddr に IPAddr#multicast? および IPAddr#link_local_multicast? というメソッドを新規追加してアドレスが multicast アドレスかどうか簡単に判定できるようにしています。
[e9444aa0da] Nobuyoshi Nakada 2026-06-10 00:26:25 UTC
Array#pack および String#unpack のフォーマット文字列の指示子に x! とか @! というのを追加して、データ幅とは別にデータ列のなかでのアライメント(offset を特定の数の整数倍のところまで読み飛ばす)指定ができるようにしています。アライメントサイズも数値だけでなく型の指示子でその型のサイズの指定もできるようにしています。 [ruby-core:125953] [Feature #22185]
[86951165b8] Jean Boussier 2026-07-15 08:57:54 UTC
struct RBasic::flags のビットフラグ ROBJECT_HEAP 定数を削除しています。このビットの役割は shape_id_t 内のレイアウトで代替されるようになっているので不要になっていました。
[eef14ff26e] Ryan Davis 2026-07-12 22:39:12 UTC
標準添付ライブラリとしての prism の require 漏れの追加。
[5840692b0d] Ryan Davis 2026-07-12 22:39:55 UTC
標準添付ライブラリとしての prism の RubyParser 互換機能の scope の指定追加。
[d81da865f8] Ryan Davis 2026-07-12 22:40:51 UTC
標準添付ライブラリとしての prism の修正。
[a706e28800] Kevin Newton 2026-07-15 14:03:25 UTC
標準添付ライブラリとしての prism の追加修正。
[65bb510a27] Jean Boussier 2026-07-15 10:53:15 UTC
gc.c の rb_gc_obj_needs_cleanup_p() という関数で大きな switch 文を書いてたのを、複数の case 節で共通していた一部の条件(T_IMEMO 型など)を switch 文の前に if 文に括り出すリファクタリング。
[cd5e5c093f] Nobuyoshi Nakada 2026-07-15 14:56:07 UTC
e9444aa0dadf59777d07509e23006e741ff66838 で追加した Array#pack, String#unpack の新機能の NEWS のエントリでチケット参照をリンクにするための footnote を追記しています。 [ruby-core:125953] [Feature #22185]
[92e4ea7696] Nobuyoshi Nakada 2026-07-15 15:13:07 UTC
標準添付ライブラリとしての prism の rdoc の :nodoc: タグコメント追加。
[513875464f] Nobuyoshi Nakada 2026-07-02 10:24:42 UTC
Range オブジェクトに上限下限を指定してその範囲との重なりをもつ新たな Range オブジェクトを返す Range#clamp メソッドを新規追加しています。 [ruby-core:125920] [Feature #22175]
[b061f5c74a] Hiroshi SHIBATA 2026-07-15 16:15:04 UTC
標準添付ライブラリ erb の rdoc 用コメントのサンプルコードの不具合修正。 https://github.com/ruby/erb/pull/123
[d90de908b3] Max Bernstein 2026-07-15 16:36:33 UTC
ZJIT の --zjit-stats での出力の C 実装のメソッド名にクラス付きの名前を出せるように対応しています。 https://github.com/ruby/ruby/pull/17895
[6cd755deab] Jean Boussier 2026-07-15 15:47:48 UTC
rb_obj_fields() に T_IMEMO 型と T_CLASS, T_MODULE 型のオブジェクトもサポートするようにしてあちこちの呼び元で行なっていた分岐をこの関数に集約するリファクタリング。
[e9c87a9628] Max Bernstein 2026-07-15 17:51:27 UTC
ZJIT の統計情報カウンタの整理をしているようです。 https://github.com/ruby/ruby/pull/17721
[1790ac443c] Kevin Newton 2026-07-15 17:18:46 UTC
prism の不具合修正。
[d7bdc2a33f] Nobuyoshi Nakada 2026-07-15 16:28:40 UTC
tool/test-bundled-gems.rb で csv.gem のテスト実行する時に Ractor 関係のテストは Windows 環境では skip するようにしています。
[2619d3af01] Nobuyoshi Nakada 2026-07-15 16:49:39 UTC
tool/test-bundled-gems.rb で Windows 環境では debug.gem のテストも実行しないようにしています。 pty に依存しているため。
[6e842889ce] Nobuyoshi Nakada 2026-07-15 16:30:04 UTC
tool/test-bundled-gems.rb でテストが重いいくつかの gem から優先して実行するようにしています。並行実行を効率化するためかな。
[efb3a73445] Jean Boussier 2026-07-15 17:30:41 UTC
shape.h の rb_imemo_fields_ptr() から fields_obj の取り出しを削除していて、そのかわり? variable.c の obj_fields_each() に fields_obj 変数の定義と代入を追加しているのですが、この変数使ってないので、途中でコミットしてしまった? みたいですね。
[0b681246d6] Jean Boussier 2026-07-15 17:35:37 UTC
shape.h から inline 関数 ROBJECT_FIELDS_COUNT()、ROBJECT_FIELDS_COUNT_COMPLEX()、ROBJECT_FIELDS_COUNT_NOT_COMPLEX() を削除して呼び元に展開するリファクタリング。
[0afd762b9e] Jean Boussier 2026-07-15 17:40:25 UTC
同じく shape.h の inline 関数 ROBJECT_FIELDS_CAPACITY() を削除して呼び元に展開するリファクタリング。
[74bd057f9c] Jean Boussier 2026-07-15 17:51:01 UTC
同じく shape.h の inline 関数 ROBJECT_FIELDS_HASH() を削除して呼び元に展開するリファクタリング。 efb3a7344589c64ef2438beaa39b8d0e8b67cdc5 の変更はここの準備だったみたいですね。
[0abe2447e1] Hartley McGuire 2026-07-15 18:25:42 UTC
time.c の time_zonelocal() で簡易に引数が timeozne オブジェクトかどうか判定する shortcut を追加して respond_to? を呼び出す重い判定をスキップする最適化。
[a758990d44] Hartley McGuire 2026-07-15 18:56:46 UTC
Time.new の offset に整数が渡された時の早期 return を追加する最適化。
[f7eca0d41e] John Hawthorn 2026-07-09 20:31:22 UTC
T_OBJECT や T_DATA 以外のクラスのインスタンス変数を管理する generic iv のテーブルは弱参照テーブルのためオブジェクトが GC で回収される時にこのテーブルがスキャンされていましたが、これが余計に処理がかかるのでオブジェクトごとにチェックするのではなく GC の実行開始時にテーブル全体でまとめてチェックするように集約しています。
[83626894f7] John Hawthorn 2026-07-02 05:06:22 UTC
Ractor.make_shareable でオブジェクトからの参照を traverse するために VM のロックを取得していましたが、T_DATA 型オブジェクトで RUBY_TYPED_DECL_MARKING フラグを立てて宣言的なマーク処理の定義をしているものはロック不要で参照を列挙できるため不要なロックを取らないように軽量化しています。
[697afb1e37] John Hawthorn 2026-07-02 21:33:33 UTC
ractor.c の rb_ary_entry() のかわりに RARRAY_AREF() を、RB_TYPE_P() のかわりに RB_BUILTIN_TYPE() を利用するリファクタリング。
[e98b8fd9ac] John Hawthorn 2026-07-02 21:33:53 UTC
Ractor.make_shareable でインスタンス変数を iterate する関数の呼び出しをインスタンス変数の存在するかどうかの軽量なチェックをして必要な時だけ呼ぶように最適化しています。
[e51c4e62bb] Matt Valentine-House 2026-07-15 20:02:46 UTC
ZJIT の Rust 実装の関数名改名のリファクタリング。
[5167ab8ad6] Koichi Sasada 2026-07-15 21:24:13 UTC
GitHub Actions の macOS 環境の workflow で debug.gem のテストのために RUBY_DEBUG_TEST_NO_REMOTE という環境変数をセットしています。
[faa3cc8cf1] Koichi Sasada 2026-07-15 21:47:55 UTC
Ractor.send でオブジェクトを Ractor 間で移動した場合 Object Space の slot も移動し、元の slot は抜け殻を意味する RactorMovedObject というダミーのクラスのインスタンスとして上書きされていましたが、この時 shape_id もリセットしてしまったため shape_id_t 内の slot サイズを表すビット列が実際の slot サイズと不一致になってしまっていたので、この領域を維持するように修正しています。
[c7c0483efc] Ian Ker-Seymer 2026-06-25 19:32:00 UTC
Ractor.send で移動させるオブジェクトで複数の経路で同じオブジェクトを参照する時にそのコピーが二重に行なわれてオブジェクトの構造が維持されない場合があった不具合を修正しています。
[6e055f5692] Misaki Shioi 2026-07-16 00:11:36 UTC
拡張ライブラリ socket のテストでのハングアップする可能性があった不具合の修正。 https://github.com/ruby/ruby/pull/17889
[0117f717ed] Hiroshi SHIBATA 2026-07-15 06:27:15 UTC
win32/win32.c の Windows CE (!?) 向けの preprocessor 分岐を削除しています。
[87506bb30f] Hiroshi SHIBATA 2026-07-15 06:27:46 UTC
win32/setup.mak に DEC Alpha アーキテクチャ向け(!?)の対応が残っていたので削除しています。
[65c9345873] Hiroshi SHIBATA 2026-07-15 06:28:12 UTC
win32/setup.mak の古い MSVC 向けの分岐を削除しています。
[7d02393067] Hiroshi SHIBATA 2026-07-15 06:28:35 UTC
win32/mkexports.rb に $arch の SuperH 向けの対応が残っていたのを掃除しています。
[53dbc939ed] Hiroshi SHIBATA 2026-07-15 06:28:58 UTC
cygwin/GNUmakefile.in の cygwin 向けでない時の -mno-cygwin オプションの追加を削除しています。
[ca7ec5a0c3] Shugo Maeda 2026-07-10 23:30:22 UTC
Class#subclasses でクラスを継承しているクラスリストを返すために管理しているリストで、モジュール を include や prepend しているクラスを dup した時に親クラスのリストに追加されず漏れるという不具合があったのを修正しています。 rb_mod_init_copy() で T_CLASS の複製時に対応を追加しています。 [ruby-core:126038] [Bug #22190]
[674e93935c] Hiroshi SHIBATA 2026-07-16 01:06:22 UTC
GitHub Actions の Windows 版の tarball を使うテストでパッケージのキャッシュに使うファイルパスに archname を利用するようにしています。
[3273d084bb] "dependabot[bot]" 2026-07-16 02:08:01 UTC
GitHub Actions の check_sast workflow で利用しているアクションのバージョンを更新しています。
[11bb5c82d2] Luke Gruber 2026-07-15 22:39:29 UTC
GitHub Actions の macOS 版 workflow で launchctl コマンドを実行して ReportCrash サービスを起動しないようにしています。
[a78c2d52dc] Hiroshi SHIBATA 2026-07-16 01:10:02 UTC
configure から SunOS のサポートを削除しています。
[99f2ef9c1f] Shugo Maeda 2026-07-16 05:27:51 UTC
Proc#refined のための rb_iseq_original_iseq() という ISeq を複製する関数に race condition があったので、ポインタを original_iseq メンバーにセットする前にバッファの内容を完成させておくように修正しています。またポインタの設定も ATOMIC_PTR_CAS() を使って atomic に行うようにしています。
[3f9a000540] Shugo Maeda 2026-07-16 06:18:47 UTC
cce7041630642c56dd4e32eb669d9fd8bffa4040 での Proc#refined の追加の再修正で cont.c の rb_fiber_start() で EC_PUSH_TAG() と EC_POP_TAG() のあいだのセクションで rb_proc_refinements_cref() を呼び出すのを避けて事前に呼び出して変数の格納しておくようにしています。Intel CC の不具合でビルドエラーになることがあったみたいです。
[603f918ec9] Nobuyoshi Nakada 2026-07-16 07:21:52 UTC
NEWS のチケット参照のリンクのために footnote をいくつか追加しています。
[38c95df4ef] Matt Valentine-House 2026-07-09 20:22:11 UTC
ZJIT のオブジェクトのレイアウトを GC の API から取得してオブジェクト確保をインライン化する最適化で、slot の初期化時に呼び出すフック関数を登録できるようにしています。今後の拡張のため。
[f11bae5280] Matt Valentine-House 2026-07-09 20:22:24 UTC
ZJIT で文字列オブジェクトの fstring から複製を作成する処理のインライン化を実装しています。 38c95df4ef9b612b30016f06fc39712bad3df12c で導入したオブジェクト生成時の初期化フック機構を利用しています。
[58bc68ccb3] Matt Valentine-House 2026-07-14 09:28:19 UTC
f11bae5280e9c55aca2341fa9495d6539d2c10bf の続きで ZJIT の文字列オブジェクトの複製処理で長い文字列の時に memcpy(3) 関数を呼び出す最適化(?)。
[05159f813f] Matt Valentine-House 2026-07-14 09:34:27 UTC
ZJIT の Rust 実装の変数名を改名するリファクタリング。
[fb4c60d71a] Matt Valentine-House 2026-07-15 15:26:24 UTC
f11bae5280e9c55aca2341fa9495d6539d2c10bf からの ZJIT の文字列複製のインライン化で GC.compact への対応が漏れていた不具合を修正しています。
[9a65a188e6] Matt Valentine-House 2026-07-15 18:52:33 UTC
ZJIT の Rust 実装のコメント追加のみ。
[7db62d5647] Matt Valentine-House 2026-07-09 21:41:52 UTC
f11bae5280e9c55aca2341fa9495d6539d2c10bf からの ZJIT での文字列複製のインライン化で利用するための C の関数 rb_zjit_str_resurrect_fastpath() で chilled string への対応を追加しています。
[03ca878c93] Yusuke Endoh 2026-07-16 08:17:17 UTC
Windows 環境での Kernel#system にコマンドの文字列として "%VAR" のように閉じてない変数参照で終わる文字列を渡すとバッファオーバフローして参照してしまう不具合を修正しています。 [ruby-core:126098] [Bug #22198]