ruby-trunk-changes 2022-10-12

今日は主にインスタンス変数管理の Object Shapes 実装の 3度目のトライや標準添付ライブラリ open-uriTLS バージョン指定のオプションの変更などがありました。

[ccf61c01d5] "dependabot[bot]" 2022-10-03 15:22:30 UTC

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

[5ffbb2be18] "dependabot[bot]" 2022-10-03 15:22:27 UTC

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

[ad63b668e2] Jemma Issroff 2022-10-03 15:14:32 UTC

9a6803c90b817f70389cae10d60b50ad752da48f で revert したインスタンス変数管理方法の Object Shapes の実装を再度入れています。

[913979bede] Jemma Issroff 2022-10-03 17:52:40 UTC

ad63b668e22e21c352b852f3119ae98a7acf99f1 で再度入れた Object Shapes の inline cache の更新が複数 Ractor 間で race condition があったのを修正しているとのこと。inline cache の read と write が atomic に行なわれてなかったので struct iseq_inline_iv_cache_entry という構造体で source_shape_id/dest_shape_id/attr_index といったそれぞれのメンバーに数値を持ってたのを VALUE 型のメンバー1つにしてその上位/下位ビットに埋め込むことで atomic に読み書きするようにしているようです。うーむ大変だなぁ。

[467992ee35] Jimmy Miller 2022-10-11 20:37:05 UTC

YJIT で Object#__send__ によるメソッド呼び出しの時の send 命令(VM 命令)に対応した JIT コンパイル時に通常のメソッド呼び出しと同様の扱いができるようにする最適化を行なっているようです。 https://github.com/ruby/ruby/pull/6488

[ced1d17280] Samuel Williams 2022-10-11 23:59:05 UTC

IO:Buffer の read/write などのメソッドの length 引数を省略可能にしさらに offset 引数を追加したりしています。 また non-blocking fiber の実装もついでに? ちょっと弄ってるみたいですが……。 https://github.com/ruby/ruby/pull/6525

[4e29ca0c40] Kazuki Yamaguchi 2022-10-07 16:54:35 UTC

標準添付ライブラリ open-uri に open 時のオプションに openssl の TLS のバージョンの指定 :ssl_version を :ssl_min_version と :ssl_max_version の 2つに分割して範囲で指定できるようにしています。 cdbaac3f4b6349907fe744f5eafab982b45e53e2 の追加変更ですね。

[04d291a490] Samuel Williams 2022-10-12 02:56:35 UTC

non-blocking Fiber のテスト用の Scheduler の実装のよっとしたリファクタリングhttps://github.com/ruby/ruby/pull/6527

[c67e496886] Nobuyoshi Nakada 2022-10-12 02:38:44 UTC

tool/sync_default_gems.rb の git コマンドの出力をフィルタするための正規表現で先頭にマッチさせるために行頭の "^" を使ってたところを "\A" に修正しています。

[df588440ee] Nobuyoshi Nakada 2022-10-12 02:50:25 UTC

tool/sync_default_gems.rb で同期時に rdoc 用コメント内? の https://docs.ruby-lang.org/ へのリンクを rdoc-ref による相対パス参照に置換するようにしているようです。ここまでしますか。

[2b5d4fe28d] Nobuyoshi Nakada 2022-10-12 02:52:46 UTC

tool/sync_default_gems.rb に df588440ee01e91d87cb815ff85dd6c785dc7827 で実装した rdoc 用コメント内の絶対URLを rdoc-ref に書きなおす変更だけを適用するサブコマンド rdoc-ref を追加しています。動作確認のためとのこと。

[3539da64fc] Nobuyoshi Nakada 2022-10-12 02:54:16 UTC

df588440ee01e91d87cb815ff85dd6c785dc7827 の変更を利用していくつかの標準添付ライブラリと拡張ライブラリで実際に rdoc 用コメント内のリンクを rdoc-ref を利用して書き直しているようです。

[b57ecc3eb8] Nobuyoshi Nakada 2022-10-12 04:24:53 UTC

df588440ee01e91d87cb815ff85dd6c785dc7827 の tool/sync_default_gems.rb による rdoc 用コメント内の URL を rdoc-ref による参照に書き換える実装で https://docs.ruby-lang.org/ のパスに "/doc/" が含まれるケースにも対応するようにしています。

[0360fca4ad] Nobuyoshi Nakada 2022-10-12 04:30:25 UTC

b57ecc3eb88db40517f43ed44c007e2ddf5a8b2f の追加対応を使ってさらに標準添付ライブラリ csv の rdoc 用コメントの URL を rdoc-ref による参照に書き換えています。

[ed01bacf27] Nobuyoshi Nakada 2022-10-12 10:53:40 UTC

拡張ライブラリ psych の extconf.rb で libyaml がみつからない時に同梱版を利用するようにするための処理がちょっと残ってしまっていたので整理しています。みつからなかった時は例外発生して psych のビルドをエラー終了させるようにしています。

[66a650ec41] Nobuyoshi Nakada 2022-10-12 11:17:46 UTC

ed01bacf2778a5e3bd813ded5f01d7ccc85b289d の変更で libyaml の関数 yaml_get_version() がみつからなかった時の例外発生のための Kernel#abort 漏れてたのを修正。

[7a9f865a1d] Yusuke Endoh 2022-10-12 10:02:11 UTC

ad63b668e22e21c352b852f3119ae98a7acf99f1 の Object Shapes のリトライで vm_getivar() で初期化されない struct rb_callcache を参照してしまっていたという不具合を修正しています。