ruby-trunk-changes 2023-03-30

今日は標準添付ライブラリ time の不具合修正や YJIT の最適化などがありました。
また今日は ruby の各安定版の脆弱性修正を含むリリースがありました。

https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-2-2-released/
https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-1-4-released/
https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-0-6-released/
https://www.ruby-lang.org/en/news/2023/03/30/ruby-2-7-8-released/

[b168141c78] Stan Lo 2023-03-29 13:51:22 UTC

標準添付ライブラリ reline の Reline::LineEditor::Dialog クラスのインスタンス変数 @scrollbar_pos を削除してローカル変数で取り回すようにリファクタリングしています。

[a8c6ba23a6] Jimmy Miller 2023-03-29 16:31:41 UTC

YJIT の rest 引数とキーワード引数を持つように宣言されたメソッドの呼び出しのサポートを追加しています。 https://github.com/ruby/ruby/pull/7608

[93b6997103] Alan Wu 2023-03-28 21:21:40 UTC

YJIT の Rust 実装の未定義挙動になるコーディングをしていたのを避けるためのリファクタリングのようです。

[cdededf24d] Alan Wu 2023-03-28 21:38:06 UTC

YJIT のコード用のメモリ領域の独自の GC のための処理で VM 全体のロック取得するようにしています。

[a1a4d77472] Alan Wu 2023-03-28 23:00:18 UTC

YJIT コード領域の独自 GC に assertion を追加しています。

[1b06422767] Alan Wu 2023-03-29 21:57:52 UTC

YJIT で C 実装のメソッドの呼び出しの時に control frame の pc の設定が不要な時にその初期化を省くことで命令を節約するように変更しているようです。

[f89c348234] Koichi Sasada 2023-03-29 18:20:44 UTC

GitHub Actions のいろんなコンパイラオプションを試す workflow でコメントアウトされていた -DUSE_RUBY_DEBUG_LOG=1 でマクロ定義を追加してテストする条件を有効にしています。

[ba72849a3f] Koichi Sasada 2023-03-29 18:15:14 UTC

rb_threadptr_interrupt_common() と rb_threadptr_interrupt() に RUBY_DEBUG_LOG() で USE_RUBY_DEBUG_LOG 有効化時に出力するログを追加しています。

[94e4182267] Koichi Sasada 2023-03-29 17:50:51 UTC

ractor_lock() での USE_RUBY_DEBUG_LOG 有効化時の出力ログで現在の Ractor 情報取得のための判定で NULL の参照が起きる可能性があったのを回避するようにしています。

[30b43f4f1a] Koichi Sasada 2023-03-29 17:38:08 UTC

rb_ractor_thread_list() という C API で引数に rb_ractor_t のポインタを受け取っていたのを削除して常に GET_RACTOR() で取得した現在の Ractor に対して処理するようにすることで RACTOR_LOCK()/RACTOR_UNLOCK() による排他を不要にしています。唯一の呼び元が GET_RACTOR() を渡していたので。

[f5b824c745] Koichi Sasada 2023-03-29 17:41:45 UTC

ractor_terminal_interrupt_all() に USE_RUBY_DEBUG_LOG が有効な時に出力するデバッグログを追加しています。

[623027bf0b] Nobuyoshi Nakada 2022-11-29 07:22:15 UTC

標準添付ライブラリ time のテストに Time.rfc2822 によるパースに文字列長に応じての処理時間の爆発が起きないということを assert_linear_performance を使って確認するテスト追加しています。

[aa3885501f] Nobuyoshi Nakada 2022-11-29 07:22:15 UTC

標準添付ライブラリ Time の時刻文字列のパースのための正規表現で不正な文字列が渡された時のバックトラックを抑制するための修正をしています。

[cbfd029985] Nobuyoshi Nakada 2022-12-30 05:32:05 UTC

aa3885501f89e4927a72ccc1f90ff9cbc4140e17 の続きで標準添付ライブラリ time の時刻のパースのための正規表現を再修正(というか最適化?)しています。

[6f122965cf] Nobuyoshi Nakada 2023-03-30 08:12:38 UTC

RubyVM::AbstractSyntaxTree.parse の keep_tokens キーワードオプションに true を指定した時にバックスラッシュのトークンが含まれていた時に異常終了してしまっていたのを修正しています。 parser_token2id() でトークンへの対応漏れがあったみたいです。 [ruby-core:113016] [Bug #19547]

[648870b5c5] Samuel Williams 2023-03-30 11:48:55 UTC

IO#pread と IO#pwrite の実装で non-blocking Fiber のための Scheduler が設定されていた場合を考慮するようにしています。 https://github.com/ruby/ruby/pull/7594