以下の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20251208より取得しました。


ruby-trunk-changes 2025-12-08

今日は Pathname の標準添付ライブラリ時代との互換性を保つための変更や ObjectSpace._id2ref の複数 Ractor 対応をはじめ Ractor 対応の強化などがありました。

[e7f9abdc91] Peter Zhu 2025-12-06 03:09:00 UTC

tool/sync_default_gems.rb で拡張ライブラリ stringio の upstream からの同期の時に doc/stringio も同期対象にしています。

[240afe50a1] Nobuyoshi Nakada 2025-12-06 15:38:25 UTC

42f5654b69244b5892ff2c2eba8d838064d2cd9f の non-blocking Fiber Scheduler の yield メソッド対応のテストで標準エラー出力に出していた出力を抑制しています。 が、ついでに e7f9abdc910bbb37d04e8e65e9bad5f36fa074e1 の tool/sync_default_gems.rb の変更が巻き戻されてしまっているようです。

[7319db44fc] Nobuyoshi Nakada 2025-12-06 08:53:54 UTC

組み込みクラスになった Pathname の to_path メソッドを alias として定義する時に alias 文を使うことで Symbol を不要にしていあす。また Pathname::TO_PATH という過去の互換性のための定数を削除しています。

[b675deeeb1] Nobuyoshi Nakada 2025-12-06 09:10:44 UTC

Pathname#initialize で引数の変換に File.path を利用してシンプルにしています。

[da3b7d5ee3] Nobuyoshi Nakada 2025-12-06 09:13:58 UTC

Pathname の ruby 実装で利用していた内部的定数を private にしてさらに freeze しています。

[2e828dd98f] Peter Zhu 2025-12-06 15:37:56 UTC

IO::Buffer#get_value の 128-bits 変数対応でコンパイラによる aliasing の警告抑制のため共用体を使ったより堅牢な記述方法を使うようにしています。

[9dfb7bd7d4] Theo Buehler 2025-12-05 12:14:45 UTC

拡張ライブラリ openssl の ossl_bin2hex() という関数の引数に const 修飾子を追加しています。

[d3aa7b889f] Theo Buehler 2025-12-05 12:29:59 UTC

拡張ライブラリ openssl のソースファイル ossl_ocsp.c で ASN1_OCTET_STRING という型の文字列を表現する構造体のメンバーを直接アクセスせず ASN1_STRING_XXX() というマクロ群を利用してアクセスするようリファクタリングしています。

[98c151b0e5] Theo Buehler 2025-12-05 12:44:18 UTC

d3aa7b889f572237467156f3c6bc3c68ef45e9c4 と同様に拡張ライブラリ openssl の openssl_asn1.c でも ASN1_OCTET_STRING の操作に ASN1_STRING_XXX() のマクロ群を利用するようにしています。

[a07997bf81] Theo Buehler 2025-12-05 12:52:04 UTC

d3aa7b889f572237467156f3c6bc3c68ef45e9c4 と同様に拡張ライブラリ openssl の openssl_ns_spki.c でも ASN1_OCTET_STRING の操作に ASN1_STRING_XXX() のマクロ群を利用するようにしています。

[38ad0806d7] Theo Buehler 2025-12-05 12:54:49 UTC

d3aa7b889f572237467156f3c6bc3c68ef45e9c4 と同様に拡張ライブラリ openssl の openssl_ts.c でも ASN1_OCTET_STRING の操作に ASN1_STRING_XXX() のマクロ群や asn1str_to_str() といった API を利用するようにしています。

[8d3da814c0] Theo Buehler 2025-12-05 13:15:08 UTC

d3aa7b889f572237467156f3c6bc3c68ef45e9c4 と同様に拡張ライブラリ openssl の ossl_x509ext.c でも asn1str_to_str() という API を利用するようにしています。

[1f0d41aa4d] Peter Zhu 2025-12-06 17:07:08 UTC

