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


ruby-trunk-changes 2025-05-09

今日は標準添付ライブラリ cgi から cgi/escape 部分を残して削除する変更や、Object Shapes の実装で rb_shape_t 構造体を直接触らないように API を整理する変更などがありました。

[5e53484994] Max Bernstein 2025-05-08 12:22:44 UTC

ZJIT の 5411b504a5e75d553a423b4e5dbe63b9c45e906f の変更の一部を revert しています。元の変更もよくわからない内容だったのでよくわからないですが、コミットログみると理由はわからないが yjit-bench の実行しようとするとエラーになるとのことで、よくわからないということがわかった。

[46a8240884] Burdette Lamar 2025-05-08 14:31:47 UTC

String#-@ の rdoc 用コメントの手直し。

[3f5080e767] Peter Zhu 2025-05-07 19:13:57 UTC

GC の default 実装で RB_DEBUG_COUNTER_INC() などのマクロを呼び出してるところを #if USE_DEBUG_COUNTER の preprocessor 分岐でくくっていたのをやめています。チェックしなくてもマクロの展開結果が空になるので不要だったとのこと。

[c18bedcdbb] Peter Zhu 2025-05-07 19:14:04 UTC

GC の default 実装の gc/default/default.c でマクロ BUILDING_MODULAR_GC が定義されている時に debug_counter.h を #include しないようにしています。拡張ライブラリとしてビルドする時に依存してはいけないヘッダだから?

[c750856367] Takashi Kokubun 2025-05-08 17:46:08 UTC

variable.c の switch 文の警告除去のため default 節を追加しています。

[d7ad53f249] John Hawthorn 2025-05-07 02:08:02 UTC

プロセスの fork 時に VM 全体のロック取得をするようにしています。複数 Ractor 利用時に競合が起きると子プロセスでデッドロックが発生する可能性があったそうです。

[f7ff380998] Aaron Patterson 2025-03-25 22:26:55 UTC

fork 時に子 Ractor が存在していた場合の後始末が不十分だったので、Ractor 毎の新規オブジェクトの cache の削除と状態の変更を行うようにしています。

[e3452cfad2] Aaron Patterson 2025-03-25 22:55:33 UTC

同じくプロセスの fork 後に子プロセスで親プロセスから存在していた Ractor の後始末をさらに強化して、オブジェクトの送受信を行おうとした時に例外を発生させるように修正しています。

[b67711b17a] Jean Boussier 2025-05-08 18:24:17 UTC

0ea210d1ea257162642969edce665935cc87c643 の変更で Object Shapes によるインスタンス変数削除で TOO_COMPLEX な shape の時の判定に不具合が生じていたので rb_shape_too_complex_p() を一貫して使うように修正しています。

[7a660d7c69] BurdetteLamar 2025-05-08 18:18:47 UTC

String の rdoc 用コメントのメソッド一覧のセクション名を変更しています。

[c667683768] Hiroshi SHIBATA 2025-05-09 04:51:44 UTC

tool/update-deps にコメントで使いかたについての詳しい注意事項を追記しています。

[8a1d45144b] Hiroshi SHIBATA 2025-05-08 10:08:11 UTC

標準添付ライブラリ cgi の拡張ライブラリとして切り出されている cgi/escape を使う処理を CGI::Escape という独立したモジュールに切り出して lib/cgi/escape.rb というファイルに分離しています。 cgi/escape だけ require して使うことができるように。

[382be44f42] Hiroshi SHIBATA 2025-05-08 10:14:21 UTC

標準添付ライブラリ cgi のテストでも cgi/escape のテストを独立したファイルに分離しています。

[56423d43a3] Hiroshi SHIBATA 2025-05-08 10:16:01 UTC

標準添付ライブラリ cgiCGI::Escape および CGI::Util のテストでそれぞれ必要な cgi/escape と cgi/util のみ require するようにしています。

[a61f51f66d] Hiroshi SHIBATA 2025-05-08 10:21:27 UTC

rubygems/bundler や erb、net/http などの標準添付ライブラリで require "cgi/escape" を使うように追随しています。ただ cgi が古いと LoadError になるので require "cgi" や require "cgi/util" に fallback するようにしています。

[600c616507] Hiroshi SHIBATA 2025-05-08 10:21:47 UTC

標準添付ライブラリ cgi を削除しています。ただし cgi/escape として切り出された部分だけは残っています。

[ce6c1778fb] Hiroshi SHIBATA 2025-05-08 10:41:20 UTC

rubyspec の cgi についてのテストを 3.4 以前でのみ実行するように ruby_version_is を追加しています。

[5aade8a84a] Hiroshi SHIBATA 2025-05-08 11:01:09 UTC

互換性、というか従来の require が LoadError にならないようにするために lib/cgi.rb と lib/cgi/util.rb を再度追加して、警告を出力しつつ cgi/escape のみ require するようにしています。

[5e1c90675e] Hiroshi SHIBATA 2025-05-08 11:26:33 UTC

bundler のテストのための依存 gem に cgi を追加しています。

[ab19b1f629] Hiroshi SHIBATA 2025-05-09 02:48:28 UTC

5e1c90675e3d9bec0e3e98223a0a75e0848b7d72 の続きで bundler のテストのために依存する cgi のバージョンを 0.5.0.beta1 以降に指定しています。

[d3c472781d] Hiroshi SHIBATA 2025-05-09 03:17:15 UTC

bundler に vendoring している net-http-persistent から require "cgi" していたのを require "cgi/util" と部分的な require をするようにしています。またクエリパラメーターの解析に CGI.parse を使っていたのを Gem::URI.decode_www_form に更新しています。

[dcd0a35c6d] git 2025-05-09 05:28:22 UTC

NEWS の default gems のバージョンリストから cgi を削除しています。

