Welcome to the wick blog¶
2026-07-14
wick is the lantern engine's own scripting language: about two thousand lines of C++ you can read in an afternoon, zero dependencies, zlib license. This blog is where we write down why the language changes — the same function the Go blog serves for Go: permanent design memory, not launch-week hype.
What wick is for¶
Games on lantern are folders with main.wick (or main.lua for local
dev). The engine calls update(dt) and draw() at 60 fps against a fixed
400×240 software framebuffer. wick is the native tongue of that loop:
- small enough that a whole game fits in one file and one head
- strict enough that the bug classes that burned us in Lua don't compile
- safe enough that a store package has no filesystem or network exits
beyond typed
lt.*natives
It is not a general-purpose language. It will never chase Python or JavaScript. Feature-parity with other languages is explicitly not a reason to grow.
The constitution¶
From the ledger:
A feature enters the language only when real game code demonstrably hurt without it.
Optionals entered because an empty save file crashed a shipped frame. Records entered because KORA's kitchen props became five parallel lists. String indexing has not entered: baking maps offline is still clean.
If you want a feature, bring a scar — a path in a real game, a failing pattern, a comparison to the workaround. We will publish the decision here.
Where to go next¶
- Getting started
- Release notes for 0.2
- Why optionals
- Source:
wick/in the lantern repo