Skip to content

Limits & the feature ledger

The governing principle: wick contains only what we truly need — nothing for the sake of having it. A feature is admitted when real game code demonstrably hurt without it, and not before. Side-by-side games (Lantern Night Lua vs wick; KORA on lantern) are the evidence mechanism.

Feature evidence ledger

Candidate Evidence Status
Records / structs KORA kitchen: five parallel prop lists Admitted — flat record, list<record>
Bits / byte and word wrapping Processor-building game and Bit Lab Admitted (0.3) — checked functions and hex/binary literals
String indexing / iteration ASCII maps baked offline for KORA Recorded — baking is clean
Closures / first-class fns none yet Candidate
Nested containers rare Candidate
Multi-file modules single main.wick still fine Candidate
Branded handles (tex/snd) store third parties Candidate
Methods / classes — Not a goal

Current limits (honest table)

Not yet Workaround today
Closures, nested & first-class functions top-level fn + globals
Multiple return values two functions, or out-of-band state
Nested containers (list<list<num>>) index arithmetic on a flat list
Modules / imports (one main.wick) game script + baker for data
for x in list iteration for i in 0..len(xs)
String indexing/slicing/methods len, +, str(); bake maps offline
Record fields that are records/lists parallel lists or flat ids
Exhaustive return-path checking don't fall off a typed function
Narrowing for globals / and-chains ??, or copy to a local first
Exponent number literals decimal (hex/binary available since 0.3)

Choices that are not limits

  • No JIT — iOS-legal by construction; specialized bytecode from static types.
  • Deterministic rand() — seed with srand when you want variety.
  • Path sandbox — loads cannot escape the game directory; not a language limit, a host guarantee for the store.