ruby-trunk-changes 2024-05-28

今日は主に String を要素にする Range で yield する文字列の coderange を設定する最適化や標準添付ライブラリ reline の機能追加、短い文字列に hash 値を埋め込むことで再計算を抑止する最適化などいろいろな変更がありました。

[7c6e4bc7ca] verdy89 2024-05-27 16:38:19 UTC

標準添付ライブラリ reline に redo コマンドを追加して emacs mode で利用できるようにしています。 https://github.com/ruby/reline/pull/707

[2114d0af1e] Yusuke Endoh 2024-05-28 03:04:34 UTC

標準添付ライブラリ timeout のテストでタイムアウトの設定がみじかすぎて遅いマシン環境でテストが失敗してしまうことがあったのでタイムアウトを伸ばしています。

[1376881e9a] Étienne Barrié 2024-05-27 09:22:39 UTC

frozen_string_literals のデフォルト true に向けて警告出力のための導入した Chilled String の扱いを緩めて frozen? などで判定した時に false を返すようにしています。 [ruby-core:116382] [Feature #20205]

[9e9f1d9301] Jean Boussier 2024-04-08 10:04:01 UTC

短い文字列で object space の heap 内の slot にバッファを埋め込む場合にさらに余白があった場合に hash 値をその余白に埋め込むことで hash 計算の繰り返しを抑制するという最適化を追加しています。Variable Width Allocation で slot の拡張もあるので Hash のキーに使われる文字列くらいの長さだとたいてい納まって効きそう。 [ruby-core:117469] [Feature #20415]

[1b8ba1551b] Mike Dalessio 2024-05-24 17:10:10 UTC

include/ruby/internal/ 配下のヘッダファイルで "-Wconversion" オプションによる警告を抑制するためのキャストなどを追加しています。拡張ライブラリのビルド時にこのオプションをつけると警告が出てしまってたのでその対策のためみたいです。 [ruby-core:118007] [Feature #20507]

[ca2d229e6b] Mike Dalessio 2024-05-27 17:39:01 UTC

1b8ba1551b26fac906998e34fd2af3f82b433469 のヘッダファイルの警告除去に続いて同様の警告が出ないことを確認するための C API テスト用の拡張ライブラリ? というか extconf.rb を追加しています。これ extconf.rb しか追加されてないけどコミット漏れじゃないのかな? make するだけでチェックになるということかも。 [ruby-core:118007] [Feature #20507]

[ceeb9957c3] Jean Boussier 2024-05-28 05:54:37 UTC

1b8ba1551b26fac906998e34fd2af3f82b433469 の続きで include/ruby/internal/value_type.h にもう一カ所 -Wconversion による警告抑制のための RBIMPL_CAST() を追加しています。 [ruby-core:118007] [Feature #20507]

[43798e0f6d] Nobuyoshi Nakada 2024-05-28 07:23:18 UTC

misc/lldb_rb/utils.py の lldb での rp でのオブジェクトダンプで T_STRING 型オブジェクトの coderange の情報も出力するようにしています。

[0a92c9f2b0] Nobuyoshi Nakada 2024-05-28 07:24:21 UTC

文字列オブジェクトの空文字列のオブジェクトを作成したりサイズを 0 にして空文字列にした時に coderange を ENC_CODERANGE_7BIT にセットするようにしています。

[7d144781a9] Nobuyoshi Nakada 2024-05-28 07:59:51 UTC

String#upto などで文字列を文字単位でイテレートする時にブロックに渡す部分文字列の coderange が ASCII だと自明な時はセットしておくことで高速化するようにしています。 [ruby-core:118037] [Bug #20512]