ScriptEngine::run() is split into ScriptEngine::init(), ScriptEngine::run(), and ScriptEngine::evaluate(), this allows callers to use the single shot evaluate() or call run() till stop.