clx kompiliert Lua nativ – ganz ohne Lua-VM
Trials and Tribulations of Native Lua Compilation
Lua ist klein und leicht einzubetten, doch jede Anwendung schleppt eine Lua-VM mit. Der Autor hat mit clx einen Compiler gebaut, der Lua-5.5-Quellcode in C++ übersetzt und mit Clang, GCC oder MSVC zu echten nativen Executables kompiliert. Die clx-Runtime liefert Tabellen, Strings, Garbage Collection und Coroutinen, aber keine Bytecode-Interpretation. Module, native C++-Bibliotheken und sogar dynamisches Laden per --dynamic bleiben möglich – und kleinere, schnellere Programme sind ein willkommener Nebeneffekt.
Das Schwierige an einem nativen Lua-Compiler war nicht, Code für if, while oder arithmetische Ausdrücke zu erzeugen. Die Kunst bestand darin, Luas Semantik zu bewahren und gleichzeitig auszunutzen, dass das Ziel nun nativer Code war.