Загрузка нестандартной библиотеки lua в песочницу (Lua 5.1 / Luajit) - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь ознакомиться с lua и играю с ягодами-программистами (http://berrybots.com/) для этой цели. Он использует движок C ++, и пользователи / игроки могут предоставлять скрипты lua для программирования их собственный "бот-AI", чтобы сражаться с другими ботами.

Я программирую своего собственного бота, но я хочу использовать более интенсивные числовые идеи, поэтому мне нужно импортировать / требовать внешнюю библиотеку чисел (я предполагаю, что numlua, https://github.com/carvalho/numlua) в песочнице пользователя скрипты. Я не возражаю изменить исходный код ягодных роботов, чтобы он работал, и я уже предполагаю, что в песочнице этого нет пути (но, может быть, есть?).

На стороне C ++ запускается песочница, и стандартные библиотеки загружаются с

*state = luaL_newstate();
lua_setcwd(*state, stateCwd);
luaL_openlibs(*state)

Я хочу также загрузить библиотеку numlua, которую я обычно могу импортировать в любой скрипт lua с помощью

require "numlua"

но явно не в песочнице.

Я знаю, что luaL_register используется для регистрации функций C, но я не мог заставить его работать, и я думаю, что должен быть более простой способ импортировать numlua, не возвращаясь к C API numlua.

Мне все равно, если решение представляет угрозу безопасности, поскольку я только планирую использовать его самостоятельно. Для полноты картины было бы неплохо иметь (достаточно) безопасное решение.

Я новичок в lua (в основном знаком с Python / Cython / C), поэтому прости меня, если я упускаю некоторые очевидные вещи.

...