Releases: anderix/lux
Releases · anderix/lux
Release list
0.8.3 - 2026-06-30
Release Notes
Changed
lux magic inputandlux magic numbernow hand back a value you can
keep. Both spells used to read inside amatchand use the answer only
within the arm, so the bound name died at the closing brace — copy the spell,
try to use the answer one line later, and lux says it isn't defined. That is
the first wall a beginner hits after reading input. Each spell now wraps the
read in a small helper —askreturns a plainstring,askNumbera plain
int, each with a sensible default when the input ends or doesn't parse — so
let name = ask("...")puts the answer in a variable you use anywhere. The
matchand both arms stay in plain sight, and the empty-or-zero default
mirrors Swift'sreadLine() ?? "". Trails grew to suit:inputis now
option · match · functions, andnumberaddsconversions.
Fixed
- Tutorial prose in
lux learn. Repaired a duplicated sentence and a
missing blank line in thestringscard, three typos (exaclty,containt,
andprogresswhereprocesswas meant), and a comma splice in the
functionscard, and tightened a fewvariable/valueslips. Also pared an
over-used "honest" back to the two places it earns — the opening thesis and
the closingbeyondnote — so it reads as a motif, not a tic.
Install luxc 0.8.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.8.3/luxc-installer.sh | shDownload luxc 0.8.3
| File | Platform | Checksum |
|---|---|---|
| luxc-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| luxc-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| luxc-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| luxc-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.8.2 - 2026-06-20
Release Notes
Added
lux magic run— the capstone spell: run another program and read back
what it said. It runs further ahead of the learn ladder than the other spells —
its trail is four topics (result,match,structs,shell) — and that's
the point: the moment a player realizes their own lux program can drive a real
command is a payoff worth reaching for before the ideas underneath are all in
place. Like every spell it already works and carries its trail home.
Install lux 0.8.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.8.2/lux-installer.sh | shDownload lux 0.8.2
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.8.1 - 2026-06-20
Release Notes
Added
- Three more spells for
lux magic. Where the first three answer the
listening question, these answer the next ones a player hits while building a
world.lux magic listcarries more than one thing — an array grown with+=,
walked with aforloop.lux magic savekeeps something so it's there next
time, writing and reading a file as the sameResultyou match.lux magic argsreads what's typed after the file name, the second way a program is told
things alongsidereadLine. Each carries its trail back intolux learn, and
every one is real lux the suite runs and translates.
Fixed
- Invalid Go from a
_-boundResultorOptionarm. Anerr(let _)or
some(let _)match arm emitted_ := err.Error()/_ := *ptr, which Go
rejects (no new variables on left side of :=). The Go backend now skips the
binding when it is_— the error or pointer is already consumed by the
== niltest — so a match that ignores its payload translates cleanly. This
also clears the same two errors fromexamples/keep.lux's Go output.
Install lux 0.8.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.8.1/lux-installer.sh | shDownload lux 0.8.1
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.8.0 - 2026-06-20
Release Notes
Added
parseIntandparseFloat— read a number out of text. Because the text
might not be a number, each hands back anOption—some(n)when it parsed,
nonewhen it did not — the same shape you alreadymatchon, so bad input is
a value you handle rather than a crash.lux learn conversions— a new topic (in thesafetylesson, next to
option) on the line between converting and parsing: a conversion is total, a
parse can fail, and folding the two together is where the crash hides.lux magic— spells for things you want to do now. Wherelux learnis a
concept ladder, magic is task-indexed ("how do I read input?"): a small program
that already works, ending with a trail to thelux learntopics that explain
it. A spell is allowed to run ahead of where you've climbed the ladder — that's
the point — and the same spell reads as plain lux once its trail is walked. The
first three answer the question a player hits the moment they want their world
to listen: reading a line, reading a number (on the newparseInt), and a
read-a-command loop. Every spell is real lux the suite runs and translates.
Changed
intandfloatare now total conversions. They convert between numbers
and pass their own type through; they no longer parse strings.int("5")was
the one operation in lux that could fail by aborting the program — a quiet
contradiction of the no-hidden-failures rule the language teaches everywhere
else. That string case now errors with a trail pointing atparseInt/
parseFloat. (This also removes a latent bug in the Go backend, where
int(aString)had emitted invalid Go.)
Install lux 0.8.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.8.0/lux-installer.sh | shDownload lux 0.8.0
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.7.2 - 2026-06-20
Release Notes
Changed
- First playtest fixes for The Little Keep. The help now heads its two columns
("command" and "what the command does") so the right-hand descriptions can't be
read as commands. The cellar's west passage and downward steps are split into
two clear sentences instead of one blurred breath, so they read as two separate
exits. And the vault now names the steps that lead back up, so a player below
knowsupreturns.
Install lux 0.7.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.7.2/lux-installer.sh | shDownload lux 0.7.2
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.7.1 - 2026-06-20
Release Notes
Added
- The secret is now earned, not handed over. Reaching the chamber behind the
locked door — the reward for solving the keep — is where the world reveals that
it is a program you can read and change. The scaffolded scroll shrinks to just
how to play. - A keepsake on disk. Reaching the chamber writes the secret to
the-secret.txt, so it's there after you quit. To decide whether to write it,
the keep reads the file first, so it writes only once and never clobbers a copy
you've started editing — read-then-write, the honest shape of file I/O, so the
chamber teachesreadFileandwriteFiletogether. - A hidden
take goldin the lit vault rewards the obvious impulse and nudges
that you can add a command of your own the same way — it was never in the help,
just a line in the file.
Changed
lux crawl's summary now leads withcdinto the new folder, so its paths and
the scroll agree on where you're standing; the help columns line up; and the
world's header points atworld.lux, the name the scaffolded file actually has.
Install lux 0.7.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.7.1/lux-installer.sh | shDownload lux 0.7.1
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.7.0 - 2026-06-19
Release Notes
Added
lux crawl— scaffolds a small, playable text adventure into the current
directory and tells you how to play and edit it. The whole world is one lux
file (world.lux): the rooms are an enum, where you stand and what you carry
is a struct, and a turn is a function that takes the world and your command and
returns the next one. You play it by running it and change it by editing it —
the first step toward building your own. Runninglux crawlover a crawl you
already started reports where it is instead of overwriting it.lux learn crawl— a new topic (and abuildlesson) on how a world is
put together, with thestep(world, command) -> worldidea on itsmorepage.examples/keep.lux— "The Little Keep," the worldlux crawlscaffolds: a
brass key behind a locked door, a torch that lights a dark vault, an inventory
that grows. Built on today's language on purpose — exact-match commands and all.
Changed
- Reserved-word collisions in the transpilers are now handled. A lux name
that is a keyword in a target language (go,where,map, …) gets a trailing
_in that backend only, at value positions — function names, parameters, and
locals — so a program that uses such a name still compiles. Type names, struct
fields, and enum cases are left as written (a documented edge). - A payload-less enum case used in a comparison now parenthesises in Go
((RoomHall{})), soroom == Room.hallno longer trips Go's block-vs-literal
parse inside anif. - Documented the remaining transpiler edges (Go's
Option<enum>and empty-array
literal, Rust's value-after-move) in learn-lux.md's scope notes, as honest
boundaries rather than worked around.
Install lux 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.7.0/lux-installer.sh | shDownload lux 0.7.0
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.6.0 - 2026-06-19
Release Notes
Added
- Errors that open trails. A diagnostic can now end with a
help:line that
points at thelux learntopic behind the mistake, each carrying a one-line
lure — a hint at why the idea is worth following — so an error becomes a
doorway into the reference instead of a dead end. The error sites that sit on a
concept now carry one; self-evident fixes deliberately do not, so the trails
stay signal rather than noise. lux learn errors— a new topic, the first card in thestartlesson, on
reading what lux says back: the message, the caret, thenote:, and the
help:trail. It frames hitting an error as a normal part of writing a
program, something you read and answer, not a failure.lux learn beyond— a closing page, and the last note oflux learn tour,
on what carries past lux once it is outgrown: the handful of thinking moves
underneath the syntax, and that you can build your own tools instead of only
using the ones handed to you. The human companion to thebasicsskeleton and
the graduation ladder.
Changed
- The
help:line now reads`lux learn <topic>` — <why>rather than the
older "run ... to read about this": an invitation to follow a trail instead of
an instruction to go read. - Reworded the "not a parameterized type" note to drop the jargon "type
parameters" for "a type in angle brackets, likeOption<int>".
Install lux 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.6.0/lux-installer.sh | shDownload lux 0.6.0
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.5.0 - 2026-06-18
Release Notes
Added
- Running other programs.
run(program, [args])launches a command and
captures what it produced, returningResult<Output, string>.Outputis the
first built-in struct lux hands to a program —status,stdout, andstderr,
read by name. Failure comes in two layers, both in plain sight: theResult
says whether the command launched (a missing program is theerrarm), and
thestatusinside says whether it succeeded (a command can launch fine and
still report failure with a non-zero code, the wayfalsedoes). The arguments
are a list, never a shell string, so there is no shell in the middle to misread
a space or a quote, and nothing to inject. The child's input is empty; feeding
a program its input is left out on purpose, a lesson for a bigger language. lux learn shell— a topic card andmorepage on running other programs,
added as the capstone of thesafetyguided lesson, with a new row in the
graduation ladder. Themorepage names the one honest limit:runis batch
capture, not a live pipe.
Changed
runtranslates through every backend: Rust'sstd::process::Command, Go's
os/execwith abytes.Bufferper stream, and Swift'sFoundationProcess
reached through/usr/bin/envso a bare program name gets the samePATH
lookup it does everywhere else.
Install lux 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.5.0/lux-installer.sh | shDownload lux 0.5.0
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.0 - 2026-06-18
Release Notes
Added
- The outside world: basic I/O. Five builtins for reading and writing the
world beyond the program, each one fallible the same way lux already teaches.
readFile(path)returnsResult<string, string>andwriteFile(path, contents)returnsResult<Unit, string>, so a missing file or a failed write
comes back as a value youmatch, never a surprise.args()returns the
command line as[string], the program itself at index 0.readLine()returns
Option<string>— a line, ornoneat the end of input — so a loop over it
reads the same whether a person is typing or a file is piped in.eprint(...)
writes to stderr, beside the existingprinton stdout, so a program's output
stays clean for the next program to read. Unitis now a spellable, matchable type.writeFile's success carries
nothing, so its type isResult<Unit, string>;Unitvalidates as a type name
and a value still prints asnothing.lux learn io— a new topic card andmorepage covering the outside
world, added as the capstone of thesafetyguided lesson, with new rows in
the graduation ladder.
Changed
- All five I/O builtins translate through every backend: Rust's
std::fs/
std::env/eprintln!, Go'sospackage handing back its(value, error)
pairs, and Swift'sFoundationwith its throwing file calls and native
readLine(). Generated Go now lowers aResultmatch to anif-init
(if text, err := readFile(p); err == nil), so two reads in one block no
longer collide on their names — also the more idiomatic Go.
Install lux 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/anderix/lux/releases/download/v0.4.0/lux-installer.sh | shDownload lux 0.4.0
| File | Platform | Checksum |
|---|---|---|
| lux-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| lux-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| lux-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| lux-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |