clx компилирует Lua в нативный код без виртуальной машины
Trials and Tribulations of Native Lua Compilation
Автор clx годами любил Lua за компактность и встраиваемость, но при распространении приложений всегда требовалась виртуальная машина. Даже упаковка в исполняемый файл через rtc оставляла интерпретатор внутри. clx идёт дальше: разбирает исходники Lua 5.5, генерирует C++ и компилирует его нативным компилятором. Получается настоящий машинный код, а не байткод под VM. Остаётся собственный рантайм clx для таблиц, строк, сборки мусора и корутин. Сложнее всего оказалось сохранить семантику Lua: множественные возвраты, замыкания, метатаблицы и корутины.
Самая сложная часть — не генерация кода для if, while или арифметических выражений, а сохранение семантики Lua при использовании того, что целью теперь является нативный код.