Roadmap

Loft is under active development. Every code example on the language pages is executed by the test suite on both backends, so what they show runs today. This page describes where the project is headed.

The project goal is browser games that anyone can play via a shared link. Native OpenGL is supported for desktop enthusiasts. Server and multiplayer features come after the single-player browser experience works.

Since 2026-06 loft ships on a calendar version: a release is named for its month, which Cargo.toml spells 2026.6.0, 2026.7.0, 2026.8.0 — loft --version prints the one you have. The semver milestones below were the plan before that switch; the two numbered ones have shipped, and 1.0.0 is still the name of the finish line rather than a month.

ReleaseHeadlineStatus
0.8.4Awesome Brick Buster — a game worth sharingshipped 2026-04-24
0.8.5Language maturityshipped 2026-06-07
2026-06 … 2026-10Monthly releasescurrent
1.0.0Totally sure everything works — IDE + multiplayer + stability contractthe finish line

0.8.4 (shipped 2026-04-24): Awesome Brick Buster

0.8.4 turns Brick Buster from a tech demo into a game someone would actually want to share with a friend, and makes sharing trivial via single-file HTML export.

Game polish

Single-file HTML export

Compile any loft program to a self-contained .html file that runs in any browser — no install, no server.

$ loft --html app.loft

The game's WebAssembly, textures, and audio are all embedded. Host the file anywhere, send someone the URL, they play.

Infrastructure

0.8.5 (shipped 2026-06-07): Language maturity

The language itself got solid: closures hold a live reference to what they capture, bounded generics carry their types through methods and tuples, and native compilation went to production.

Working Moros editor

The Moros hex RPG scene editor runs end-to-end in the browser: load a map, paint hexes, place walls and items, see a live 3D preview, export to GLB. Web only — multiplayer comes in 1.0.0.

0.9.0 — Fully working loft language

The language itself becomes feature-complete, well-documented, and tooling-friendly; every item below has shipped in the monthly releases. No "appears fixed but unverified" bugs. Anyone can write loft code in their preferred editor with syntax highlighting, decent error messages, and a REPL for experimentation.

Language polish

Compilation cache

The parsed standard library and program are cached under .loft/ and restored on the next run, alongside the shared constant store — shipped.

Developer experience

Packaging and FFI

1.0.0 — Totally sure everything works

The stability contract. Anyone can write, run, and share a program — terminal or browser — and trust that it will keep working.

Web IDE

A browser-based IDE running the full loft interpreter as WebAssembly — no installation, no server.

Scene scripting

The Moros scene editor gains a loft scripting panel with in-browser compile and hot reload. Scene scripts are sandboxed, travel with the scene JSON, and can be shared alongside the map.

Multiplayer

Stability contract

Version 1.0 means: any program that works on 1.0 will compile and run identically on all future 1.x releases. The language syntax, type system, standard library, and command-line flags are frozen. Until then, what a released version promises is kept, and a breaking change needs a documented reason and a migration.

Tagging 1.0 requires every stability gate to be satisfied without shortcuts: zero open high-severity bugs, valgrind-clean debug builds of the full Brick Buster and tuple tests, green CI on Linux, macOS Intel, macOS ARM, and Windows, pre-built binaries on the GitHub release, and the reference + PDF linked from the release page.

1.1 and beyond

Post-1.0 items include route decorators (@get / @post / @ws), iterator protocol (for msg in ws), interface factory methods, lazy work-variable initialisation, stack raw-pointer cache, and additional native codegen optimisations. Browser-side par() on Web Workers (loft --html --threads) and the spatial<T> collection have already shipped.

Following progress

Development is tracked in the GitHub repository. The full internal roadmap with effort estimates, dependencies, and design pointers is in the repository's doc/claude/ROADMAP.md.