Status: Active draft
This page records the current platform direction. Earlier drafts emphasised direct native/Nuklear output; the active plan starts with a zero-dependency dump UI engine and grows toward additional engines and hosts.
Llux is implemented as a local compiler toolchain:
source -> lexer -> parser -> AST -> C codegen -> local compiler -> output
Compiler detection should prefer the best available local option among TCC, Clang, GCC, and Zig, while keeping the project offline-first and self-contained.
The generated code should call an abstract ui_* interface. The selected UI engine provides the implementation.
| Engine | Purpose | Dependencies | Status |
|---|---|---|---|
dump |
Print the UI tree to stdout. | None | Phase 0 |
tty |
Full console UI. | ncurses or equivalent | Planned |
nuklear |
Desktop GUI. | GLFW or platform backend | Planned |
json |
Machine-readable UI output. | None | Planned |
The default is dump because it validates the full parser, code generation, and build pipeline without adding graphical dependencies.
| Target | Purpose | Status |
|---|---|---|
core-wasm |
Portable logic/runtime. | Planned |
browser-js |
Browser shell. | Planned |
tauri-desktop |
Desktop shell. | Planned |
python-service |
Backend/service integration. | Planned |
native-binary |
OS-level execution. | Planned after Phase 0 stabilisation |
embedded-firmware |
Microcontroller or embedded deployment. | Planned |
static-asset |
Layout-only output. | Planned |
The planned runtime model is a host-neutral workspace where components communicate through declared capabilities instead of direct coupling.
Lifecycle:
WCPS is the planned universal worker protocol. It uses JSON payloads over deterministic channels:
| Channel | Purpose |
|---|---|
STA |
State |
PRG |
Progress |
DAT |
Data |
DON |
Done |
ERR |
Error |
LOG |
Log |
PON |
Ping/pong or liveness |
Importers remain planned design work. They should preserve structure, state, and actions where possible while dropping framework-specific implementation detail.
| Source | Status | Intended output |
|---|---|---|
| HTML | Planned | .llux / .llux.md |
| React / JSX | Planned | .llux / .llux.md |
| SwiftUI | Planned | .llux / .llux.md |
| XAML | Planned | .llux / .llux.md |
Changes should be additive wherever possible. If a feature must be deprecated, public docs should mark it clearly and preserve older context outside the launch-facing pages.