I am curious about how global variables are handled by script engines. I am looking for a script engine that does not preserve the state of global variables upon invocation. Are there such engines out there? We are looking for a scripting language we can use under the script engine API for Java.
When making multiple invocations of a script engine, top-level calls to eval() or evaluate() method preserves the state of global variables, meaning that consequent calls to eval() will use the global variables as they were left by the last invocation. Is there a script engine that does not preserve the state, or provides the ability to reset the state, so that global variables are at their initial state every time the script engine is invoked?
1 Answer 1
Any API to a scripting engine that allows for creation / teardown of the virtual machine associated with engine provides what you're looking for. Script hosts built for embedding into other software do this job well.
Lua is an embeddable scripting host, and this is what @delnan is talking about -- the API allows for the arbitrary instantiation of virtual machines that each have their own global state.
There are ways to do this in other scripting hosts (or rather, virtual machines). A .Net Common Language Runtime (CLR) can be invoked and used in a localized way via Microsoft's COM interface.
Explore related questions
See similar questions with these tags.
lua_State
, which will then be a blank slate.