Eryx is a standalone Luau runtime with a broad standard library. It provides native modules for networking, cryptography, compression, file formats, databases, FFI, basic graphics, and more, with the goal of making Luau viable for general-purpose programming outside of Roblox.
Note
Eryx is pre-release software. APIs will change, likely drastically!
local http = require("@eryx/http")
local json = require("@eryx/encoding/json")
http.serve({ port = 8080 }, function(req)
return {
status = 200,
body = json.encode({ message = "hello" }),
}
end)Most users will want the standard build. This consists of the main Eryx executable, a shared library for all runtime operations, and every available module as individual files. Each module consists of either pure Luau scripts, or a single shared library with Luau scripts providing type stubs.
This build is generally recommended as it provides maximum flexibility, along with full type annotation.
For distribution, the embedded build is generally recommend. This build is a single executable, with no other files, providing the entire runtime along with all built in modules. As the runtime is now part of the executable, instead of a separate shared library, external library-based modules cannot be used with this build. Types will be unavailable in a development environment, though the type stubs from the standard build can be used.
When compiling a project to a single executable using a virtual filesystem, the embedded build will result in a truly single-file distribution. When using the standard build all of Eryx's files need distributed alongside the compiled file.
The hybrid build is similar to the embedded build, but the runtime is provided as a separate shared library. This build can be used if the single-file nature of the embedded build is desired, but external shared library modules are required.
Windows (x64), and Linux (GCC 14 or 15) are the currently validated build targets. macOS in theory has working code paths, but they're entirely untested due to a lack of hardware to test them with.
- MSVC (Tested against Visual Studio 2019), or GCC 14/15
- CMake
- Git (dependencies are vendored as submodules)
git clone --recursive https://github.com/Bottersnike/eryx
cd eryx
cmake --preset release
cmake --build buildFor debugging on Windows
cmake -S . -B build-vs -G "Visual Studio 16 2019"| Preset | Description |
|---|---|
default |
Debug build, modules as separate shared libraries |
release |
Optimized release build |
embed |
Single portable binary, all modules statically linked |
hybrid |
A binary with all modules statically linked, alongside the shared runtime library required for external libraries |
All optional — each defaults to ON:
| Option | Description |
|---|---|
ERYX_MODULE_GFX |
Graphics module (SDL3 + WebGPU) |
ERYX_USE_CRYPTOGRAPHY |
Cryptography (MbedTLS) |
ERYX_USE_ZLIB |
zlib / gzip |
ERYX_USE_ZSTD |
Zstandard |
ERYX_USE_BROTLI |
Brotli |
ERYX_USE_BZIP2 |
BZip2 |
ERYX_USE_SQLITE3 |
SQLite3 |
ERYX_USE_XML |
XML (pugixml) |
See individual vendored dependency licenses in vendor/.