clx is a cross-platform ahead-of-time Lua compiler and runtime that generates standalone native executables through modern C++ toolchains. clx is not trying to be the fastest Lua implementation in every workload.
git clone https://github.com/samyeyo/clx.git
cd clx
./build.sh install # or build.bat install on Windows
clx examples/hello/hello.lua
./hello
Hello clx !- Just write Lua. clx targets Lua 5.5, so your code works like ordinary Lua.
- Fast native speed — your scripts are compiled to native machine code.
- Efficient memory management — a generational garbage collector tuned for short-lived data.
- Standalone binaries — no interpreter or extra runtime to install alongside your program.
- Small outputs — size-friendly builds can create very compact executables.
- Cross-platform — works on Linux, macOS, and Windows.
- Extensible — add native C++ modules when you need extra performance.
clx ships real, runnable examples that show native desktop application development using standard Lua code.
A complete game written in Lua and compiled into a standalone native executable.
A Mandelbrot viewer written in Lua and compiled into a standalone native executable.
clx is currently in beta. It can already compile real Lua applications, and compatibility and performance work continues.
- Linux:
g++orclang++ - macOS:
clang++(Xcode) org++via Homebrew - Windows:
g++(LLVM) or MSVC - CMake 3.15+ to build from source
The compiler that builds clx is the same one used to compile your Lua scripts, keeping everything consistent. If you need a different compiler, just rebuild clx with it.
The easiest way to use clx is to compile a Lua file into a runnable program:
clx file.lua # compiles file.lua and produces an executable
./file # run itA few common options when you need more control:
clx file.lua --size # optimize for size (default)
clx file.lua --fast # optimize for speed
clx file.lua --output app # give the output a custom name
clx file.lua --dynamic # allow loading Lua code at runtime
clx --help # see all optionsload()/loadfile()/dofile()run on an embedded Lua engine and are only available when you compile with--dynamic. See Dynamic Lua.- To write native modules, clx uses its own C++ API (the classic Lua C API is not supported). See Modules.
clx compares well against the reference Lua 5.5 interpreter:
| Script | lua 5.5 | LuaJIT | clx --fast |
|---|---|---|---|
| fib.lua | 0.327s (1.00x) | 0.055s (5.95x) | 0.007s (46.71x) |
| arraysum.lua | 0.311s (1.00x) | 0.105s (2.96x) | 0.117s (2.66x) |
| spectralnorm.lua | 0.370s (1.00x) | 0.022s (16.82x) | 0.034s (10.88x) |
| canada.lua | 0.392s (1.00x) | 0.150s (2.61x) | 0.258s (1.52x) |
| warmup.lua | 0.007s (1.00x) | 0.006s (1.17x) | 0.003s (2.33x) |
Measured on an Intel® Core™ i5 Ultra 125U CPU @ 4.30GHz · Linux · GCC 13.3.0 · Average of 10 runs · clx
--fastbuilt with AVX2
Full benchmarks are available in clx benchmarks
Detailed guides live in the doc/ directory:
- Getting Started
- CLI Reference
- Dynamic Lua
- Compatibility
- Modules & C++ API
- Migration Guide
- Benchmarks
Start at the Documentation Index.
clx is MIT Licensed — Copyright (c) 2026 Tine Samir

