Здравствуйте, v_andal, Вы писали:
_>Lua и иже с ним не пошёл так как нужно было для разных пользователей разную функциональность, а стандартные функции Lua не так уж просто из него убрать.
Нет ничего проще, чем убрать из Луа стандартные функции. Просто не подключайте соответствующую библиотеку и всего делов:
L = luaL_newstate();
luaL_requiref( L, "_G", luaopen_base, 1 ); // или не подключаем
lua_pop( L, 1 );
luaL_requiref( L, "math", luaopen_math, 1 ); // или не подключаем
lua_pop( L, 1 );
luaL_requiref( L, "string", luaopen_string, 1 ); // или не подключаем
lua_pop( L, 1 );
luaL_requiref( L, "table", luaopen_table, 1 ); // или не подключаем
lua_pop( L, 1 );
luaL_requiref( L, "os", luaopen_os, 1 ); // или не подключаем
lua_pop( L, 1 );
luaL_requiref( L, "utf8", luaopen_utf8, 1 ); // или не подключаем
lua_pop( L, 1 );
... и т. д. для debug, io, etc.
Если же нужно отключить функции индивидуально, а не библиотеками, то достаточно после создания стейта загрузить и выполнить в нем что-нибудь типа такого:
print = nil
load = nil
io.open = nil
... и т. п.