A fork of luau-lang/lute focused on turning Luau into a modular, extensible runtime.
Lupe evolves Lute from a standalone runtime into a system that supports:
- Installable libraries (no recompilation required)
- Dynamically loaded native extensions (C/C++)
- A modular runtime architecture
- Compatibility with upstream Lute improvements
The goal is to make Luau practical for general-purpose development with a workflow closer to Python or Node.js
-
No rebuilds required Users can install and use libraries without recompiling the runtime.
-
Native extension support Load shared libraries (
.dll,.so,.dylib) as runtime modules. -
Modular ecosystem Encourage reusable, distributable packages instead of monolithic builds.
-
Upstream compatibility Stay aligned with
luau-lang/luteto benefit from ongoing fixes and improvements.
Lupe builds on Lute’s existing structure:
-
Core runtime (
lute) Base functionality implemented in C++ -
Standard library (
std) Extended functionality written in Luau -
External packages (new) Installable libraries, both:
- Luau modules
- Native extensions
local gl = require("gl")
local http = require("http")
gl.clearColor(0, 0, 0, 1)
http.get("https://example.com")Libraries like gl or http would be installed separately and loaded at runtime.
This project is experimental and builds on pre-1.0 software. APIs and module systems are subject to change.
This is a fork of Lute with a different focus:
| Lute | Lupe |
|---|---|
| Embedded/runtime hybrid | Full modular runtime |
| Extensions bundled at build time | Installable at runtime |
| Minimal ecosystem | Package-oriented ecosystem |
Contributions, ideas, and discussions are welcome—especially around:
- Package system design
- Native module API
- Module resolution and loading
- Compatibility strategy with upstream Lute
See our CONTRIBUTING.md for instructions on how to set up your development environment and build the project.