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