ruby-trunk-changes 2023-11-29

今日は irb の修正/機能追加やメソッドキャッシュまわりの不具合修正、Object Shapes の不具合修正などがありました。

[62c816410f] Yusuke Endoh 2023-11-28 11:46:00 UTC

拡張ライブラリ socket の名前解決のために pthread を起動する時の pthread_create(3) がたまに EAGAIN で失敗する可能性があるので 3回までリトライするようにしています。なるほどなー。

[458d079166] Kouhei Yanagita 2023-11-28 07:06:31 UTC

NEWS に endless range の Range#reverse_each が TypeError を発生させることを追記しています。 [ruby-core:107299] [Feature #18551]

[43dc8e9012] Peter Zhu 2023-11-28 13:12:35 UTC

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

[5fc71feb6c] Kasumi Hanazuki 2023-11-28 14:05:26 UTC

irb でプロンプトにトップレベルオブジェクトを文字列化して埋め込む時の例外を捕捉するようにしています。

[891ce4614a] paulreece 2023-11-28 14:56:47 UTC

irb の組み込みメソッドの show_source に -s というオプションみたいなのを追加しています。 継承しているメソッドの場合継承関係を辿って親クラスのソースを表示できるようにしているようです。 s を複数連続することでさらに上の親まで辿れるようです。

[476a231e7e] Takashi Kokubun 2023-11-28 15:41:14 UTC

YJIT のコード生成の実装に assertion を追加しているようです。 https://github.com/ruby/ruby/pull/9048

[fadd28c7ba] Peter Zhu 2023-11-28 17:22:46 UTC

irb の組み込みコマンド show_source のソースファイル探索処理時の NameError 例外の捕捉の追加をしています。またテストを独立したファイルに分離しています。

[cd4207869f] Alan Wu 2023-11-28 00:19:41 UTC

メソッドの callcache の invalidate が Refinements を経由した呼び出しのキャッシュの場合? に正しくクリアされなくなっていた不具合を修正しています。あわせて Refinements によるメソッド呼び出しの時の rb_method_entry_t の複製時にそこから参照されている orig_me の method entry も複製するようにしています。いやー難しいな。

[cb70994b0e] Peter Zhu 2023-11-28 18:37:38 UTC

Object Shapes で使っている赤黒木の実装のデバッグのため RUBY_ASSERT() によるデバッグ時の assertion を追加しています。

[982641939c] Jean Boussier 2023-11-28 10:03:13 UTC

23a7714343b372234972ef0dacf774d07fe65ced の続きでテスト用の Thread のライフサイクルについてのコールバックの呼び出しの実装を修正しています。 23a7714343b372234972ef0dacf774d07fe65ced の変更はこのチケットに関連した変更だったのかな。 https://github.com/ruby/ruby/pull/9029 [ruby-core:115465] [Bug #20019]

[6310522a9a] Maxime Chevalier-Boisvert 2023-11-28 20:04:33 UTC

YJIT 用のコマンドラインオプション --yjit-exec-mem-size のデフォルト値を 3.3 では 128MiB に拡張してたのを 64MiB に戻しています。 https://github.com/ruby/ruby/pull/9054

[ea3e17e430] Maxime Chevalier-Boisvert 2023-11-28 22:27:11 UTC

7f50c705742dd92509ae9fc3003eb7561baa7e8a で追加した --yjit-stats で出力する C 実装のメソッドの呼び出しランキングの生成の不具合修正。 https://github.com/ruby/ruby/pull/9056

[6eb5a9cf8f] Peter Zhu 2023-11-28 14:26:41 UTC

インスタンス変数を st_table で管理する too complex 状態になったオブジェクトのインスタンス変数アクセスが複数 Ractor での動作時に問題があったみたいで修正しています。パッチをみると Ractor 固有というより too complex 未対応のパスがまだあったという感じにみえますけど。

[10f44dfeff] Peter Zhu 2023-11-28 14:26:55 UTC

6eb5a9cf8f99b64d97d26b41011c03b846317d3e の再修正で Object Shapes の too complex 状態のオブジェクトの複数 Ractor 対応の修正をもっとシンプルにしています。またテストを追加しています。

[e4a11a1283] Tema Bolshakov 2023-11-12 20:12:16 UTC

Array#assoc は配列の要素に対して to_ary を呼ぶ暗黙の変換を行うのに Array#rassoc は呼んでなかったので Array#rassoc でも暗黙の変換を行うように対応しています。 [ruby-core:115355] [Bug #20003]

[9c900771da] Tema Bolshakov 2023-11-28 11:35:14 UTC

e4a11a1283da07fd1d94535298c605caf299a834 に対応して rubyspec の Array#rassoc のテストを変更しています。けどこれではだめでバージョンによる guard を入れて分岐しないといけませんね。 [ruby-core:115355] [Bug #20003]

[bed014e374] Tema Bolshakov 2023-11-28 12:35:38 UTC

というわけで 9c900771daa5e44d3be0d3c1d1e53e76763cfabb で変更した rubyspec の Array#rassoc のテストを 3.3 でのみ実行するようにしています。古いバージョン向けのを残さないといけないですね。 [ruby-core:115355] [Bug #20003]

[fcabe2df39] Alan Wu 2023-11-29 01:41:40 UTC

method entry の構造体の mark 処理で Refinements による複製された? method entry の時に未使用のメンバーの mark を削っています。

[bd2b6b702c] Michael Go 2023-11-28 15:37:26 UTC

bundler の bundle gem で生成する Rust 製拡張ライブラリのための Cargo.toml のテンプレートの magnus というパッケージの依存バージョンを更新しています。

[79eb75a8dd] Nobuyoshi Nakada 2023-11-29 05:40:21 UTC

スクリプトの Encoding が Unicode 系でない時に識別子が定数かその他かの判定のために 1文字目が大文字かどうか判定するのが Encoding を考慮した結果になっていなかった不具合を修正しています。 [ruby-core:115512] [Bug #20025]

[8e93bf8e1f] Nobuyoshi Nakada 2023-11-29 11:16:36 UTC

Integer#fdiv の実装で receiver が Fixnum の時に double の精度で誤差が大きくなるような数で除算される時には receiver も引数も Bignum に変換してから除算計算するようにしています。誤差を小さくするため。 [ruby-core:99239] [Bug #17037]