ruby-trunk-changes 2023-12-29

今日は主に AST に `__LINE__` 専用の node タイプを追加する変更や正規表現のマッチの不具合修正などがありました。

[7016ab873e] Nobuyoshi Nakada 2023-12-28 09:07:49 UTC

拡張ライブラリ ripper 用のソースコード生成用のツール ext/ripper/tools/generate.rb で eventids2table.c の生成時に RIPPER_EVENTIDS2_TABLE_SIZE というマクロを吐き出すようにして ext/ripper/eventids2.c 内で C のソース上の ripper_scanner_ids の要素数と Hash にセットする要素数が一致していることを STATIC_ASSERT でチェックするようにしています。

[87e8e961b7] yui-knk 2023-12-28 08:04:31 UTC

compile.c の static_literal_value() で node の種類で分岐する switch 文で default で暗黙に NODE_LIT 型である前提でコードを書いていたのを明示的に case を書いて default 節では期待していない node の種類の場合 rb_bug() で明示的に異常終了させるようにしています。

[d8702ddbfb] Hiroya Fujinami 2023-12-28 14:20:03 UTC

正規表現のマッチの不具合修正。キャッシュの実装の変更時に不具合が入ってしまったみたいです。 https://github.com/ruby/ruby/pull/9367 [ruby-core:115888] [Bug #20083]

[0990270c38] Burdette Lamar 2023-12-28 14:33:06 UTC

Complex のクラスの rdoc 用コメントにメソッド一覧のセクションを追加しています。 https://github.com/ruby/ruby/pull/9366

[e81a5453e3] Yuta Saito 2023-12-27 07:47:11 UTC

GitHub Actions の WASI/WASM 版と GitHub pages の playground を生成する workflow で github-pr-info.txt というファイルの確認をするファイルパスをフルパス(?)にしています。よくわかりませんが pull request に playground ラベルを付けるのを pull request を作った後にしても WASI 版のビルドの完了前なら playground を作れるようにするため?

[2b96737636] Dylan Thacker-Smith 2019-09-27 05:10:13 UTC

thread_profile_frames() という C API で start という引数に 1以上の値を渡していくつか frame をスキップするよう指定された時にループ変数の更新が漏れていた不具合を修正しています。 [ruby-core:86147] [Bug #14607]

[e86b4c29fc] Blake Imsland 2022-03-14 06:27:46 UTC

標準添付ライブラリ securerandom の Random::Formatter の uuid メソッドで String#unpack の利用するかわりに文字列オブジェクトの String#getbyte, String#setbyte を利用して直接バイト列を変更してから String#unpack で指示子 "H" を使って16進数表記で切り出した後 join するようにしています。性能のためとのこと。

[bc3b9356b2] Alexander Momchilov 2023-12-29 04:05:18 UTC

標準添付ライブラリ reline の Reline::KillRing::RingPoint というクラスの #== メソッドで object_id を取得して比較してたのを Object#equal? メソッドを利用するようにしています。 https://github.com/ruby/reline/pull/617

[6f33e3c53d] tomoya ishida 2023-12-29 08:23:24 UTC

bc3b9356b2c885b1ea268330afcf20e1ab3a4704 で標準添付ライブラリ reline の lib/reline/kill_ring.rb のファイルの mode が変化してしまってたようで戻しているみたいです。 https://github.com/ruby/reline/pull/623

[1ade170a6c] yui-knk 2023-12-28 03:38:24 UTC

AST のノードの種類に NODE_LINE というのを追加しています。 `__LINE__` という特殊な変数の参照に対応させる専用の node みたいです。いままではリテラル用の NODE_LIT を使いまわしていたのを分離したとのこと。

[bb59696614] Hiroya Fujinami 2023-12-29 10:30:24 UTC

正規表現のマッチの不具合修正。正規表現内に {n,m} による最小/最大繰り返し数の指定があった時の処理に不具合があったようです。これもメモ化による最適化の変更時の不具合のようです。 https://github.com/ruby/ruby/pull/9391 [ruby-core:115933] [Bug #20098]