> We have a design (not implemented yet) to throw on an attempt to alias
> Kernel#eval by default. We would enable aliasing eval with a command
> line switch along the lines of /MakeItRunSlower :) We have a number of
> optimizations for non-local control flow that take advantage of using
> static analysis of a block/proc body. These optimizations simply
> cannot work in cases where eval appears within the block/proc. If
> folks could alias eval then we can't do any of the optimizations at
> all, and that is clearly a bad thing.

This seems very similar to the optimizations you are using for JS.NET.
Namely, an eval() that can be detected by the compiler will generate
special code.
eval()s that can't be detected by the compiler are handled via the run
time -- just like other methods like puts(). And the run time's
implementation for eval() just throws an exception.

Also see http://blogs.msdn.com/ericlippert/archive/2004/01/26/63087.aspx