ruby-trunk-changes 2024-08-03

今日は主に YJIT で String#<< の最適化や bundled gems の rexml と rss のバージョン更新などがありました。

[3f93ef06a8] Yusuke Endoh 2024-08-02 12:44:43 UTC

String#byteslice での中間オブジェクトの利用を確認するためのテストで確保されたのが想定した slot 数と異なる時に作られたオブジェクトをエラーメッセージに含めるようにしています。たまにテストが失敗するとのこと。

[04a6165ac0] Kevin Menard 2024-08-02 19:45:22 UTC

String#<< の引数に Integer を渡して codepoint で文字を指定して追加する処理の ASCII-8BIT の時のショートカット実装を作って YJIT の生成するコードから利用するようにしています。 なおついでに? rb_str_buf_cat_byte() で一旦 char の配列型の変数に格納して使ってたの、元はメモリアライメントを気にしてるのかなという気がしましたが、引数で渡される時点でもアライメントされるような気がするから不要なコピーだったのかな。 https://github.com/ruby/ruby/pull/11032

[23837c5170] Yusuke Endoh 2024-08-02 15:13:42 UTC

3f93ef06a852af3f44d3c7a2ed62a670f9c3ff29 の続きで String#byteslice のメモリ利用についてのテストなどで、渡されたブロック内で確保されたオブジェクトの情報を得るヘルパーメソッドで確保されたオブジェクト自体だけでなくそのファイル内の位置やクラスの情報も返すようにしています。

[e5fb851fe7] Alan Wu 2024-08-03 01:53:38 UTC

vm_insnhelper.c の invoke_bmethod() というメソッドの prototype 宣言がこのファイル内で使われていなかったので削除しています。

[42cd267beb] Yusuke Endoh 2024-08-03 04:33:03 UTC

3f93ef06a852af3f44d3c7a2ed62a670f9c3ff2923837c5170180b2e6046961ae09de8688e64a0a2 の続きで String#byteslice のオブジェクト確保を確認するためのヘルパーメソッドで、並列テストをしていると別の Thread で確保されたオブジェクトが混じることでたまにエラーになるので、オブジェクトが確保されたファイルパスを絞って確認するように対応しています。

[657f4b99f6] git 2024-08-03 07:01:34 UTC

gems/bundled_gems と NEWS の bundled gems のバージョンリストの rexml と rss のバージョンを更新/追記しています。

[b708661313] Yusuke Endoh 2024-08-03 06:42:15 UTC

File#flock のテストでタイムアウトの時間を伸ばしています。