Skip to content

Bottersnike/eryx

Repository files navigation

Eryx

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!

Quick Example

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)

What version do I want?

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.

Building

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.

Requirements

  • 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 build

For debugging on Windows

cmake -S . -B build-vs -G "Visual Studio 16 2019"

Presets

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

Build Options

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)

License

See individual vendored dependency licenses in vendor/.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors