The official documentation isn’t 100% clear on things (why am I getting LUA_TNIL
for functions?), and the best I can find with some simple web search is kinda relevant stackoverflow (🤮) posts, except they’re mostly about calling host functions from Lua side, the rest are things that seem I’ve nailed so far.
EDIT: Solution was that everyone was using luaL_dofile
, while I was forward thinking and used lua_load
instead, which isn’t a macro, and as such doesn’t do an initial lua_pcall
. Now I do it manually, and now I get different, but less cryptic and actually documented errors. Now I just have to wrestle with D metaprogramming features (very strong and capable, but is a rabbit hole itself).
While lua ships a standalone interpreter, it is very much designed to be embedded directly into an application. This is done by invoking some C apis to load the interpreter into the application’s memory space. OP wants to do that rather than invoking another process and reading the output. When embedding into a host, the host can provide its own objects to be manipulated by the user script allowing for a much better extensibility experience.
That solution is janky and slow as hell. I’d rather just embed it into my own software, which is mostly done, except it doesn’t find functions as functions, but as nil value.