Skip to content

brush v0.2.19

Choose a tag to compare

@reubeno reubeno released this 25 Jun 16:02
· 278 commits to main since this release
ecde5de

🚀 Release Notes

This release included a batch of compatibility fixes, ergonomics improvements to the API surfaces of brush-core and brush-parser crates, and some targeted performance improvements.

Notable features:

  • Add BRUSH_VERSION variable to distinguish versions of brush from the version of bash it targets compatibility with. (Thanks to @kachick for proposing and implementing this one.)
  • API adjustments to script parsing in brush-core for ergonomics. (Thanks to @hwittenborn for contributing this.)
  • Initial (non-translating) support for gettext quoted strings. (Thanks to @Elsie19 for identifying this gap and merging in an initial implementation.)
  • Overhaul of printf builtin using the uucore crate from the Rust coreutils project.
  • Added support for >&-, >&N-, and other bash-extended redirection forms.

Highlighted fixes:

  • Correct handling of escape sequences in ANSI-C strings.
  • Handle here documents terminated by EOF (Thanks to @mati865 for reporting this.)
  • Fix behavior of brush when commands are piped to stdin. (Thanks to @andychu for catching and reporting this.)

Other shout-outs:

  • Big shout-out to @andychu for onboarding brush to the Oils project's cross-shell compatibility testing! More discussion of this can be found here.

🗒️ Details

  • fix(typeset): mark typeset as a declaration builtin by @reubeno in #517
  • fix(tokenizer): correctly treat $( (...) ) as a cmd substitution by @reubeno in #521
  • feat(AndOrList): add iteration abilities by @Elsie19 in #512
  • build(deps): bump the cargo group with 3 updates by @dependabot in #522
  • fix(backquote): correct backslash handling by @reubeno in #524
  • fix(test): reuse -ef, -nt, -ot support by @reubeno in #525
  • fix(vars): ensure effective GID is first in GROUPS by @reubeno in #526
  • fix(arithmetic): permit space after unary operator by @reubeno in #527
  • feat(vars): implement correct updating for -u/-c/-l vars by @reubeno in #529
  • ci: hash-pin actions + explicitly constrain token needs by @reubeno in #532
  • feat(env): introduce brush specific variable by @kachick in #531
  • ci: clean up ci report workflow by @reubeno in #533
  • ci: enable checks against workflow yaml by @reubeno in #534
  • ci: fix pedantic warnings from newer zizmor release by @reubeno in #535
  • feat: enable cargo-binstall to work with brush by @reubeno in #536
  • test: work-in-progress script to run bash test suite by @reubeno in #537
  • build(deps): bump pprof from 0.14.0 to 0.15.0 in the cargo group by @dependabot in #542
  • ci: run cd workflow in dry-run mode on PR by @reubeno in #543
  • build(deps): bump the github-actions group with 2 updates by @dependabot in #541
  • test(parser): enable serde::Serialize on AST et al. for test targets by @reubeno in #544
  • Allow reading a script from bytes by @hwittenborn in #509
  • test(parser): start using insta crate for snapshot-testing parser by @reubeno in #545
  • Add ability to clear all functions from shell environment by @hwittenborn in #546
  • build(deps): bump the github-actions group with 3 updates by @dependabot in #549
  • test(tokenizer): adopt insta for tokenizer tests by @reubeno in #550
  • feat(parser): add gettext enabled quotes by @Elsie19 in #446
  • fix(tokenizer): correctly handle here docs terminated by EOF by @reubeno in #551
  • chore: upgrade MSRV to 1.85.0 by @reubeno in #553
  • chore: upgrade crates to Rust 2024 edition by @reubeno in #554
  • feat(printf): replace printf impl with uucore wrapper by @reubeno in #552
  • chore: enable more lints + fixes by @reubeno in #555
  • fix(interactive): fix behavior of cmds piped to stdin by @reubeno in #539
  • chore: upgrade dependencies by @reubeno in #556
  • chore: update resolver version in Cargo.toml by @reubeno in #557
  • fix(traps): add stub definition for RETURN trap by @reubeno in #559
  • fix(functions): allow func names to contain slashes by @reubeno in #560
  • fix(tokenizer): handle escaped single-quote in ANSI-C quoted string by @reubeno in #561
  • fix(arithmetic): correct left shift handling by @reubeno in #562
  • build(deps): bump the github-actions group with 4 updates by @dependabot in #564
  • fix(local): enable use of local to detect function by @reubeno in #565
  • fix(expansion): handle signed numbers in ranges by @reubeno in #566
  • fix(redirection): assorted fixes to redirection by @reubeno in #567
  • fix(prompt): implement \A by @reubeno in #569
  • feat(args): add --rcfile command-line option by @reubeno in #568
  • fix(expansion): correct ${!PARAM@...} by @reubeno in #570
  • fix(ci): upgrade taiki-e/install-action to v2.53.2 to resolve build issue by @reubeno in #572
  • fix(expansion): fix parsing escaped single-quotes in ANSI-C strs by @reubeno in #571
  • perf: remove redundant lookups in path searching by @reubeno in #573
  • Abstract parse errors by @lu-zero in #574
  • build(deps): bump the github-actions group with 4 updates by @dependabot in #577
  • fix(for/case): allow reserved words in for word lists by @reubeno in #578
  • chore: prepare release by @reubeno in #579

New Contributors

Full Changelog: brush-shell-v0.2.18...brush-shell-v0.2.19