On Tue, Oct 25, 2011 at 5:16 PM, Charles Oliver Nutter
<headius / headius.com>wrote:

> > Does anyone have statistics on how often binding is used and what the
> costs
> > is for not optimizing those portions?
> >
> > Binding in Ruby is used by debuggers or other dynamic introspection tools
> to
> > give access to call stack objects. There are dynamic languages such as
> Perl
> > and some of the POSIX shells (bash and zsh but not more recent ksh) that
> > don't have something like binding; therefore debuggers in those languages
> > can't provide reliable info regarding certain variables on the call stack
> > other than the top-most frame.
> >
> > Does it matter? Some probably would argue it doesn't. I think access to
> > locals on the call stack in a debugger is nice to have.
>
> That is neither here nor there. I am not proposing removing bindings.
>
> What I am proposing is removal of the ability to use an arbitrary Proc
> as a binding. Right now, millions of Ruby developers are passing
> blocks around, blissfully unaware that they are exposing *all* state
> that surrounds the block to the called code. Please read my example
> again.
>

This was the subject matter of my RubyConf talk. You can view the video
here: http://confreaks.net/videos/671-rubyconf2011-keeping-ruby-reasonable .
If you skip to 19:33, I presented a very real example of how this property
of Proc#bindings can have an impact on performance.