ruby-trunk-changes 2022-01-05

今日は主に Refinements 用の新規メソッド Module.used_refinements や Module#refinements、Refinement#refined_class の追加や標準添付ライブラリ error_highlight の不具合修正などがありました。

[e22218b510] Christian Boos 2021-12-29 22:03:41 UTC

標準添付ライブラリ error_highlight に発生させた NoMethodError の backtrace_locations を空に上書きしてしまうと TypeError になる不具合に関するテストを先に追加しています。

[11b1ebe606] Christian Boos 2021-12-29 22:10:21 UTC

標準添付ライブラリ error_highlight の e22218b510ec6befb385a6dda92d4a178607ebc7 で追加したテストに対応した修正。例外の位置情報が取れない時に RubyVM::AbstractSyntaxTree.of が使えないのであきらめてメッセージのみ表示するようにしています。

[e9a4cc02b4] Yusuke Endoh 2022-01-04 14:18:34 UTC

標準添付ライブラリ error_highlight のテストに eval にダミーのファイル名を渡した時のテストも追加しています。これもおそらく 11b1ebe606a82bcdcb4ff5568f0302c5470d0048 でついでに直ったってことかな?

[615e9b2865] Peter Zhu 2022-01-04 13:59:32 UTC

GC.stat_heap というメソッドを新規追加して ObjectSpace のヒープの統計情報をヒープの種類(eden, tomb) ごとに返すようにしています。省略可能な引数でどのヒープを返すかの指定もできるみたいで、その時には対象の種類のヒープの情報だけ返すようです。しかし引数名が heap_name なのに指定するのは 0 か 1 という整数なのはちょっとわかりにくいなぁ。 [ruby-core:106279] [Feature #18364]

[ad007bc6ea] Matt Valentine-House 2021-11-15 21:28:20 UTC

GC であるポインタっぽい値がオブジェクトを指す VALUE の値なのかどうかを保守的に判定するための is_pointer_to_heap() で二分探索していたところを heap_page_for_ptr() という関数に切り出して bsearch(3) を利用するように書きかえています。

[e7806049c0] git 2022-01-04 15:28:02 UTC

version.h の日付更新

[9e0a91d064] Jeremy Evans 2022-01-04 17:13:19 UTC

警告メッセージ出力をカスタマイズできるようにするための Warning.warn メソッドが undef されていると SEGV する可能性があった不具合を修正しています。 [ruby-core:106962] [Bug #18458]

[44379805b0] Peter Zhu 2022-01-04 18:54:21 UTC

プロセス起動時の $LOADED_FEATURES の初期化処理中に rb_ary_modify() を呼ぶようにしています。 RGenGC のための世代管理のために必要で、RGENGC_CHECK_MODE を 2に設定しておくとアサーションにひっかかる場合があったようです。

[5917f49ad0] Jeremy Evans 2022-01-04 20:38:50 UTC

Dir.glob の rdoc 用コメントのサンプルで File::FNM_DOTMATCH を指定した時に ".." もマッチするように書かれてましたがもうマッチしなくなってるので削っています。結構前の変更じゃないかと思いましたが 3.1 からの変更なんですねこれ。 [ruby-core:106830] [Bug #18436]

[d1a91076dc] David Rodríguez 2021-12-26 21:08:11 UTC

rubygemsJRuby での CI の失敗の対応のために不要と思われる Gem::Specification#ignored のコピーを削除しています。詳細はよくわからず。

[13241b71a5] Kazuhiro NISHIYAMA 2022-01-04 23:18:47 UTC

rubyspec の無名の rest 引数の Proc#parameters についてのテストのバージョンによる分岐を 3.2 以降とその前とで分けるように修正しています。

[d5836db1b3] Kazuhiro NISHIYAMA 2022-01-05 00:04:15 UTC

拡張ライブラリ io/console の IO.console のテストで fd leak 修正のため作成した IO を close するようにしています。

[6326112e16] Burdette Lamar 2022-01-05 00:39:07 UTC

Enumerable モジュールの rdoc 用コメントの Enumerable を include しているクラス一覧のところに例を追加しています。 https://github.com/ruby/ruby/pull/5393

[5757696e07] Kazuhiro NISHIYAMA 2022-01-05 07:18:33 UTC

標準添付ライブラリ net/http の Net::HTTP の rdoc 用コメントのサンプルコードで Net::HTTPResponse#body にアクセスしているところで response_body_permitted? をチェックする if を書いてたのを削っています。

[21ee5341f8] Shugo Maeda 2022-01-05 07:58:23 UTC

Module.used_refinements というメソッドを追加して現在 Refinements で上書きされているクラスごとの Refinement モジュールを配列で返すようにしています。 Module.used_modules が using で指定されている Module 自体を返すのに対して上書き対象の Class ごとの Refinement モジュールを返しています。一時は Module.used_modules が Module.used_refinements という名前だったようです。その状態でリリースされたことはなさそうなので used_refinements を使ってる人はいないと思いますが。 [ruby-core:84694] [Feature #14332]

[54198c7b97] Shugo Maeda 2022-01-05 08:47:29 UTC

今度は Module#refinements と Refinement#refined_class というメソッドを新規追加しています。 Module#refinements は Refinements 用に定義した Module(using に渡すもの)がどんな Refinements 用モジュールを定義しているかの配列を返し(21ee5341f8fc4ca513295dff2148f7c203c908a7 で追加した Module.used_refinements のモジュール毎のバージョン)、Refinement#refined_class は Module#refinements や Module.used_refinements で返される Refinements 用のモジュールがどのクラスを上書きしているかをそれぞれ返すことができるようにしています。 [ruby-core:77215] [Feature #12737]

[e38d583391] Nobuyoshi Nakada 2022-01-05 09:27:16 UTC

NEWS の削除した定数やメソッドについての記述にチケット参照を追加しています。

[8bba6d3d54] Hiroshi SHIBATA 2022-01-05 09:02:02 UTC

bundler の bundle gem で作成するプロジェクトの gemspec ファイルのテンプレートで spec.files を git ls-files で作る時の除外用パターンに bind ディレクトリを追加しています。