evo
is an experimental Lua runtime built on LuaJIT and libuv, with batteries included.
Functional, but not feature complete. See issues and milestones for future plans.
Here's a selection of things you can do when running Lua scripts with Evo:
- Networking via UDP, TCP, HTTP/S, and WebSockets
- File system access, process I/O, and other system-level tasks
- Make use of the builtin test runner (including assertions library)
- Create native or web-based UIs and 3D software
- Data compression, encryption, and basic image processing
Not all of the included APIs are as user-friendly as I'd like, but that'll change.
The supported platforms are current versions of Windows, Linux, and macOS.
Automated testing covers all platforms equally:
Development happens on Windows 10 and Ubuntu; macOS (especially M1) support is given on a "best effort" basis.
Evo is fully compatible with:
- PUC Lua 5.1
- LuaJIT (latest)
It is generally incompatible with:
- PUC Lua 5.2, 5.3, or 5.4 (though some 5.2 and 5.3 APIs are supported)
- Any LuaJIT fork that strays too far from upstream (it's dangerous out there!)
- Embedded Lua(u) environments, like those found in games (ROBLOX, WOW, ...)
I have no plans to support Lua engines other than LuaJIT at this time.
In this repository, you'll find the following important directories:
BuildTools/
: Basic tooling to generate Ninja build configurations for the runtimedeps/
: Third-party libraries and MSYS/Unix-compatible build scriptsRuntime/
: Native glue and bootstrapping code for the Lua environmentTests/
: All kinds of automated tests and executable specs live here
After building, you'll additionally find a temporary directory containing all build artifacts here:
ninjabuild-windows
(Windows)ninjabuild-unix
(Linux or macOS)
There's also config files for GitHub actions and other tooling in the project root - a necessary evil.
The documentation website (work in progress) can be found here:
If something's outdated, wrong, or missing, please open an issue!