Skip to content

Compatibility

ehekufa edited this page Nov 15, 2026 · 1 revision

Совместимость и устройство

Выполнение

На 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 и справочнике библиотек.

Clone this wiki locally