Applied in changeset commit:git|3b9ada18c9acad899b178b49dbc4a87f8b9561ab. ---------- Ensure Symbol#to_proc respects caller's Ruby::Box context [Bug #22015] During a normal method call, the VM creates a control frame, and the Ruby::Box ...niku (niku _)
[Bug #22015] During a normal method call, the VM creates a control frame, and the Ruby::Box associated with that frame determines the execution context. However, Symbol#to_proc does not automatically create a frame. Therefore, we need to...niku (niku _)
Applied in changeset commit:git|1fe4fcf1852fe9887f2903e800d026b3a952b5c0. ---------- Fix Box resolution crash with IFUNC frames [Bug #21977] When `RUBY_BOX=1` is set, combining `binding` with `Symbol#to_proc` causes a crash (`[BUG] BUG...niku (niku _)
[Bug #21977] When `RUBY_BOX=1` is set, combining `binding` with `Symbol#to_proc` causes a crash (`[BUG] BUG: Local ep without cme/box`). This occurs because escaping an `IFUNC` frame via `binding` adds the `VM_ENV_FLAG_LOCAL` flag. `VM_...niku (niku _)
I found a minimal reproduction case. The issue seems to relate to how `Enumerable#flat_map` handles `Symbol#to_proc` within a `Ruby::Box` environment. Notably, `map(&:method)` works as expected, while `flat_map(&:method)` fails. ```...niku (niku _)
``` $ ruby -v ruby 4.1.0dev (2026-04-24T13:35:04Z master 52ee497f36) +PRISM [arm64-darwin25] ``` ``` $ ruby -e 'require "bundler/inline"; gemfile {}' ``` It ran fine as expected, but it failed when I added RUBY_BOX=1. ``` ...niku (niku _)
> Regexp.union creates a new instance, except for a single Regexp argument case. Ah, that makes perfect sense now. Thank you for the detailed explanation. ```irb irb(main):001> a = /a/ => /a/ irb(main):002> a.__id__ => 7232 ir...niku (niku _)