Есть некая C-шная программа, в которой задействуется интерпретатор lua:
1. Для конфига, выставляются глобальные значения пользователем.
2. Для плагинов - пользователь определяет 2 глобальных функции с определенным именем, ну и кучу других (на практике тоже глобальных).
3. Для части высокоуровневой логики.
Сейчас все криво работает, потому что все это использует одно и то же окружение lua, и ничего не делается, чтобы разделить неймспейсы. Хотелось бы понять, как разделить неймспейсы так, чтобы при выполнении 3) то, что определено в 1) виделось, например,как config.name, а то, что в 2) как plugin_name.name, или plugins[x].name? Надо чтобы для писателей плагинов и конфига осталось все как раньше, чтобы им не надо было как-то отделять неймспейсы самостоятельно, а то это чревато неотлаживаемымт глюками... Единое окружение надо сохранить, чтобы при желании достукиваться до нужных значений из разных мест.