brush v0.2.19
·
278 commits
to main
since this release
🚀 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_VERSIONvariable to distinguish versions ofbrushfrom the version ofbashit targets compatibility with. (Thanks to @kachick for proposing and implementing this one.) - API adjustments to script parsing in
brush-corefor 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
printfbuiltin using theuucorecrate from the Rust coreutils project. - Added support for
>&-,>&N-, and otherbash-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
brushwhen commands are piped tostdin. (Thanks to @andychu for catching and reporting this.)
Other shout-outs:
- Big shout-out to @andychu for onboarding
brushto 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
\Aby @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
- @hwittenborn made their first contribution in #509
Full Changelog: brush-shell-v0.2.18...brush-shell-v0.2.19