Можно ли отключить FFI LuaJIT, как JIT?

Для проекта мне нужно отключить FFI LuaJIT для пользователей API. Я просматривал вики LuaJIT и Stack Overflow и ничего не нашел по этому поводу.


person user3496129    schedule 04.04.2014    source источник
comment
Скомпилируйте LuaJIT с опцией -DLUAJIT_DISABLE_FFI   -  person Egor Skriptunoff    schedule 04.04.2014
comment
Или удалите запись ffi из глобалов, если вы все еще хотите ее использовать, но отключите ее для своих пользователей. Под глобальными я подразумеваю таблицы для загруженных модулей.   -  person W.B.    schedule 04.04.2014
comment
@EgorSkriptunoff Почему бы вам не поставить это как ответ вместо комментария?   -  person Colonel Thirty Two    schedule 04.04.2014


Ответы (2)


В основном есть два способа отключить FFI для скриптов на LuaJIT:

  1. Скомпилируйте его без поддержки FFI:
    Используйте параметр -DLUAJIT_DISABLE_FFI

  2. Удалите FFI из глобальных переменных и отфильтруйте require.

person Community    schedule 15.08.2014

Также вы могли бы (или, скорее, должны, потому что, если вы не доверяете своему пользователю, проблема не только в ffi, но и, например, setmetatable("",{...})) использовать песочницу. примеры: http://lua-users.org/wiki/SandBoxes, https://github.com/yEngine/YEng/blob/master/modules/sandbox/init.lua

person nonchip    schedule 27.03.2015