scripting-scala's eval function does not quite match the JSR233 implementations for Nashorn and Jython. Specifically, eval should make an entry in the ScriptContext.ENGINE_SCOPE bindings whenever it receives a string that causes a new variable or method to be defined.
For example, this should cause a new variable called twelve to be defined:
I exercise several JSR233 implementations in a test suite here, and highlight this issue here.
The scripting-java and scripting-clojure projects probably suffer from the same bug.