From: Joshua Ballanco Date: 2011-10-26T06:27:23+09:00 Subject: [ruby-core:40374] Re: 2.0 feature questionnaire --20cf304275c861663504b026347b Content-Type: text/plain; charset=UTF-8 On Tue, Oct 25, 2011 at 5:16 PM, Charles Oliver Nutter 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. --20cf304275c861663504b026347b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
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 to= ols 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) th= at
> don't have something like binding; therefore debuggers in those la= nguages
> can't provide reliable info regarding certain variables on the cal= l stack
> other than the top-most frame.
>
> Does it matter? Some probably would argue it doesn't. I think acce= ss 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 m= y RubyConf talk. You can view the video here: http://confreaks.net/vi= deos/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 ha= ve an impact on performance.

--20cf304275c861663504b026347b--