Repository navigation
v0.18.0
What's Changed
- Reserve exit 1 for results, exit 2 for mistakes by @tobert in #444
- Add whole-program background execution for embedders by @tobert in #445
- Show the full cause chain at three error-flattening sites by @tobert in #447
- Tests assert one outcome, and a per-crate run cannot pass empty by @tobert in #450
- Streaming callers see every terminal event their result reports by @tobert in #446
- A runtime fault keeps the output that ran before it by @tobert in #448
- A job's stdout stream holds only the job's own output by @tobert in #449
- Whole-program jobs stream stdout as it is produced by @tobert in #451
- A spilled statement no longer masks a later statement's exit by @tobert in #454
- Thread the execution context through the interpreter by @tobert in #452
- Refuse the patch offsets and the node posture we accepted silently by @tobert in #455
- Keep the output a timeout or a binary refusal used to drop by @tobert in #456
- A job's status carries the facts behind its exit code by @tobert in #457
- Say which assignment failed, and stop claiming two paths are disjoint by @tobert in #458
- A plan reports the type error the runtime will refuse by @tobert in #459
- Retire the vestigial stdin parameter, and decline the JoinSet by @tobert in #460
- Record the 0.18 silent-fallback batch by @tobert in #461
- Rename allow_external_commands to allow_unwrapped_commands by @tobert in #462
- exec and spawn refuse with exit 127, like the other gated sites by @tobert in #463
- Close five gaps the 0.18 batch reviews found by @tobert in #464
- A background job's stderr streams live, from every producer by @tobert in #465
- Statement-level ! follows bash, and refuses the forms bash misreads by @tobert in #466
- Fix main's build, and run a negated body unpublished like a chain operand by @tobert in #467
- Record #462-#466 in the changelog by @tobert in #468
- A substitution's stderr comes before its command's, in every arm by @tobert in #469
- KernelBackend's default canonicalize returns absolute paths, and both defaults are tested by @tobert in #470
- Function, source, script and $() results follow one accumulator's rules by @tobert in #471
- Redirect targets open before the command runs by @tobert in #472
- Three parser residuals: a fitting example, a heredoc scanner, an enforced invariant by @tobert in #473
- Usage errors exit 2; filesystem errors name their kind once by @tobert in #474
- Stop a builtin pipeline from hanging, and let the script timeout end a busy builtin by @tobert in #475
- grep: accept -m as the short form of --max-count by @tobert in #477
- spawn runs through the kernel's shared spawner by @tobert in #476
- A bareword with == or != is one literal word: echo === parses by @tobert in #478
- A glued ! in argument position is one literal word, as in a bash script by @tobert in #481
- grep reads GNU BRE by default, as GNU grep does by @tobert in #479
- sed reads GNU BRE and awk reads gawk ERE; strict ERE follows GNU's escapes by @tobert in #482
- Record #469-#476 in the changelog, and say which stdin a redirect target's $() reads by @tobert in #480
- Update async-trait for Rust 1.99 Clippy by @tobert in #491
- Scope redirected and gathered stdin to its commands by @tobert in #487
- Restore function definitions after command substitution by @tobert in #488
- Preserve stderr from single pre-scatter stages by @tobert in #489
- Merge captured stdout before stderr under 1>&2 by @tobert in #490
- Expand only unquoted tilde prefixes written in source by @tobert in #483
- Keep child command arguments out of wrapper options by @tobert in #492
- Read caret, mid-word tilde and open ranges as literal words by @tobert in #493
- Read backslash-quoted literal words and patterns by @tobert in #494
- Read raw jq input and end structured text with a newline by @tobert in #495
- Skip special entries and bound recursive grep reads by @tobert in #496
- Expose literal plan words alongside their rendered text by @tobert in #497
- Complete supported builtin flags and keep help argument roles by @tobert in #498
- Use one JSON envelope for nonzero builtin results by @tobert in #499
- Add brace groups and compound redirects by @tobert in #500
- Name usable fixes for redirects into mount ancestors by @tobert in #501
- Return an error, not a panic, for non-ASCII RFC 3339 input by @tobert in #503
- Refuse break and continue counts below 1 by @tobert in #502
- Propagate exit out of user functions and source by @tobert in #506
- Groom the 0.18 changelog by @tobert in #507
- Keep recursive walks in one mount unless another is named by @tobert in #504
- Make -name=value, glued flag lists, +x, and ... one word each by @tobert in #505
- Report readonly as an unknown command in validation by @tobert in #509
- Refuse negative xxd -l/-s, base64 -w, diff -C, and patch -p values by @tobert in #510
- find: report unstattable entries and fail -mtime/-size on them by @tobert in #511
- Record how stdout and stderr interleave (#485, part 1) by @tobert in #512
- Trim AGENTS.md and lead it with the writing guide by @tobert in #508
- chore: bump to v0.18.0 by @tobert in #513
Full Changelog: v0.17.2...v0.18.0