Avoid incorrect variadic argument forwarding in `RUBY_ASSERT_MESG_WHEN` by the traditional MSVC preprocessor, which breaks `VM_ASSERT` when `RUBY_DEBUG` is enabled.nobu (Nobuyoshi Nakada)
Applied in changeset commit:git|d87ffb271a80fb108de3465d12ada829f3c130af. ---------- [Bug #22335] Use identity hashes for keyword argument tracking With more than 31 keyword arguments, tracking unevaluated defaults uses an integer-keye...nobu (Nobuyoshi Nakada)
With more than 31 keyword arguments, tracking unevaluated defaults uses an integer-keyed Hash whose collisions can invoke methods when `Integer#==` is refined or redefined, corrupting argument locals above `cfp->sp`. Use identity hashes...nobu (Nobuyoshi Nakada)
Avoid calling `rb_obj_freeze_inline` for already frozen objects, including immediate values, to match `rb_obj_freeze` semantics.nobu (Nobuyoshi Nakada)
The frozen check in `OBJ_FREEZE` makes the separate check redundant, and immediate values are always frozen, so the old assertion is unreachable.nobu (Nobuyoshi Nakada)
`rb_freeze_singleton_class` is an implementation detail of `RB_OBJ_FREEZE`, so deprecate direct calls from extension libraries before removing its public declaration in Ruby 4.2.nobu (Nobuyoshi Nakada)