ruby-trunk-changes 2023-03-28

今日は主に標準添付ライブラリ uri の不具合修正とバージョンアップ、標準添付ライブラリ reline の修正、bundler の依存関係解決の修正などがありました。
また標準添付ライブラリで default gems の uri脆弱性修正を含む新バージョンのリリースがありました。
CVE-2023-28755: ReDoS vulnerability in URI

[a2ff9423a1] Peter Zhu 2023-03-27 13:40:24 UTC

Variable Width Allocation で slot サイズをいくつまで作るかという定数 SIZE_POOL_COUNT をコンパイル時にオプションなどで指定したらそれを利用するようにしています。

[8f569d41cb] tomoya ishida 2023-03-27 13:54:05 UTC

標準添付ライブラリ reline でカーソル移動時に複数行? か折り返しにより複数行に表示される時に表示すべき行の計算が間違っていたのを修正しているようです。 https://github.com/ruby/reline/pull/515

[ec14b381c1] ima1zumi 2023-03-27 15:14:51 UTC

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

[466322ec6e] git 2023-03-27 15:16:18 UTC

ec14b381c13bf672249999213b22c69888a1763d に対応して NEWS の default gems のバージョンリストに reline のエントリを追加しています。意外なことに 3.3 になってから始めてのバージョン更新だったんですね。

[b31bd8b853] Michael Siegfried 2023-03-24 04:46:45 UTC

bundler の Bundler::GemVersionPromoter クラスのテストのリファクタリング+α? ヘルパーメソッドなどの切り出しの他にテストの追加もあるみたいです。

[67f37b010a] Michael Siegfried 2023-03-24 04:55:30 UTC

bundler の Bundler::GemVersionPromoter#sort_dep_specs というメソッドで gem の pre つきのバージョン? を使うかどうかの判定を変更しているようです。

[708c4903e1] Nobuyoshi Nakada 2023-03-28 00:29:47 UTC

tool/rbs_skip_tests に bundled gems の rbs のテストの Pathname#taint, #untaint についてのテストが 9b7a7e9cef2daa3aec4aeb55205aab9da2db4eb6 でメソッド削除されたのでスキップするように指定を追加しています。

[9c687c65ee] Nobuyoshi Nakada 2022-01-09 16:12:57 UTC

標準添付ライブラリ uri のテストに assert_linear_performance メソッドを使って URL の文字列の長さに応じて線形な計算量で URI() がパースできることを確認するテストを追加しています。

[23f4904f4e] Nobuyoshi Nakada 2022-01-09 16:12:57 UTC

標準添付ライブラリ uriURI パースに使うための正規表現を修正してバックトラックを抑制するようにしています。

[120d8d0ae2] Hiroshi SHIBATA 2023-03-24 07:44:55 UTC

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

[c2ea229889] git 2023-03-28 02:12:58 UTC

120d8d0ae2d6db4756f6d10ebff5626814cd3d25 に対応して NEWS の default gems バージョンリストに uri のエントリを追加しています。

[82f46ddb81] "dependabot[bot]" 2023-03-28 03:00:36 UTC

GitHub Actions の workflow で利用している github/codeql-action アクションのバージョンを更新しています。

[7600e6bc19] Takashi Kokubun 2023-03-28 04:55:07 UTC

RJIT の VM 命令 definedivar の実装を YJIT と同様に Object Shapes の rb_shape_t の情報が利用可能なら使うようにしているようです。

[298cb57c11] Masataka Pocke Kuwabara 2023-03-28 05:01:07 UTC

gems/bundled_gems の rbs のテストに使う commit hash の指定を更新しています。Pathname のメソッド削除の対応を入れたみたいです。 https://github.com/ruby/ruby/pull/7596

[eaddd386ec] David Rodríguez 2023-03-23 19:29:24 UTC

bundler の依存関係解決の処理 Bundler::Definition#additional_base_requirements_for_resolve の変更。内容はよくわかりませんが。

[ed868f9a71] David Rodríguez 2023-03-23 19:33:44 UTC

同じく bundler の依存関係解決の処理で Gemfile.lock に指定されている gem のバージョンを別の gem の依存関係の指定によりバージョンを下げないといけない時に下げることができてなかったのを修正しているみたいです。

[674c960513] David Rodríguez 2023-03-16 16:45:54 UTC

