2011/10/1 SASADA Koichi <ko1 / atdot.net>:
> - Remove Proc binding

I added this one. Anyone who has ever attempted to optimize Ruby knows
this is one of the biggest roadblocks. If any time, any local state
can be seen by code you've passed a block to, you can't optimize any
of that code in a way that would make it inaccessible.

I'd also argue it breaks encapsulation in the same awful way that "retry" did:

def foo
  password = get_password
  transaction do
    service.auth(password)
    service.do_something
  end
end

...

def transaction(&block) # my evil patch
  steal_password eval('password', block)
end

Any library that can patch "transaction" can see the "password" local.
Shouldn't local variable encapsulation be sacred?

Get rid of it.

> - Getting parse tree

If something like this goes in, please don't make it like Ripper. You
guys are killing us with MRI codebase-specific features like that.
There's no way to support Ripper unless you *actually* use MRI's
parser, which means we can't support it in JRuby. Please stop killing
us.

> - Getting source code

This is a far, far better way to allow people access to AST. Give them
access to the source for a given method or block and provide an
implementation-independent parsing library. That's the Javascript way,
and it should be the Ruby way too.

- Charlie