[4ef324c7c1] Hiroshi SHIBATA 2025-05-09 06:37:01 UTC

NEWS に cgi の標準添付ライブラリからの削除について追記しています。

[4de049a3f9] Jean Boussier 2025-04-23 09:42:26 UTC

ObjectSpace._id2ref の rdoc 用コメントに deprecated であることを追記して利用時に deprecated カテゴリの警告を出力するようにしています。 [ruby-core:90464] [Feature #15408]

[30ef0f180b] John Hawthorn 2025-05-09 05:35:59 UTC

GC の default 実装で複数 Ractor 利用時に fork した時のオブジェクト数のカウンタがキャッシュのクリア時に考慮されてなくて値がずれてしまってたのでクリア時にその時点の数を反映させるようにしています。一昨日の cb772247e72ce3d3c7718018539508b0204c1f2c の変更とさきほどの f7ff380998888f5bdcd6fccda472fdd3e5f40470 との合わせ技での不具合ですね。

[7116b0a7f1] Jean Boussier 2025-05-08 15:38:39 UTC

rb_vm_t の解放処理から Object Shapes の解放処理を rb_shape_free_all() という関数に切り出しています。

[f8b3fc520f] Jean Boussier 2025-05-08 15:56:30 UTC

Object Shapes の実装で rb_shape_traverse_from_new_root() の戻り値や引数の型を rb_shape_t から shape_id_t に変更して内部的な型を表出させないようにしています。

[e4f97ce387] Jean Boussier 2025-05-08 16:20:35 UTC

Object Shapes の実装で同様に rb_shape_depth() や rb_shape_edges_count() でも rb_shape_t を直接受け取らず shape_id_t を受け取って内部で rb_shape_t を lookup するようにしています。

[62eb2007f6] Jean Boussier 2025-05-08 16:27:45 UTC

shape.h から存在しなくなってた rb_obj_debug_shape() という関数の宣言を削除しています。

[df7d25bb3e] Jean Boussier 2025-05-08 16:29:26 UTC

shape.h から rb_shape_get_root_shape() の宣言を削除して rb_shape_t の root を外部から直接取得しないようにしています。

[9966de11fb] Jean Boussier 2025-05-08 16:36:01 UTC

同様に Object Shapes の実装で rb_shape_t を直接触らせないように rb_shape_get_next_iv_shape() の引数と戻り値の型も shape_id_t に変更しています。

[334ebba221] Jean Boussier 2025-05-08 16:47:18 UTC

Object Shapes の rb_shape_get_shape_by_id() の関数名を RSHAPE() に改名しています。

[31d0a5815c] Jean Boussier 2025-05-08 16:53:12 UTC

shape.h で SHAPE_MASK というビットマスクの定数マクロ定義を削除して参照しているところに直接展開もしくは不要な参照を消したりしています。

[f82523f14b] Jean Boussier 2025-05-08 17:05:03 UTC

Object Shapes の実装の変更続きで rb_shape_transition_frozen() の戻り値も rb_shape_t から rb_shape_id に変更しています。

[677d075c29] Jean Boussier 2025-05-08 18:16:00 UTC

Object Shapes の実装の変更続きで rb_shape_transition_too_complex() の戻り値も rb_shape_t から rb_shape_id に変更しています。

[3f7c0af051] Jean Boussier 2025-05-08 18:17:09 UTC

Object Shapes の rb_shape_obj_too_complex() という関数を rb_shape_obj_too_complex_p() に改名しています。

[e0200cfba0] Jean Boussier 2025-05-08 18:30:30 UTC

Object Shapes の実装の変更続きで rb_shape_transition_shape_remove_ivar() の引数に rb_shape_t を受け取ってたのを削って obj から取得するようにしています。また関数名も rb_shape_transition_remove_ivar() に変更しています。

[c9b08882b7] Jean Boussier 2025-05-08 18:47:51 UTC

Object Shapes の実装の変更続きで rb_shape_get_next() および rb_shape_get_next_no_warnings() の戻り値と引数も rb_shape_t から rb_shape_id に変更しています。また関数名も rb_shape_transition_add_ivar() などに変更しています。

[a007575497] Jean Boussier 2025-05-08 18:50:02 UTC

Object Shapes の rb_shape_object_id_index() という関数を削除しています。

[5782561fc1] Jean Boussier 2025-05-08 19:01:00 UTC

Object Shapes の rb_shape_get_shape() を RB_OBJ_SHAPE() に、rb_shape_get_shape_id() を RB_OBJ_SHAPE_ID() に改名しています。

[a970d35de2] Jean Boussier 2025-05-08 19:08:40 UTC

rb_shape_get_parent() という関数はただの RSHAPE() の wrapper になってたので削除して直接 RSHAPE() を呼ぶように展開しています。

[becc45ff4e] Jean Boussier 2025-05-08 19:15:36 UTC

gc.c で rb_shape_t を直接触っていたところを ROBJECT_FIELDS_COUNT() を利用するようにしています。

[0b81359b3f] Jean Boussier 2025-05-08 20:00:29 UTC

rb_shape_frozen_shape_p という関数を static にして shape.c の外部から呼ばれないようにしています。

[ea77250847] Jean Boussier 2025-05-09 06:58:07 UTC

再度 Object Shapes の関数名を RB_OBJ_SHAPE() を rb_obj_shape() に、RB_OBJ_SHAPE_ID() を rb_obj_shape_id() に、RSHAPE() を rb_shape_lookup() に改名しています。

[15e3675ecc] Jean Boussier 2025-05-09 08:24:46 UTC

30ef0f180b396314521d1309e7732ce921cd2fab の変更に追随して rb_gc_impl_ractor_cache_free() という関数内で無意味になってたコードを削除しています。




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

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