There's another thing that really should be fixed, for the sake of preserving our ability to change the implementation `local-eval' in the future.
Since (the-environment) can be included in code compiled to disk, the lexical environment objects that it returns are effectively now part of our ABI. As it is now, if we want to change the representation, we'll be in for a lot of headaches to support lexical environments produced by older code. The fix is simple: Simply change the representation of the lexical environment object to contain only a single field: a procedure that takes an expression (and optional keyword arguments) and does the equivalent of `local-eval' or `local-compile'. (The keyword arguments should specify whether or not to compile, and the compile options). Then, `local-eval' and `local-compile', when applied to a lexical environment object, should simply call the embedded procedure. Thanks, Mark