拡張ライブラリ date の初期化関数 Init_date_core() で 1/2 の Rational を保持する変数を rb_gc_register_mark_object() で GC の mark するために登録するのを変数への代入の直後に移動しています。あいだに GC が走る可能性がある処理が挟まっていたため。

[47c0dae188] Theo Buehler 2025-12-06 16:58:56 UTC

拡張ライブラリ openssl の OpenSSL::ASN1 の実装で不要なキャストをしていたのを削除しています。

[87bc106b87] BurdetteLamar 2025-12-06 17:37:40 UTC

拡張ライブラリ stringio の StringIO#external_encoding の rdoc 用コメントのリンクを修正しています。

[588347a088] Peter Zhu 2025-12-06 16:47:34 UTC

ObjectSpace._id2ref で object_id でテーブルからオブジェクトの参照を引く処理が複数 Ractor 利用時に race condition があり異常終了する可能性があったのを修正するため参照する時じゃなくてテーブルへの追記の時に RB_VM_LOCKING() で VM 全体のロック取得するようにしています。

[f298beb2d9] Burdette Lamar 2025-12-06 23:20:50 UTC

拡張ライブラリ stringio の StringIO#lineno の rdoc 用コメントのリンク修正。 https://github.com/ruby/stringio/pull/191

[c9fe3cba39] Burdette Lamar 2025-12-06 23:21:14 UTC

拡張ライブラリ stringio の StringIO#lineno= の rdoc 用コメントのリンク修正。 https://github.com/ruby/stringio/pull/192

[82577ac090] Burdette Lamar 2025-12-06 23:21:26 UTC

拡張ライブラリ stringio の StringIO#pos の rdoc 用コメントのリンク修正。 https://github.com/ruby/stringio/pull/193

[33837abb81] Burdette Lamar 2025-12-06 23:21:38 UTC

拡張ライブラリ stringio の StringIO#pos= の rdoc 用コメントのリンク修正。 https://github.com/ruby/stringio/pull/194

[fb80f84fc7] Peter Zhu 2025-12-03 02:43:29 UTC

String#[]= 系のメソッドのドキュメントの markup のミスを修正。

[68eab91b14] Nobuyoshi Nakada 2025-12-07 04:44:19 UTC

tool/sync_default_gems.rb の pathname.gem の upstream の repository から組み込みの pathname の実装への同期を追加しています。 pathname は default gem ではなくなって組込みになったのですが、まだ upstream が本体なんですね

[941e70ab38] Peter Zhu 2025-12-06 03:09:00 UTC

巻き込みで revert されてしまっていた e7f9abdc910bbb37d04e8e65e9bad5f36fa074e1 を再度適用しています。

[eafaff9443] Samuel Williams 2025-12-07 11:55:13 UTC

non-blocking Fiber 用の Scheduler に io_close のフックメソッドの仕様を追加しています。 IO#close 時に fd の整数を引数として呼び出します。 https://github.com/ruby/ruby/pull/15434

[4080abecd6] Nobuyoshi Nakada 2025-12-07 09:16:02 UTC

prism のビルド用の prism/srcs.mk で distclean で prism ディレクトリ削除時に失敗してもエラーにしないようにしています。

[f2b250c150] Nobuyoshi Nakada 2025-12-06 15:06:21 UTC

組み込みの Pathname の Pathname#relative_path_from を複数 Ractor 対応しています。パスの比較をする Proc オブジェクトを定数に格納して使いまわしていたのを private method としてい定義するように修正しています。

[806f2d3533] Nobuyoshi Nakada 2025-12-07 02:34:11 UTC

Pathname#freeze に rdoc 用のコメントを追加しています。

[a8a188e1fc] Nobuyoshi Nakada 2025-12-07 03:29:41 UTC

Pathname.new に不正な引数を渡した時のテストを追加しています。

[db6071b521] Nobuyoshi Nakada 2025-12-07 03:31:42 UTC

