Skip to content
pascalcombierPublic

About

Lua 5.5 interpreter and cross-compiler: packs a Lua project into one standalone executable for Windows and Linux x64, no C compiler needed. FFI, libuv, sockets, SQLite, WebView2, Win32

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

📋 ComEXE

lua55ce is a statically linked drop-in replacement for the Lua standalone program. Its extended command --make packs a Lua project into a standalone executable for Windows x64 or Linux x64, without any C/C++ compiler.

> lua55ce src\hello.lua                                # run a script
> lua55ce -x --make src\hello.lua                      # standalone executable, current OS, ~2.0 MiB
> lua55ce -x --make src\hello.lua -t x86_64-linux-musl # same script, Linux x64 executable

The extended commands (--make, --compile) are prefixed with -x. Without it, the behavior is the same as the standalone Lua interpreter.

Release Platform Lua License: MIT

lua55ce making hello.exe

🚀 Quick start

Download and extract the latest binary release, rename lua55ce-x86_64.exe to lua55ce.exe for convenience:

> lua55ce -v
Lua 5.5.1  Copyright (C) 1994-2025 Lua.org, PUC-Rio, ComEXE 0.0.13 2026-10-25T16:52:31
> mkdir src
> echo print("Hello World!") > src\hello.lua
> lua55ce src\hello.lua
Hello World!
> lua55ce -x --make src\hello.lua
> hello.exe
Hello World!

The same commands work on Linux: use src/hello.lua, the output file is hello instead of hello.exe, and it is run with ./hello.

Option --verbose shows more information:

> lua55ce -x --make src\hello.lua --verbose
TARGET 'hello.exe' 'x86_64-windows'
 ENTRY 'hello'
ZIPDIR 'src'
CREATE 'hello.exe' 2.0 MiB

The key point is that the whole src directory is packed and included in the standalone executable, not only hello.lua. See Standalone executables for details.

🌐 Cross-compiling

Windows and Linux hosts can build for both systems:

> lua55ce -x --list-targets
x86_64-windows
x86_64-windows-dbg
x86_64-windows-gui
x86_64-linux-musl
x86_64-linux-musl-dbg
x86_64-linux-gnu
x86_64-linux-gnu-dbg

The default, with no suffix, is the console build. -dbg is the debug build, -gui is the Windows GUI build.

Build Size
Windows x64, full runtime 1.99 MiB
Windows x64, --nostdlib 1.41 MiB
Linux x64, x86_64-linux-musl (static) 2.82 MiB
Linux x64, x86_64-linux-gnu (glibc) 2.64 MiB

The option --nostdlib strips all the Lua modules from the executable.

📦 Features

lua55ce program

  • Generate standalone executables: nothing to install on the target machine
  • Generate FFI bindings from C headers with the preprocessor
  • Compile Fennel code to Lua

Runtime libraries

  • Native threads: one per Lua state
  • libffi: call C libraries from Lua
  • libuv (luv), LuaSocket, mbedtls, LPEG, dkjson, minizip
  • SQLite (needs sqlite3.dll or libsqlite3.so.0)

Windows-specific

  • WebView2 UI (needs WebView2Loader.dll and the WebView2 runtime)
  • Win32 COM automation (Excel, Word and Outlook)
  • Win32 API

Windows GUI from Lua:

A WebView2 window built with ComEXE

ℹ️ Status

  • Tracks PUC Lua 5.5, not LuaJIT
  • Pre-1.0: command options and APIs may change
  • Windows x64 and Linux x64 only. No macOS, iOS or Android

📘 Documentation

Guides

Notes

Reference

🎯 Alternatives

Topic ComEXE luastatic clx LuaRT
Lua 5.5 5.1-5.4, LuaJIT 5.5 5.5
Platforms Windows x64, Linux x64 (glibc, musl) Any Linux x64, macOS ARM64, Windows x64 Windows 8.1+ (x86, x64)
Exe generation No compiler needed Needs C compiler + liblua.a Needs C++ compiler No compiler needed
Cross-compile Yes (Windows and Linux hosts) No No No
Native threads Yes, one per Lua state No No Tasks only (coroutines)
Sockets TCP, UDP, HTTP(S), TLS (mbedtls) Not built in (link via LuaRocks) Not built in (link with --modules) TCP only, HTTP(S), FTP, TLS (SChannel)
FFI libffi, callbacks Via LuaJIT No Limited, no callbacks
Windows integration Win32, COM, Registry, WebView2 None None 25 modules: GUI, audio, serial, Wi-Fi
Deployment One exe, 1.4-2.8 MiB One exe, ~1 MiB static One exe One exe + VC++ runtime
Runtime Lua VM (bytecode) Lua VM (bytecode) Native code (AOT) Lua VM (bytecode)

This table refers to out-of-the-box capabilities only. All four tools can use additional C libraries: ComEXE and LuaRT through FFI, luastatic and clx by linking.

Checked 2026-10 against luastatic, clx (beta) and LuaRT.

📄 License

MIT

About

Lua 5.5 interpreter and cross-compiler: packs a Lua project into one standalone executable for Windows and Linux x64, no C compiler needed. FFI, libuv, sockets, SQLite, WebView2, Win32

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages