> Lots of responses here. > 1) I'd be in favor of an object-based API. I'll probably post tomorrow with > some thoughts on that. I only provided the tuple-based API because already > have it in all impls (except 1.9) and it already works. I agree that a simpler implementation (like one that didn't include default values--just names) would probably be easier. I wonder if you'd be able to create fairly easily an implementation for 1.9.1 [note--not 1.9.2] using InstructionSequence. I'd be happy to help :) Surprising there's not some gem out there that simplifies this process. Thanks much. -=R >> class Go; def go3(a, b=2, &block); end; end >> print RubyVM::InstructionSequence.disasm Go.allocate.method(:go3) == disasm: <RubyVM::InstructionSequence:go3@(irb)>====================== local table (size: 4, argc: 1 [opts: 2, rest: -1, post: 0, block: 2] s0) [ 4] a<Arg> [ 3] b<Opt=0> [ 2] block<Block> 0000 putobject 2 ( 15) ......