Release Notes
Added
- Running other programs.
run(program, [args]) launches a command and
captures what it produced, returning Result<Output, string>. Output is the
first built-in struct lux hands to a program — status, stdout, and stderr,
read by name. Failure comes in two layers, both in plain sight: the Result
says whether the command launched (a missing program is the err arm), and
the status inside says whether it succeeded (a command can launch fine and
still report failure with a non-zero code, the way false does). 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 and more page on running other programs,
added as the capstone of the safety guided lesson, with a new row in the
graduation ladder. The more page names the one honest limit: run is batch
capture, not a live pipe.
Changed
run translates through every backend: Rust's std::process::Command, Go's
os/exec with a bytes.Buffer per stream, and Swift's Foundation Process
reached through /usr/bin/env so a bare program name gets the same PATH
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 | sh
Download lux 0.5.0