Repository navigation
Compatibility
На desktop LuaC компилирует Lua-подобный исходник в C, затем C-компилятор создаёт native-код. JIT загружает разделяемую библиотеку, AOT создаёт исполняемый файл. На Android project runner использует встроенный AST-исполнитель, чтобы запускать проекты без установленного C toolchain. Оригинальная Lua VM не подключается.
В runtime применяется подсчёт ссылок: объект, у которого больше нет владельцев, обычно освобождается сразу. Отдельный периодический сборщик обрабатывает недостижимые циклы и weak tables. Поэтому текущее управление памятью нельзя описывать как полностью свободное от tracing GC.
LuaC поддерживает существенную часть синтаксиса Lua и собственные native-библиотеки, но не является полной заменой Lua 5.4, LuaJIT или LÖVE. Возможности отличаются между desktop compiler и Android runner. В частности, desktop связывает литеральные require('module') при компиляции; Android runner может искать файлы проекта во время выполнения.
Классический Lua C API и произвольные готовые бинарные модули Lua/LuaJIT не поддерживаются. Публичный API LuaC для компиляции и встроенного runner описан в src/luac.h; это другой интерфейс.
Состав библиотек, дополнительные зависимости и актуальные ограничения смотрите в README и справочнике библиотек.