On Tue, Oct 25, 2011 at 5:27 PM, Joshua Ballanco <jballanc / gmail.com> wrote:

> 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.
>

Good talk!