ruby-trunk-changes 2023-11-30

今日は irb の型ベースの補完処理の実装を専用の gem に分離する変更や GC 関連の不具合修正、拡張ライブラリ socket の新規例外クラスの導入などがありました。

[38e6442f8c] Peter Zhu 2023-11-29 13:59:53 UTC

Object Shapes のテストで assertion が抜けてたのを修正。

[57cb47bfe2] Peter Zhu 2023-11-29 15:30:00 UTC

Object Shapes の赤黒木の実装に RUBY_ASSERT() による assertion をさらに追加しています。

[b549722eef] Kevin Newton 2023-11-29 15:31:23 UTC

common.mk に prism の Encoding 関連の追加ソースファイルへの依存関係追加。

[86d9a6dcb6] tomoya ishida 2023-11-29 16:30:08 UTC

irb の prism と rbs を利用した型ベースの補完処理の実装を削除して repl_type_completor という gem に切り出したものを利用するようにしています。 https://github.com/ruby/irb/pull/772

[14761edbf6] Kevin Newton 2023-11-29 16:31:19 UTC

common.mk に prism の Encoding 関連の追加ソースファイルへの依存関係追加。

[6ebcf25de2] Peter Zhu 2023-11-29 15:05:19 UTC

AST から ISeq へのコンパイル時に例外などの大域脱出を捕捉する rescue や ensure などのコードのアドレス管理をするためのテーブルを GC の mark 漏れから保護するための RB_GC_GUARD() を追加しています。

[2927c28095] Samuel Giddins 2023-11-27 22:01:51 UTC

bundler の式の埋め込みのある正規表現リテラルでループ内で何度もコンパイルされるのを避けるため o オプションをつけています。

[aee275165b] Peter Zhu 2023-11-29 15:52:04 UTC

tool/runruby.rb で冗長な分岐条件を削除しています。

[128837e4a2] Peter Zhu 2023-11-29 15:54:27 UTC

tool/runruby.rb で環境変数 RUNRUBY_USE_RR の指定があったらデバッガ経由の実行時のデバッガとして rr コマンドを利用するようにしています。

[8d1138c1cf] Maxime Chevalier-Boisvert 2023-11-29 23:09:55 UTC

YJIT のドキュメント doc/yjit/yjit.md を更新しています。 https://github.com/ruby/ruby/pull/9068

[3d908a41ab] Peter Zhu 2023-11-28 18:50:05 UTC

String#gsub の実装でマッチした部分文字列が GC の mark 漏れから解放されてしまう可能性があったので RB_GC_GUARD() での保護を追加しています。

[f2bb539459] Hiroshi SHIBATA 2023-11-30 03:20:19 UTC

標準添付ライブラリ open3 に upstream から rdoc 用コメントの修正をマージしています。 https://github.com/ruby/open3/pull/22

[62e2e1da92] Samuel Giddins 2023-11-27 21:57:45 UTC

bundler の git コマンド実行時の GitError という例外の捕捉漏れを修正しています。

[705a3c69d7] Peter Zhu 2023-11-22 16:08:13 UTC

Enumerator や Enumerator::Lazy の実装で内部的に使う proc_entry というクラスのオブジェクトのタイプに RUBY_TYPED_FREE_IMMEDIATELY ビットフラグを追加して回収時に即座に free 関数を呼ぶようにしています。

[40e67cb20e] Peter Zhu 2023-11-22 16:11:08 UTC

Enumerator や Enumerator::Lazy の実装で内部的に使う proc_entry というクラスの実装に RGenGC 用の Write Barrier を追加して WB-protected にマークしています。

[db7f3064a8] Peter Zhu 2023-11-22 18:29:54 UTC

Enumerator や Enumerator::Lazy の実装で内部的に使う proc_entry というクラスを Variable Width Allocation による拡張 slot への埋め込みを利用するようにしています。

[e9050270d7] Misaki Shioi 2023-11-23 07:30:37 UTC

拡張ライブラリ socket に Socket::ResolutionError という例外クラスを追加しています。この例外オブジェクトは error_code メソッドを通じてエラー内容を取得できるようにしているようです。

[52f6de4196] Misaki Shioi 2023-11-23 07:49:41 UTC

拡張ライブラリ socket で SocketError 例外のかわりに e9050270d7d8b1bc6be2c1352772b906031adc6e で追加した Socket::ResolutionError を発生させるようにしています。発生時にエラー内容の整数(errno?)をセットするようにしています。 Socket::ResolutionError は SocketError を継承しているので SocketError を rescue しているこれまでのコードもそのままで動くと思います。

[5f62b1d00c] Misaki Shioi 2023-11-23 07:52:18 UTC

拡張ライブラリで 52f6de41961d511e82826d6266441d91a92dcd59 で発生する例外クラスを変更した rsock_raise_socket_error() という関数を rsock_raise_resolution_error() に改名しています。

