I am concerned just now about the semantics of eval and the attendant status of the environment-specifier as used in the definition of eval in R5RS. I note that R5RS does not require that eval mutate its second argument although it is permitted to. R5RS does not require that the environment returned by the primitive procedures be mutable. I think it requires that mutable such environments be new. Such primitives in MzScheme seem to return new mutable environments.
Just now I got thru the first 14 entries of Google’s report on “environment-specifier”. To proceed I need to understand modules.
A note on the history (1992) of the current R5RS definition.

Another note with more points of view recorded.

Larceny supports first class environments.

Gauche claims to support read-eval-print loops directly.

Delorie connects eval with modules. I don't want to go there.