https://github.com/rails/rails
ActiveSupport に ProxyLogger が追加され、既存ロガーを共有しつつ独立したログレベルで出力を制御できるようになりました。autoload と LoggerSilence の活用で互換性を保ち、テストで機能を検証しています。
Action View のテンプレートハンドラレジストリを不変オブジェクトへ置き換え、Ractor 共有が可能になったため、マルチ Ractor 環境で安全にハンドラ検索とレンダリングが行えるようになりました。
ActiveSupport::Notifications.instrument が生成する余分なスタックフレームを除去し、バックトレースと Flamegraph の可読性を改善した変更です。機能はそのままで内部実装だけをシンプルにしています。
LogSubscriber の log_levels を凍結し、マージ後も freeze することで Ractor 間で安全に共有できるようにし、テストで shareable 性を検証した変更です。
ActionCable のテストアサーションで Symbol と String を統一し、偽陽性・偽陰性を排除。`broadcasting_for` とストリーム判定メソッドに String 変換を追加し、後方互換性を保ちながらテスト信頼性を向上させた。
ExecutionWrapper のサブクラスが継承時に active_key を自動設定することで、Ractor 環境でのクラスインスタンス変数操作エラーを防止し、実行コンテキストの信頼性を向上させました。
Enumerable#in_order_of の filter:true が series に nil を含めても除去していたバグを、compact と flatten の呼び出し順序を入れ替えるだけで解消し、 filter:false と同様に nil を保持できるようにした。
Cache#exist? がインストルメンテーションでオプションをペイロードに含めるようになり、他のキャッシュ操作と情報が統一されました。
Arel のロード時に ActiveSupport::Ractors を先行 require することで、単体 require 時の NameError を解消し、外部ライブラリでも安全に利用できるようにした変更です。
has_and_belongs_to_many の association_foreign_key が複合キーの場合に文字列ではなく配列で返るよう修正し、foreign_key との API 整合性を確保した。
GROUP BY と併用した `sum` でも DISTINCT が適用されるよう、execute_grouped_calculation にフラグ設定を追加し、正確な合計を保証した変更です。
`HashWithIndifferentAccess#filter` が `Hash` を返す不具合を、`select` へのエイリアス追加で解消し、インデファレントアクセスを維持できるようにした変更です。
`reverse_order` が `query_constraints` に基づく逆順を生成するよう改修され、`first`/`last` と同一基準での逆順が可能になりました。既存モデルへの影響はなく、一貫性が向上しています。
ActiveJob の `retry_on` が Float の `:wait` を受け入れるようになり、内部で `to_f` を使って遅延を計算するだけの最小変更でサブ秒指定が可能になった。
DEFAULT_SAME_SITE を shareable_proc でラップし、Ractor 間で安全に共有できるようにしたが、挙動は変わらない。
ActiveSupport に `assert_not_pattern` をエイリアスとして追加し、パターンマッチング系テストでも `assert_not_*` 系の一貫性と可読性を実現した。
ActiveSupport のレベルチェックラムダとデバッグ判定プロックを Ractor 共有可能なラップで包み、マルチ Ractor 環境でも安全に利用できるようにした変更です。
Active Record と Arel の内部 proc 定数を `shareable_proc` でラップし、Ractor で安全に共有できるようにしたが、挙動は変更せず互換性も維持した。
ActionMailbox のコールバック終了ラムダ `TERMINATOR` を Ractor 共有可能にし、Ractor 環境でも安全に実行できるようにした変更です。
CacheStore の `delete_session` が `options[:drop]` を無視して新しい SID を生成していたバグを修正し、`nil` を返すようにしたことで、セッション削除が正しく機能し、Rack 契約に合致しました。