bundler が Gemfile.lock の platform の指定から ruby を消してしまうことがある不具合を修正しているとのこと。コミットログにもこれで別の spec がこけるみたいなことが書かれてて、どうするのが正解なのか迷いがあるっぽい感じですが……。

[4d4743f7e3] David Rodríguez 2023-03-24 15:25:30 UTC

bundler の Bundler::Plugin::Installer というクラスで install する時に一時的に deployment や frozen といったオプションをオフにして挙動させるようにしています。

[9cfd8330ca] Josef Šimánek 2023-03-24 20:00:40 UTC

bundler のインスタンス変数名の変更と ||= での代入を使っているところで問題ない(既にインスタンス変数が必ず定義されているはず)ところに rubocop の警告を抑制するためのアノテーションをコメントで追加しています。

[cd4b4ac737] Hiroshi SHIBATA 2023-03-27 03:06:12 UTC

rubygems で文字列リテラル内に埋め込んでいるクオートもシンクルグオートではくダブルクオートを使うように変更しています。

[2322b189b6] "dependabot[bot]" 2023-03-27 16:01:18 UTC

rubygems の Rust 製拡張ライブラリのテストのためのプロジェクトの rb-sys パッケージのバージョンを更新しています。

[1cbb501127] Josef Šimánek 2023-03-24 19:41:46 UTC

rubygemsインスタンス変数名の変更と ||= で代入しているところの rubycop の警告を抑制するためのアノテーションコメントの追加。

[80be2e6c9a] Hiroshi SHIBATA 2023-03-28 02:02:18 UTC

bundler 内に vendoring されている uri.gem のソースコードも 0.12.1 のものに更新しています。

[d766d5346b] Hiroshi SHIBATA 2023-03-28 04:09:03 UTC

bundler の bundle gem で生成するプロジェクトの rubocop の設定にデフォルトで extconf.rb でグローバル変数のチェックを除外するような指定があったのを削除しています。

[9891797a27] "NARUSE, Yui" 2023-03-28 05:25:31 UTC

tool/merger.rb で安定版ブランチへのマージ時に git apply のオプション --3way をつけるようにしています。

[040fab3782] Nobuyoshi Nakada 2023-03-28 02:20:29 UTC

拡張ライブラリ ripper のテストで独自に定義されている assert_parse_files という assertion メソッドに exclude、gc_stress、test_ratio といったキーワード引数を追加しています。exclude は除外するファイルを明示的に指定するもので gc_stress はその名のとおりテスト時に GC.stress= に指定する値を指定するもの、test_ratio はこのテストでは指定したディレクトリ配下の拡張子 .rb のファイルをランダムに選んで parse してみるというものでソースディレクトリの lib/ とかを指定してたのですが、数が多すぎるのでもともと環境変数 TEST_RIPPER_RATIO で指定可能な割合で間引いて実行していたのですが、それをキーワード引数で指定していたものです。ちなみに安定版メンテナンスの時は TEST_RIPPER_RATIO=1 を指定して全ファイルを parse するようにしてテストしたりしています。

[a136ca0d04] "dependabot[bot]" 2023-03-27 03:01:20 UTC

GitHub Actions の workflow で利用する actions/checkout アクションのバージョンを更新しています。

[f6adc5be94] Nobuyoshi Nakada 2023-03-27 15:41:08 UTC

テストで各種リソースがテストメソッドで leak していないかチェックする tool/lib/leakchecker.rb で環境変数の変更の復旧漏れをチェックする時に除外するため Bundler::EnvironmentPreserver::BUNDLER_PREFIX を参照しているところで Bundler が未定義の場合を考慮して defined? でのチェックを追加しています。

[98b409cb9c] Nobuyoshi Nakada 2023-03-27 15:51:13 UTC

tool/sync_default_gems.rb で git filter-branch コマンドを実行するために環境変数 FILTER_BRANCH_SQUELCH_WARNING をセットするのにスクリプトで親プロセスである ruby 自体の環境変数にセットして起動していたのを IO.popen の第1引数で指定して子プロセスだけにセットするようにしています。

[6b05f125bb] Nobuyoshi Nakada 2023-03-27 06:41:56 UTC

tool/sync_default_gems.rb で default gems の upstream のコミットを指定して同期する処理で test/lib/ や tool/ のファイルが upstream にもある場合に誤って ruby リポジトリのファイルが変更されてしまうのを防ぐためにチェックして、それらのファイルのみの変更の場合はそのコミットは skip して、そうでなかったらエラーとして reject するようにしています。