Skip to content

wick 0.2 — Release notes

2026-07-14

This is the first formal “point” release note for wick as a language surface inside lantern engine=0.7. Versioning is still pre-1.0; the number is for humans and changelogs, not a stability promise.

Highlights

  1. Records — record Name { field: type, ... }, construction, field access, list<record>.
  2. Store-grade path sandbox — loads cannot escape the game directory.
  3. Nested .lant packages — assets/foo.bmp works end-to-end.
  4. Package-mode screenshot confinement.
  5. KORA as a wick flagship exercising all of the above.

Language

Added

record Prop {
  slot: num
  x: num
  y: num
  w: num
  h: num
}

let p = Prop { slot: 0, x: 1, y: 2, w: 8, h: 8 }
p.x = p.x + 1

let props: list<Prop> = []
push(props, p)
props[0].y = 10

Unchanged (deliberately)

  • Optionals, locals-only, no truthiness, typed lt.*
  • No closures, modules, string indexing, nested containers
  • No JIT

Host / packaging

  • path_sandbox on all load natives (wick + Lua)
  • Recursive lantern_pack; nested names in the archive format
  • Package mode flags screenshot writes
  • Tests: path_sandbox_test.sh, extended wick_test.sh, package identity tests, KORA kitchen shot test

Compatibility

  • Existing wick games that stay on parallel lists keep working.
  • Flat .lant packages keep working.
  • Games that relied on path escape (none should) break by design.

Upgrade notes for authors

  1. Prefer record when a table grows past two parallel lists.
  2. Keep assets under the game folder; use relative paths only.
  3. For CI scene force on KORA: KORA_SCENE=3 also skips title/prologue.
  4. Read Admitting records and Store safety.

Full changelog

CHANGELOG.md in the lantern repository.