From: "jeremyevans0 (Jeremy Evans)" Date: 2022-01-06T16:39:33+00:00 Subject: [ruby-core:106985] [Ruby master Feature#18461] closures are capturing unused variables Issue #18461 has been updated by jeremyevans0 (Jeremy Evans). bughit (bug hit) wrote in #note-4: > > But, maybe we could deprecate Proc#binding and remove it, I think that would be a good start. > > There's no such need. If the capture is optimized then Proc#binding will continue giving access to what has been captured, rather than everything that could be captured. This is not how it should be implemented, IMO. Optimizing such procs is fine, as long as such optimization is transparent. However, as soon as you call proc.binding.local_variables, you should see all local variables in scope (deoptimizing if necessary). Otherwise you break backwards compatibility. ---------------------------------------- Feature #18461: closures are capturing unused variables https://bugs.ruby-lang.org/issues/18461#change-95816 * Author: bughit (bug hit) * Status: Open * Priority: Normal ---------------------------------------- ```rb def foo a = 1 ->{} end p foo.binding.local_variables # [:a] ``` Shouldn't `a` be optimized away? Like v8 does (https://bugs.chromium.org/p/v8/issues/detail?id=3491) -- https://bugs.ruby-lang.org/ Unsubscribe: