Show HN: Clx – C++20을 통해 Lua를 네이티브 실행 파일로 컴파일
요약
clx는 C++20을 활용하여 Lua 코드를 네이티브 기계 코드로 컴파일하는 크로스 플랫폼 AOT(Ahead-of-Time) 컴파일러이자 런타임입니다. 이를 통해 별도의 인터프리터나 런타임 없이 독립적인 바이너리로 애플리케이션 배포가 가능합니다. Lua 개발자가 네이티브 속도와 효율성을 갖춘 데스크톱 앱을 쉽게 만들 수 있도록 지원합니다.
핵심 포인트
- Lua 코드를 C++20 기반의 네이티브 실행 파일로 컴파일
- 독립형 바이너리로, 별도의 런타임 환경 설치가 필요 없음
- 빠른 속도와 효율적인 메모리 관리를 제공하는 AOT 컴파일러
- Pong 게임 등 실제 데스크톱 애플리케이션 개발에 활용 가능
Cross-platform ahead-of-time Lua 컴파일러
clx는 현대 C++ 툴체인을 통해 독립적인 네이티브 실행 파일을 생성하는 크로스 플랫폼 ahead-of-time Lua 컴파일러이자 런타임입니다.
clx는 모든 워크로드에서 가장 빠른 Lua 구현체가 되려고 하는 것이 아닙니다.
Quick Start
git clone https://github.com/samyeyo/clx.git
cd clx
./build.sh install # 또는 Windows의 경우 build.bat install
...
clx가 유용한 이유
- Lua만 작성하면 됩니다. clx는 Lua 5.5를 대상으로 하므로, 코드는 일반적인 Lua처럼 작동합니다.
- 빠른 네이티브 속도 — 스크립트가 네이티브 기계 코드로 컴파일됩니다.
- 효율적인 메모리 관리 — 단명 데이터에 맞춰 조정된 세대별 가비지 컬렉터(generational garbage collector).
- 독립형 바이너리 — 프로그램과 함께 설치해야 하는 인터프리터나 추가 런타임이 필요 없습니다.
- 작은 출력 크기 — 크기에 친화적인 빌드는 매우 컴팩트한 실행 파일을 생성할 수 있습니다.
- 크로스 플랫폼 — Linux, macOS, Windows에서 작동합니다.
- 확장성 — Lua 5.5 C API와 호환됩니다. 기존 바이너리 모듈을 다시 컴파일하고 clx가 이를 최종 실행 파일에 원활하게 연결하므로 코드 변경이 필요 없습니다.
clx로 만든 예제
clx는 표준 Lua 코드를 사용하여 네이티브 데스크톱 애플리케이션 개발을 보여주는 실제 작동 가능한 예제를 제공합니다.
Pong

Lua로 작성되어 독립적인 네이티브 실행 파일로 컴파일된 완전한 게임입니다.
Mandelbrot viewer

Lua로 작성되어 독립적인 네이티브 실행 파일로 컴파일된 Mandelbrot 뷰어입니다.
프로젝트 상태
clx는 현재 베타(beta) 버전입니다. 이미 실제 Lua 애플리케이션을 컴파일할 수 있으며, 호환성 및 성능 작업이 계속 진행 중입니다.
Requirements
- Linux:
g++또는clang++ - macOS:
clang++(Xcode) 또는 Homebrew를 통한g++ - Windows:
g++(LLVM) 또는 MSVC - 소스에서 빌드하려면 CMake 3.15+ 사용
clx를 컴파일하는 컴파일러는 Lua 스크립트를 컴파일하는 데 사용되는 것과 동일하여 모든 것이 일관성을 유지합니다. 다른 컴파일러가 필요하면, 해당 컴파일러로 clx만 다시 빌드하면 됩니다.
clx 사용하기
clx를 사용하는 가장 쉬운 방법은 Lua 파일을 실행 가능한 프로그램으로 컴파일하는 것입니다:
clx file.lua # file.lua를 컴파일하고 실행 파일 생성
./file # 실행
더 많은 제어가 필요할 때 사용할 수 있는 몇 가지 일반적인 옵션들:
clx file.lua --size # 크기 최적화 (기본값)
clx file.lua --fast # 속도 최적화
clx file.lua --output app # 출력 파일에 사용자 지정 이름 부여
...
load()/loadfile()/dofile(): 임베디드 Lua 엔진에서 실행되며,--dynamic으로 컴파일할 때만 사용할 수 있습니다. Dynamic Lua를 참조하세요.- 네이티브 모듈을 작성하려면 clx는 자체 clx C++ API와 표준 Lua 5.5 C API (
lua.h,lauxlib.h,lualib.h)를 모두 지원합니다. 기존의 C 모듈은 변경 없이 컴파일되고 실행됩니다. Modules 및 Lua C API를 참조하세요.
벤치마크
clx는 기준 Lua 5.5 인터프리터와 비교하여 좋은 성능을 보입니다:
| 스크립트 | lua 5.5 | LuaJIT | clx --fast |
|---|---|---|---|
| fib.lua | 0.327s (1.00x) | 0.055s (5.95x) | 0.007s (46.71x) |
| ... |
Intel® Core™ i5 Ultra 125U CPU @ 4.30GHz · Linux · GCC 13.3.0 · 10회 평균 측정 · clx
--fast는 AVX2로 빌드됨
전체 벤치마크는 **clx benchmarks**에서 확인할 수 있습니다.
문서화
자세한 가이드는 doc/ 디렉토리에 있습니다:
시작하기
**문서 인덱스**에서 시작하세요.
라이선스
clx는 MIT 라이선스를 따릅니다 — Copyright (c) 2026 Tine Samir
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기