Pathname.new にパスの文字列に変換できないオブジェクトを渡した時に発生するエラーメッセージを互換性のために標準添付ライブラリの時のものに合わせるようにしているようです。 https://github.com/ruby/pathname/pull/75

[379d22ce84] Stan Lo 2025-12-07 16:35:04 UTC

gems/bundled_gems の rdoc のバージョンを 6.17.0 に更新しています。 https://github.com/ruby/ruby/pull/15439

[a4d1421373] git 2025-12-07 16:35:47 UTC

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

[4f900c35bc] Peter Zhu 2025-12-07 15:24:08 UTC

GCデバッグ用にオブジェクトの情報をダンプする時の T_OBJECT 型オブジェクトのインスタンス変数を管理する Object Shapes の shape のサイズを含めるようにしています。

[f2eece7199] Kazuki Yamaguchi 2025-12-07 05:58:28 UTC

internal/time.h で ruby_reset_timezone() という関数の定義に RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY() マクロを使って deprecated にマークしていたのが実際には preprocessor で有効になることがなかった? ので削除しています。

[be882278f2] Kazuki Yamaguchi 2025-12-07 05:51:38 UTC

RBIMPL_ATTR_DEPRECATED_SINCE()/RBIMPL_ATTR_DEPRECATED_INTERNAL()/RBIMPL_ATTR_DEPRECATED_INTERNAL_ONLY() といったマクロの定義を include/ruby/backward.h から include/ruby/internal/attr/deprecated.h というヘッダに移動しています。

[4655b174d5] Hiroshi SHIBATA 2025-12-08 03:05:54 UTC

標準添付ライブラリ timeout のバージョンを 0.5.0 に更新しています。

[fbc5bb9120] git 2025-12-08 03:07:35 UTC

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

[6a1f5b68cb] Nobuyoshi Nakada 2025-12-08 02:57:24 UTC

internal/time.h の ruby_reset_timezone() という関数の宣言を export しないようにしています。

[a82aa08fe0] Nobuyoshi Nakada 2025-12-08 03:04:11 UTC

time.c の ruby_reset_leap_second_info() という関数を static にして外から呼べないようにしています。元々拡張ライブラリを使ったテストのためだけに公開されていたようです。

[1de15815a8] yoshoku 2025-12-04 00:04:11 UTC

bundler の bundle gem で新規プロジェクト作成時の ruby スクリプトのテンプレートで拡張ライブラリを含む gem の場合の共有ライブラリをロードするための? require_relative を reuire に変更しています。 RHEL の環境だと拡張ライブラリのインストール先が別ディレクトリになるため require_relative ではうまくいかないことがあるとのこと。というか普通拡張ライブラリは別のディレクトリにインストールされるんじゃないのかな?

[ced333677f] Koichi Sasada 2025-12-08 08:47:07 UTC

rb_mutex_sleep() において GET_EC() で rb_execution_context_t を取得するのを関数の先頭に移動しています。 なぜかわかりませんが coroutine の関係で? sleep 後に取得すると clang-16,18 でビルドした時には不正な値になってることがあったみたいです。

[159430e8b6] Koichi Sasada 2025-12-08 08:59:57 UTC

bootstraptest の Ractor のテストのため Ractor を大量に作るテストでシステムの制限で Thread がその数まで作成できなかった時に例外を補足して成功扱いにしています。

[27d60e2984] Nobuyoshi Nakada 2025-12-08 08:59:21 UTC

拡張ライブラリ win32/resolv の例外メッセージのフォーマット指示子の型が不一致のための警告を抑制するため指示子の修正もしくはキャストの修正をしています。

[66b2cc3dab] Nobuyoshi Nakada 2025-12-08 09:29:06 UTC

拡張ライブラリ win32/resolv で Windows の registry の値を読み出す時に RegGetValueW() という API を 2回使って、2回目までのあいだに他のプロセスによって型が変更されるとバッファサイズなどが不正になる可能性があるので型が 1回目の結果を変化していないことをチェックするようにしています。




以上の内容はhttps://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20251208より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14