Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am curious about how global variables are handled by script engines. I am look

ID: 646641 • Letter: I

Question

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?

Explanation / Answer

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.