[f982931719] Misaki Shioi 2023-11-23 09:54:37 UTC

rubyspec の socket のテストで例外クラスのチェックをしているところでクラスそのもののチェックでなく継承関係でのチェックに緩めることで 52f6de41961d511e82826d6266441d91a92dcd59 での発生例外クラスの変更でエラーにならないようにしています。

[5baa2b9650] Misaki Shioi 2023-11-29 12:08:37 UTC

gems/bundled_gems の net-ftp のテストに使う commit hash の指定を削除しています。

[ac9fdb7a50] Nobuyoshi Nakada 2023-11-30 04:32:53 UTC

ext/socket/init.c のインデントの修正のみ。

[e6d4441618] Nobuyoshi Nakada 2023-11-30 04:36:11 UTC

52f6de41961d511e82826d6266441d91a92dcd59 で追加した拡張ライブラリ socket のテストで引数の順序が逆だったのを修正しています。

[f2ad246071] git 2023-11-30 04:38:07 UTC

gems/bundled_gems と NEWS の bundled gems のバージョンリストにおいて net-imap のバージョンを 0.4.7 に更新しています。

[f2f9139657] Hiroshi SHIBATA 2023-11-30 06:38:49 UTC

NEWS の環境変数 RUBY_GC_HEAP_INIT_SLOTS の廃止と RUBY_GC_HEAP_%d_INIT_SLOTS の追加についての記述を Compatibility issues のセクションに移動しています。 [Feature #19785]

[0daa0589a9] flosacca 2023-11-27 20:22:31 UTC

標準添付ライブラリ cgi にテストを追加しています。次の 30e477802094e1c47fb5946b79aeeebb3b3ebec5 の修正に対応するテストのようです。

[30e4778020] flosacca 2023-11-22 17:49:42 UTC

ということで標準添付ライブラリ cgiCGI.unescapeHTML で &sp; みたいな実体参照? のスキャンでマッチしない時のカーソルの扱いの不具合修正。チケットとかないので修正前がどうなってたのかわかりませんがたぶん文字が抜けてしまったりしていたのではないかと。

[5259edaff9] Jean Boussier 2023-11-30 06:53:06 UTC

NEWS に ObjectSpace::WeakMap#delete メソッドの新規追加と環境変数 RUBY_CRASH_REPORT による異常終了時の crash report の出力先指定の機能について追記しています。 [Feature #19561] [Feature #19790]

[f7d268898e] Kazuhiro NISHIYAMA 2023-11-30 08:39:35 UTC

NEWS のチケットのリンクのための footnote をチケット番号順にソートしなおしています。

[e1b65e5f91] Yusuke Endoh 2023-11-30 09:35:35 UTC

NEWS に Kernel#open や URI.open, IO.read などで先頭に "|" を書くことでコマンド実行する機能を deprecated にしたことについて追記しています。 [ruby-core:113407] [Feature #19630]

[722cb9a56d] Hiroshi SHIBATA 2023-11-30 11:17:27 UTC

拡張ライブラリ socket の 52f6de41961d511e82826d6266441d91a92dcd59 で追加したテストが FreeBSD で通らないとのことで RUBY_PLATFORM をみて skip するようにしています。

[18f218d6a1] OKURA Masafumi 2023-11-26 09:06:45 UTC

Data.define で生成したクラスのインスタンスの hash メソッドの挙動についてのテストを追加しています。

[30f7b7a053] Nobuyoshi Nakada 2023-11-26 07:04:27 UTC

TypedData 型オブジェクトで構造体の mark すべきメンバーを列挙するためのマクロ REFS_LIST_PTR() や REF_EDGE() に RUBY_ の prefix を追加して RUBY_REFS_LIST_PTR()、RUBY_REF_EDGE() にそれぞれ改名しています。

[0cdad3b92a] Nobuyoshi Nakada 2023-11-26 10:09:16 UTC

TypedData の mark 処理の実装のためのマクロ RUBY_REFERENCES_START/RUBY_REFERENCES_END を RUBY_REFERENCES() という単一のマクロで初期化子の代入のように書けるように変更しています。

[1802d14ca8] Nobuyoshi Nakada 2023-11-30 10:04:29 UTC

正規表現でローカル変数への capture があるものをかっこの中に置いていた場合にその Regexp のマッチ時にローカル変数への代入を発生させないようにしているみたいです。 e8896a31d48e5797df3878696dcb50aed85b87c2 の追加修正? https://github.com/ruby/ruby/pull/9077 [ruby-core:114722] [Bug #19877]
変更自体とは関係ないんですがテストで使っている all_assertions_foreach のブロックのブロックパラメーターの2つめに pass というのを受け取ってますがこれって渡されるのかな? all_assertions_foreach の第2引数以降は文字列だけなのでブロックパラメーターは 1つしか受け取れないので pass は常に nil になるような。