Sigil 0.22.15

release

A bug-fix release for closures and long-running programs. Capturing a conditional internal definition no longer breaks a closure, pipe readers keep moving on Linux static builds and Android, and short file reads no longer leave the garbage collector's allocation totals growing.

Download 0.22.15Get started

Conditional definitions and closures

An internal define inside when, unless, if, or cond could fail with "GET_CELL: expected upvalue cell" when a lambda captured its binding. The binding now gets its cell before either branch runs, and redefining it updates the same cell so existing closures see the new value. Initializers still run only when their branch runs.

The sigil/lint tool now warns about this pattern. It works, but an explicit let binding or a definition before the conditional is easier to follow.

Fixes