по факту получается есть буфер - в нем описаны пользовательские функции и переменные которые могут эти функции использовать я его загружаю через luaL_loadbuffer (хотя я так понимаю можно и через dostring) - на этом этапе у меня будет проверка синтаксиса происходить а потом через lua_getglobal и lua_pcall вызываю нужную функцию lua. при этом все глобальные переменные сохраняются между вызовами