ruby-trunk-changes 2022-10-22

今日は主に YJIT の不具合修正や Object Shapes の導入で潜在的な異常終了の可能性があった不具合の修正などがありました。

[f88bff7705] Hiroshi SHIBATA 2022-10-21 12:33:50 UTC

8a2b7b79ee8a1ba487c0b5064c0730b98f5ba438 で標準添付ライブラリ net/http の Net::HTTP#connect においてソケット接続時のタイムアウトに標準添付ライブラリ timeout の Timeout.timeout を利用していたのを Socket.tcp のキーワード引数 connect_timeout での指定を使うようにしてたのを revert しています。Socket.tcp を使うのにはいくつか問題があって名前解決の部分にタイムアウトがかからないというのと、接続部分も connect_timeout キーワード引数はホスト名に対して複数のアドレスが帰ってきた場合それらに順に接続する時のタイムアウトとして使われるので、全体としては open_timeout * アドレス数の時間がかかる可能性があって呼び元が期待する結果と異なるということで Timeout.timeout でざっくり全体のタイムリミットを持つほうが期待に沿っているということで元に戻されています。

[35e03a44b8] Burdette Lamar 2022-10-21 14:12:31 UTC

拡張ライブラリ stringio の rdoc 用コメントの手直し。 https://github.com/ruby/stringio/pull/36

[f2ae58119d] Jemma Issroff 2022-10-20 18:50:41 UTC

Object#dup の実装の一部である object.c の init_copy() でインスタンス変数管理のための Object Shapes の情報 rb_shape_t をセットするのを rb_obj_copy_ivar() でインスタンス変数の内容をコピーした後に移動しています。GCインスタンス変数テーブルを mark する時に Object Shapes による情報を利用しているので先にセットしてしまうとまだ確保してない領域に対して mark してしまう可能性があったようです。

[c7754a4d4c] Burdette Lamar 2022-10-21 19:42:28 UTC

doc/io_streams.rdoc のセクション分けの追加など。 https://github.com/ruby/ruby/pull/6602

[8bbcb75377] Alan Wu 2022-10-21 19:11:52 UTC

39f7eddec4c55711d56f05b085992a83bf23159e で YJIT の変数の型の扱いを修正したところをさらに他の箇所も同様の修正をしています。

[87bb0bee6b] Alan Wu 2022-10-21 21:06:34 UTC

YJIT の Rust 実装で JIT で生成する機械語を配置するメモリ領域のページ数の計算に不具合があったのを修正しています。

[13bd617ea6] Jemma Issroff 2022-10-21 16:58:51 UTC

Object Shapes の導入によりインラインキャッシュの管理のために使っていたグローバルな変数 ruby_vm_class_serial が不要になったとのことで削除しています。

[a11952dac1] Jemma Issroff 2022-10-21 20:24:29 UTC

構造体 rb_shape_t のメンバー iv_count を next_iv_index に改名しています。

[0d697e341a] yui-knk 2022-10-22 06:36:59 UTC

fbbdbdd8911ffb24d98bb71c7c33d24609ce7dfe の RubyVM::AbstractSyntaxTree.parse への error_tolerant キーワード引数の追加について NEWS に追記しています。 [ruby-core:109977] [Feature #19013]

[420bdba139] "Thomas E. Enebo" 2022-10-20 18:17:47 UTC

rubygems で Kernel#warn にキーワード引数を渡すかどうか判定するのに JRuby かどうかをチェックしていたところ、最新版の JRuby ではキーワード引数に対応したみたいで RUBY_VERSION の判定も条件に追加して最新の JRuby ならキーワード引数も渡すようにしています。なぜか一緒に doc/io_streams.rdoc のリンクの絶対 URL が rdoc-ref に直されているけどこれは tool/sync_default_gems.rb による同期時に自動的に変換されたのかな。rubygems のファイルの一部ではないと思うけど。

[8dfe3bdf48] Samuel Williams 2022-10-22 10:34:00 UTC

hash.c の hash_foreach_iter() や hash_ar_foreach_iter() という関数で変数の宣言をブロックの先頭でしていたのを初期化する箇所で宣言と同時に初期化するようにしています。 C99 かなにかで変数の宣言がブロックの先頭でなくてもできるようになったので今はこう書いていいんですけど、この例だとわざわざそう書きかえるほどの必要性もないように思いますが。 https://github.com/ruby/ruby/pull/6615