Introducing Stasis Lang
I'm excited to announce Stasis Lang, an experimental programming language and toolchain focused on deterministic, game-style programs.
What is Stasis?
Stasis is a language built around a few ideas that work well for games and simulations:
- Static global memory with no hidden allocations
- Predictable layouts with stable field offsets and array layouts
- A simple game loop model:
main()runs once, thentick()+render()run each frame - Fast edit-compile-run loops via in-process JIT and hot swap during development
The philosophy is straightforward: the same inputs should produce the same outputs, state should be explicit, and there should be no hidden work on the hot path.
Advantages for Game Dev
Deterministic simulation. Stasis uses a tick-based, fixed-step model. The same inputs always produce the same outputs, which is critical for replays, debugging, and lockstep-style multiplayer (think Age of Empires II).
Predictable performance. Static global memory means no garbage collection pauses, no surprise allocations during your tick. You know exactly what happens each frame.
Fast iteration. Stasis compiles to machine code via Cranelift JIT in-process. File changes are compiled in the background and hot-swapped between ticks. You see your changes immediately without restarting, and there's an on_code_swap() hook to fix up invariants after a swap.
Data-oriented by design. Structures are lowered to SoA (Structure of Arrays) layouts for better cache locality and SIMD-friendly access patterns.
Simple and debuggable. Inspired by Handmade Hero's emphasis on straightforward, data-oriented game code with no hidden complexity.
Where It Stands Now
Stasis is experimental and fast-moving. Expect breaking changes. Here's the current state:
- The JIT-based dev workflow (
playwith watch and hot swap) works on Windows - The test runner works cross-platform via JIT
- AOT compilation for production builds is work in progress
- A full game sample (Brickout Revenge) is included in the repo
- Nightly releases are published from
main
Disadvantages to Be Aware Of
- Experimental: not yet production-ready for shipping titles
- Static memory only: games must pre-allocate memory upfront (no dynamic allocation on the hot path)
- Windows-focused: the
playdev runner currently targets Windows for graphics runtime integration - Limited ecosystem: as a new language, there isn't a library ecosystem yet
- Early-stage compiler: the rewrite V1 is actively being developed
Licensing
Stasis uses a Revenue-Threshold Commercial License. It's free for internal use and projects with under $10,000 in annual revenue. Above that threshold, there's a 1% revenue share on gross revenue from products that use Stasis.
Try It Out
Check out the GitHub repo and grab a nightly release from the releases page.
Ben
