The premise of this comment is false. I'm not sure where the documentation says it's the global environment, but that documentation is not technically correct. The environment passed to the evaluation context of the function is a read/write local environment that inherits directly from the global environment. This is the same as you'd have in a function defined in Sass. That that environment has a read only reference to the caller's environment doesn't seem strange at all to me and avoids introducing two distinct ways of accessing the caller environment (`Environment#caller` is not a new accessor).

I need to land this pull request so that I can use it in compass. We can refactor this on master if you feel it's important.