今日は主に標準添付ライブラリ tempfile の finalizer での挙動の修正や require で default gems や bundled gems についての警告を出す機能の修正などがありました。
[41b427a264] Peter Zhu 2024-08-15 16:17:12 UTC
標準添付ライブラリ tempfile でプロセス終了時にファイル削除を保証するために close と rm のための finalizer をそれぞれ登録するのに、定義する対象のオブジェクトを別のものにしていたので GC で回収される順序によって close と rm の順序が変化する可能性があったので、どちらも @finalizer_obj という Tempfile 自身とは別のオブジェクトに対して定義するようにしています。別オブジェクトを経由してるのはなぜだろう。
[a68331e703] Peter Zhu 2024-08-20 17:28:11 UTC
41b427a2648ed2e049952450c698be917e0bb125 の続きで標準添付ライブラリ tempfile で一時ファイルを finalizer で close と削除を行うために作ってた @finalizer_obj はやめて、Tempfile オブジェクトを dup した時に File オブジェクトも複製されるのでそれらも close されるようにするため FinalizerManager という内部的クラスを導入しています。
[2f67610f6b] Peter Zhu 2024-08-20 18:29:40 UTC
mspec とテストのリソースの leak を検出する tool/lib/leakchecker.rb で a68331e7036d7ab433778bf65eb854aabd5009c4 で削除した tempfile の内部的クラス Tempfile::Remover の挙動を変更するための依存があったので Tempfile そのものを参照するように修正しています。
[bd7eda6038] Peter Zhu 2024-08-20 18:35:57 UTC
標準添付ライブラリ tempfile のテストで子プロセス起動時の ruby へのオプションの指定のための assert_in_out_err の引数を配列から文字列にしています。うーん、なんかコミットログと変更内容が一致してないような。と思ったけど一部 -rtempfile とフルパスなしで指定しているためテスト対象の tempfile が使われてなかったものがあったのを修正しているようです。
[1d68a735a2] Peter Zhu 2024-08-20 18:37:28 UTC
標準添付ライブラリ tempfile で Tempfile::FinalizerManager でファイルを明示的に削除した時の finalizer での削除を抑制するようにしています。同名のファイルが後から作成された時に誤ってそれを消してしまうからかな。
[014708ad5a] Michael Chui 2024-08-20 22:24:29 UTC
標準添付ライブラリ logger で Logger を継承したクラスを作成して Logger#initialize を呼ばないことがあるとインスタンス変数 @level_override が未初期化のままでエラーになることがあるらしく(それは継承してるクラスの責任のような気もするけど) level_override メソッドを追加してインスタンス変数が未初期化の時のための guard を追加しています。
[592b90328a] Hiroshi SHIBATA 2024-08-21 04:30:01 UTC
標準添付ライブラリ rdoc の rd の parser を racc 1.8.1 で再生成しています。とはいえコメントと Racc::VERSION の更新だけみたいです。
[ea828c0bf0] Soutaro Matsumoto 2024-08-21 04:05:47 UTC
bundled gems の rbs のテストで標準添付ライブラリ tempfile の変更で失敗するようになったテストを skip するようにしています。
[b41d79962a] Hiroshi SHIBATA 2024-08-21 03:06:37 UTC
標準添付ライブラリ uri の URI::RFC3986_PARSER の make_regexp/escape/unescape などのメソッドで obsoleted 警告を出力するのを再度適用しています。
[5fedf1c3ac] Hiroshi SHIBATA 2024-08-21 05:24:17 UTC
lib/bundled_gems.rb で require で bundled gems/default gems の警告出力のために require している元を得るために uplevel を計算するメソッドで require メソッドがバックトレースにみつからなかった時? の対応を追加してるようです。
[c97dc7739e] Hiroshi SHIBATA 2024-08-21 05:25:32 UTC
require で bundled gems/default gems の警告を出力するための lib/bundled_gems.rb で uplevel の計算結果がおかしかったら Kernel.warn の uplevel キーワード引数を渡さないようにしています。
[71c14c8889] Hiroshi SHIBATA 2024-08-21 05:30:08 UTC
5fedf1c3ac4d92f0877759b16aec932541e85075 と同様に lib/bundled_gems.rb の警告の出力時の uplevel の計算のためのメソッドで bundle コマンドを検出したら 0 を返して Kernel.warn の uplevel を渡さないようにしています。
[6ab591f80a] Nobuyoshi Nakada 2024-08-21 04:21:09 UTC
configure で BASERUBY の設定時に erb, fileutils, tempfile などの標準添付ライブラリが使えることを確認するようにしています。 Debian などのシステムに入ってる ruby で標準添付ライブラリがパッケージとして分けられてて使えない場合というのがあるみたいで、そういう時にその ruby を BASERUBY にするとビルドに失敗するので。 [ruby-core:118906] [Bug #20687]