ruby-trunk-changes 2022-11-01

今日は主に Object Shapes によるインスタンス変数管理の潜在的な不具合修正などがありました。

[5e6633fcf9] Maxime Chevalier-Boisvert 2022-10-31 18:29:11 UTC

YJIT のデフォルトで JIT コンパイル結果のために確保するメモリ領域のサイズを 256M から 128M に縮小しています。 https://github.com/ruby/ruby/pull/6649

[2b39640b0b] Takashi Kokubun 2022-10-31 18:29:45 UTC

YJIT のコード領域の GC を明示的にトリガーするための RubyVM::YJIT.code_gc というメソッドを追加してテストなどでこれを利用するようにています。 https://github.com/ruby/ruby/pull/6644

[02f1554224] John Hawthorn 2022-10-31 21:05:37 UTC

T_CLASS と T_MODULE 型のオブジェクトでのインスタンス変数管理に Object Shapes を利用するようにしています。T_CLASS/T_MODULE は名前の管理などに内部的なインスタンス変数を利用していますがこれらの管理も移行しているようです。このへん複雑なのでなにか壊れないか心配だなぁ。 https://github.com/ruby/ruby/pull/6637

[2d86e79fe6] Aaron Patterson 2022-10-31 22:38:51 UTC

Object Shapes によるインスタンス変数管理でインスタンス変数のテーブルのエントリについてループを回す時にバッファを最初に取得してそれをローカル変数とかに保持しままループを回すとその処理中に GC が走ってそのバッファが作り直されてアドレス変化することがあるので、ループ毎に ROBJECT_IVPTR() や RCLASS_IVPTR() でバッファを取得しなおして参照するようにしています。配列のイテレーションで RARRAY_PTR() を最初に取り出してループしてはだめで毎回 RARRAY_AREF() で参照しないとだめ、みたいなのと類似の不具合修正ですね。 [ruby-core:110555] [Bug #19095]

[4c59808a46] "dependabot[bot]" 2022-10-31 15:27:13 UTC

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

[2d3ecc4d28] Nobuyoshi Nakada 2022-11-01 00:35:09 UTC

variable.c のインデント修正のみ。

[aa8c6759ee] Nobuyoshi Nakada 2022-11-01 02:23:31 UTC

00d5b7ce7c2e72170b7f563b9de0e7ac4bc8f772 で tool/lib/vcs.rb の git config の safe.directory の設定を取得して定数に設定する処理の ensure 節でデバッグ出力のために代入前の定数を参照してしまっていたのを修正しています。

[16953867ed] Samuel Williams 2022-11-01 04:10:31 UTC

non-blocking Fiber のテストで Socket.getnameinfo で名前解決する時のフラグに Socket::NI_NUMERICHOST を追加して IP アドレスを返す(というか許容する?)ようにしています。このテストでは実際の解決は Scheduler の実装で stub しているのでダミーの IP アドレスを返していて環境によってはそれがエラーになるようです。 https://github.com/ruby/ruby/pull/6652 [ruby-core:106386] [Bug #18380]

[f0c8c1e878] Nobuyoshi Nakada 2022-11-01 01:51:35 UTC

tool/lib/vpath.rb のコマンドラインオプションの処理の OptionParser#on で引数の記述に空白を含めてしまっていたのを修正しています。

[99a79dc40b] Nobuyoshi Nakada 2022-11-01 01:56:28 UTC

tool/lib/colorize.rb で色付けを有効にするかどうかの判定に環境変数 NO_COLOR の考慮を追加しています。

[a2e7b11f2a] Nobuyoshi Nakada 2022-11-01 02:08:47 UTC

tool/generic_erb.rb から色付けしながら出力する部分を tool/lib/output.rb に切り出してクラスとして定義するリファクタリング

[7e6e94262c] Nobuyoshi Nakada 2022-11-01 02:43:22 UTC

tool/file2lastrev.rb の変数やメソッド名の改名するリファクタリング

[6bf458eefd] Nobuyoshi Nakada 2022-11-01 03:29:46 UTC

tool/file2lastrev.rb でも a2e7b11f2ae13f96171cb8a5aa6ae3cc75f6f083 で切り出した tool/lib/output.rb の Output クラスを使いまわすようにリファクタリングしています。これにより色付け関連のコマンドラインオプションにも対応できるようになっています。