The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
All notable changes to this project will be documented in this file.
- (parser) Add official
serdefeature tobrush-parserfor AST serialization (#783) - (parser) [breaking] Replace ParsingNearToken with ParsingNear (#1022)
- Introduce notion of marking errors as fatal (#770)
- Expose key bindings for hint acceptance (#802)
- Add 'serde' feature to
brush-core(#831) - Enable using word expander without command substs (#877)
- Enable session leading config (#904)
- Implement \l sequence in prompt expansion (#913)
- (windows) Various path fixes for windows platform (#1075)
- Implement fatal error propagation (#773)
- Implement
set -usemantics (#774) - Source tracking improvements (#805)
- Support asynchronous builtin execution (#810)
- (builtins) Implement caller builtin (#812)
- Implement "compgen -A binding" (#814)
- Emulate
execin subshell (#823) - Experimental builtin for serializing full shell state (#835)
- Expand tilde expansion support (#842)
- Implement
set -e(a.k.a.errexit) +pipefailsemantics (#852) - Experimental shell/terminal integration (#872)
- (hooks) Experimental
zsh-style preexec/precmd hooks (#652) - Rudimentary readline macro support (#880)
- Optional TOML-based config file for brush-shell (#895)
- (read) Fill out more of
readbuiltin (#914) - Add convenience cmd line option to set up xtrace (#915)
- Scaffolding for winnow parser (#974)
- (completion) Implement COMP_KEY and COMP_TYPE (#1008)
- (options) Implement failglob option (#1011)
- (well-known-vars) Implement BASH_ARGC and BASH_ARGV variables (#1013)
- (getopts) Implement OPTERR semantics (#1048)
- (mapfile) Add
-Oflag (#558) - Add coproc AST and placeholder execution (#1029)
- (trap) Implement ERR trap (#1020)
- (windows) Add compat /dev/null handling (#1044)
- (coproc) Implement coprocs (#1068)
- Implement $_ well-known variable for last command argument (#1030)
- Add optional bundling of coreutils builtins behind experimental feature flag (#1031)
- Fill in more SourceLocation implementations (#804)
- Correct parsing of escaped backslash in ANSI-C quotes (#850)
- Bang formatted without space leads to invalid command (#1109)
- Avoid allocating in
pre_execclosure (#777) - Improve "compgen -A {user,group}" (#815)
- Correct completion word tokenizing (#816)
- Honor mark-directories option (#817)
- Correct scope mismatch on error (#821)
- Suppress color when help is redirected (#822)
- History import robustness (#878)
- Avoid some allocation in brace-expansion (#884)
- Eliminate unneeded clone (#886)
- More direct Intos (#946)
- Remove ref-options (#952)
- Don't clobber builtin usage error if error display fails (#965)
- Use std::env::{split_paths, join_paths} for
PATHsplitting/combining (#968) - Handle more readline macro forms (#967)
- Build for freebsd (#980)
- (commands) Use async pipe reads for command substitution
- Do not panic on file clone failure (#1051)
- (wasm) Avoid panic in split_paths on wasm (#1064)
- (android) Address android and 32-bit build issues (#1070)
- Address hang on macos when used as login shell (#1095)
- (windows) Fix /dev/null handling (#1104)
- Expose -c flag via $- (#767)
- Don't allow builtin to invoke disabled builtin (#719)
- Getopts with no provided args (#796)
- Preserve $? during interactive shell prompt expansion (#798)
- Correct initialization of SHELL var (#800)
- Correct exit status handling in assignment-only cmds (#801)
- Extended test redirection (#811)
- Negative substring offsets (#818)
- Do not tilde-expand prompts (#819)
- Escaping in pattern character sets (#824)
- Special-casing for OLDPWD (#825)
- Omit unset vars from
setbuiltin output (#826) - Getopts short options (#827)
- Update default of COMP_WORDBREAKS (#828)
- Disable reedline for cmd mode / script exec (#845)
- Correct trace depth computation (#847)
- Assorted ANSI-C quote compat fixes (#851)
- True and false must ignore all args (#865)
- Gracefully handle closed stdout (#873)
- Gracefully handle closed stderr (#875)
- Delay profile/rc loading until after input backend attached (#879)
- (completion) Properly escape filenames with spaces or special chars (#870)
- (unset) Allow unsetting non-standard names (#893)
- (test) Correct handling of -- and invalid test exprs (#894)
- Reenable a few tests (#896)
- Handle redir form:
>&PATH (#908) - Compat fixes for [ and ] in prompt expansion (#909)
- Parsing array accesses in array indices (#910)
- Add missing assignment arithmetic operators (|=, ^=) (#911)
- Correct overzealous regex escaping (#912)
- Systematic removal of problematic .unwrap() calls (#921)
- (builtins) Shadowing special builtins with funcs (#922)
- (hash) Accept names with slashes without lookup or error (#924)
- Ignore errors in -x tracing (#928)
- Trim space in test comparisons (#950)
- Exit status in command arg expansion failure (#951)
- Correctly handle pipe errors in builtins (#953)
- (completion) Provide default fallback completion for shell vars (#954)
- (extglob) Handle escaped parens (#960)
- (patterns) Correct backslash preservation (#963)
- (return) Exit code when stderr is not writable (#975)
- Check func names against reserved words (#978)
- (test) Resolve bash to absolute path before running compat tests (#994)
- (pathsearch) Include symlink'd executables in search (#991) (#992)
- Readonly should operate on global scope (#1003)
- (peg) Support legacy $[expr] arithmetic syntax (#1004)
- (arrays) Add set + unset support for negative array indices (#1005)
- (expansion) Allow ${#arr[i]} on unset variables with set -u (#1007)
- (bind) Silently succeed when key bindings unavailable (#1009)
- (compgen) Disable pathname expansion for -W word list (#1010)
- (completion) Only deduplicate completions in interactive presentation (#1012)
- (trap) - with multiple signals should clear all handlers (#1015)
- (heredoc) Preserve quotes in heredoc expansion (rebased) (#1014)
- (arithmetic) Allow space around prefix arithmetic operators (#1016)
- (arithmetic) More faithful overflow/underflow handling (#1017)
- (arithmetic-for) Correct parsing + eval issues (#1018)
- (arithmetic) Implement high-radix literals (#1019)
- (printf) Quote empty strings as '' in printf %q (#1026)
- (expansion) Correct descending brace sequence expansion with step (#1025)
- (builtins) Add builtin commands to
compgen -A command(#997) (#1027) - (expansion) Preserve quoted empty strings with nullglob enabled (#1035)
- (command_subst) Strip NULL bytes from command substitutions (#1049)
- Return 2 for unknown cmdline options (#1050)
- (complete) Complete current and parent directories. (#887)
- (arithmetic) Detect infinite arithmetic var reference recursion (#1021)
- (tokenizer) Prioritize heredoc body over terminating char in
next_token_until(#1055) - (tokenizer) Unquote heredoc end tag in
delimit_current_token(#1056) (#1057) - Use i64 for exit (#1065)
- (heredoc) Handle unbalanced single quotes and backticks in heredoc bodies inside
$(…)(#1067) - (cmdline) Handle
--as option terminator for-cflag (#1076) - (login) Correctly reflect login option via shopt (#1078)
- (-c) Call EXIT traps on exit; add tests (#1080)
- (builtins) Add reserved keywords to
compgen -A command(#1047) - (-f) Implement -f command line option (#1091)
- (parser) Preserve whitespace in regex operands of extended tests (#1096)
- (wellknownvars) Set OSTYPE on macOS (#1097)
- Reexport parser types (#784)
- Reorganize existing PEG parser (#899)
- Split shell.rs => shell/*.rs (#945)
- Use let chains (#982)
- Make
try_iter_open_fdsfully iterator-based (#1001) - Rename TokenLocation -> SourceSpan (#788)
- Merge func call and script stacks (#789)
- Merge brushinfo and brushctl (#813)
- Shell / interactive-shell layering (#832)
- Make Shell fields private (#900)
- Extract build/test/validate commands into
xtask(#898) - Reuse test harness for non-oracle tests (#916)
- [breaking] Make
Shellgeneric overShellExtensionstype param (#941)
- Update todo comments (#787)
- Update readme (#853)
- Update readme (#976)
- Minor updates (#1061)
- Update compat tables (#1062)
- Update header image on readme (#1113)
- Update reference docs (#1114)
- Assorted performance changes (#936)
- Prealloc capacity for some vectors, remove unnecessary Strings (#940)
- Address regex cache contention (#1043)
- (parser) Per syntax element tests (#938)
- Add error handling tests, resolve nextest issue (#768)
- Extend IFS tests (#775)
- Add not-yet-passing call-stack/
callertests (#785) - Skip confused test (#820)
- Refactor + augment expansion test cases (#846)
- More tests for traps and related options (#947)
- Add mkosi config (#1093)
- Add basic wasm32-wasip2 tests to CI (#1098)
- (nameref) Add large set of nameref-focused tests (#1102)
- Temporarily disable flaky test (#1103)
- Rename feature: fuzz-testing => arbitrary (#844)
- Switch non-Unix plats to use std::env::home_dir (#830)
- Update dependencies (#985)
- (clippy) Fix nightly lints (#998)
- Enable windows tests (#1083)
- Replace git expectrl dependency with v0.8.0 release (#779)
- Workflow sync + cleanup (#790)
- Upgrade several dependencies (#843)
- Add placeholders for new named options (not yet supported) (#848)
- Remove pprof dependency (#891)
- Update dependencies (#892)
- Update dependencies (#923)
- Upgrade deps (#942)
- Update dependencies (#966)
- Update dependencies (#977)
- Upgrade MSRV to 1.88 and update deps (#981)
- Upgrade dependencies (#1063)
- Address clippy error in xtask (#1108)
- (deps) Bump utf8-chars from 3.0.5 to 3.0.6 in the cargo group (#781)
- (deps) Bump the cargo group with 2 updates (#807)
- (deps) Bump the cargo group with 3 updates (#836)
- (deps) Bump uuid from 1.18.1 to 1.19.0 in the cargo group (#840)
- (deps) Bump the cargo group with 3 updates (#882)
- (deps) Bump the cargo group with 3 updates (#925)
- (deps) Bump thiserror from 2.0.17 to 2.0.18 in the cargo group (#961)
- (deps) Bump the cargo group with 8 updates (#1024)
- (deps) Bump the cargo group with 4 updates (#1032)
- (deps) Bump the cargo group with 6 updates (#1041)
- (deps) Bump the cargo group with 7 updates (#1059)
- (deps) Bump the cargo group with 4 updates (#1081)
- (deps) Bump the cargo group with 4 updates (#1088)
- (deps) Bump the cargo group with 5 updates (#1112)
- Add ShellBuilder, ParserBuilder (#651)
- [breaking] Refactor SourcePosition to use Arc (#727)
- (bind) Extend key binding support (#740)
- Enable custom error formatting (#722)
- [breaking] Introduce SourceLocation (#728)
- Implement fc builtin (#739)
- Implement alternate arithmetic for syntax (#744)
- Implement BASH_XTRACEFD (#747)
- Revisit how ExecutionParameters layer open files atop the Shell (#749)
- Basic support for trap EXIT (#750)
- Implement opt-in fd inheritance from host env (#753)
- Workaround error on nightly (#711)
- Comment unsafe blocks + better harden 1 block (#733)
- Don't fail importing unreadable history lines (#710)
- Tokenizer handling of here docs in quoted command substitutions (#716)
- Address lint errors from stable + nightly (#723)
- (builtins) Correct
readvar update on empty input (#729) - Address race conditions in basic input tests (#730)
- Do not pass along exported-but-unset vars (#732)
- (builtins) Suppress error when type -p sees no command (#745)
- Command substitutions with large output (#748)
- Expansion in select double-quoted parameter exprs (#751)
- Correct expansion behavior in prompts (#756)
- Escaping and pipeline parse issues (#762)
- Use
Shellbuilder pattern in more code (#688) - Os_pipe::pipe() -> std::io::pipe() (#695)
- Extract script + function call stacks to their own modules (#709)
- Update Shell::new() to take creation options as owned (#689)
- Move builtins into their own crate (#690)
- Shell struct API improvements (#692)
- Error/result type overhaul (#720)
- Move more platform-specific code under sys (#735)
- Update readme (#742)
- Add not-yet-passing tests for set -u and set -e (#736)
- Add new command substitution test case (#752)
- Run static code checks on linux + macOS too (#678)
- Fix build error with cargo nightly (#687)
- (msrv) [breaking] Upgrade MSRV to 1.87.0 (#693)
- Fix benchmark execution (#691)
- Update dependencies (#696)
- Update dependencies (#757)
- Add brush crate + docs publishing (#760)
- (deps) Bump procfs from 0.17.0 to 0.18.0 in the cargo group across 1 directory (#671)
- (deps) Bump bon from 3.7.2 to 3.8.0 in the cargo group (#698)
- (deps) Bump the cargo group with 4 updates (#676)
- (deps) Bump serde from 1.0.221 to 1.0.223 in the cargo group (#680)
- (deps) Bump the cargo group with 5 updates (#684)
- (deps) Bump the cargo group with 3 updates (#686)
- (deps) Bump the cargo group with 5 updates (#708)
- (deps) Bump the cargo group with 8 updates (#713)
- (deps) Bump the cargo group with 3 updates (#755)
- (cmdline) Correct exit code for
--version+--help(#667)
- (diag) Add minimal miette support to parser (#648)
- Exclude bind-bound commands from history (#650)
- (cmdline) Improve error handling for unknown cmdline options (#656)
- Update readme (#657)
- (deps) Bump the cargo group with 4 updates (#654)
- (deps) Bump the cargo group with 4 updates (#659)
- (deps) Bump tracing-subscriber from 0.3.19 to 0.3.20 in the cargo group (#664)
- (history) Implement history builtin (#599)
- (parser) Resolve issue with parser confusing subshell for arith expr (#624)
- (expansion) Support broader set of nested brace expansions (#625)
- Correct obvious string indexing errors (#641)
- Fixes for preexec-style bash extensions (#643)
- Prepare tests to run against bash-5.3 (#610)
- (unset) Correct unset of associative array element (#626)
- (declare) Refine varname validation (#629)
- Hyphenated script args (#630)
- Special case for command subst (#632)
- (readme) Update Arch Linux install instructions (#604)
- Adds homebrew section to README installation instructions (#638)
- Publish license notices in CD flow (#622)
- Update dependencies (#623)
- Cleanup allow attributes, switch to expect where possible (#642)
- (deps) Bump indenter from 0.3.3 to 0.3.4 in the cargo group (#627)
- (deps) Bump the cargo group with 3 updates (#612)
- (deps) Bump the cargo group with 2 updates (#613)
- (deps) Bump the cargo group with 2 updates (#619)
- (deps) Bump the cargo group across 1 directory with 5 updates (#609)
- (deps) Bump tokio from 1.46.1 to 1.47.0 in the cargo group (#616)
- (deps) Bump the cargo group with 2 updates (#621)
- (api) API usability improvements for
Shell::invoke_function(#596) - Enable -o/+o on brush command line (#590)
- (dot) Only shadow args when some provided to
source(#582)
- (ShellValue) Take in an
Into(#598)
- README.md installation updates (#580)
- Update README.md badges (#588)
- Tag test binary dependencies (#585)
- Add test cases for open issues (#587)
- Add not-yet-passing history tests (#591)
- Update dependencies + deny policy (#586)
- Remove unneeded dev deps from 'test-with' (#594)
- Update dependencies (#601)
- (deps) Bump test-with from 0.15.1 to 0.15.2 in the cargo group (#593)
- (AndOrList) Add iteration abilities (#512)
- Generic Shell functions to parse a script from bytes (#509)
- Ability to clear all functions from shell environment (#546)
- (vars) Implement correct updating for -u/-c/-l vars (#529)
- (env) Introduce BRUSH_VERSION variable (#531)
- Enable cargo-binstall to work with brush (#536)
- (parser) Add gettext enabled quotes (#446)
- (printf) Replace printf impl with uucore wrapper (#552)
- (args) Add --rcfile command-line option (#568)
- (vars) Ensure effective GID is first in GROUPS (#526)
- (traps) Add stub definition for RETURN trap (#559)
- (typeset) Mark typeset as a declaration builtin (#517)
- (tokenizer) Correctly treat $( (...) ) as a cmd substitution (#521)
- (backquote) Correctly handle trailing backslash in backquoted command (#524)
- (test) Reuse -ef, -nt, -ot support (#525)
- (arithmetic) Permit space after unary operators (#527)
- (tokenizer) Correctly handle here docs terminated by EOF (#551)
- (interactive) Fix behavior of cmds piped to stdin (#539)
- (functions) Allow func names to contain slashes (#560)
- (tokenizer) Handle escaped single-quote in ANSI-C quoted string (#561)
- (arithmetic) Correct left shift handling (#562)
- (local) Enable use of local to detect function (#565)
- (expansion) Handle signed numbers in brace-expansion ranges (#566)
- (redirection) Assorted fixes to redirection (#567)
- (prompt) Implement
\A(#569) - (expansion) Correct ${!PARAM@...} (#570)
- (expansion) Fix parsing escaped single-quotes in ANSI-C strs (#571)
- (for/case) Allow reserved words in for word lists (#578)
- (parser) Abstract parse errors (#574)
- Remove redundant lookups in path searching (#573)
- (parser) Enable serde::Serialize on AST et al. for test targets (#544)
- (tokenizer) Adopt insta for tokenizer tests (#550)
- (parser) Start using insta crate for snapshot-testing parser (#545)
- Upgrade MSRV to 1.85.0 (#553)
- Upgrade crates to Rust 2024 edition (#554)
- Enable more lints + fixes (#555)
- Upgrade dependencies (#556)
- (deps) Bump pprof from 0.14.0 to 0.15.0 in the cargo group (#542)
- (deps) Bump the cargo group with 3 updates (#522)
- (apply_unary_predicate_to_str) Implement
-Roperand - (apply_binary_predicate) Implement
-efoperand - (apply_binary_predicate) Implement
-ntoperand - (ShellValue) Add
is_setmethod - (apply_binary_predicate) Implement
-otoperand - (Shell) Add methods to add environmental variables and builtins (#447)
- Implement {cd,pwd} -{L,P} (#458)
- (builtins) Implement initial (partial)
bind -xsupport (#478) - (mapfile) Register also as readarray (#486)
- (funcs) Implement function exporting/importing (#492)
- (mapfile) Implement
-n,-d,-s(#490) - (ulimit) Implement ulimit builtin (#482)
- (break,continue) Use
default_value_tfor flag values (#493) - (help) Better compact argument help (#499)
- (tests) Wrong boolean operator
- (trap) Handle '-' unregistration syntax (#452)
- (complete) Fixes + tests for "declare -r" (#462)
- Enable unnameable_types lint and mitigate errors (#459)
- (builtin) Fix issues with 'builtin' invoking declaration builtins (#466)
- (declare) Suppress errors for non-existent functions in declare -f / -F (#467)
- (expansion) Allow negative subscripts with indexed arrays + slices (#468)
- Allow "bind" usage in .bashrc (#485)
- (expansion) Fix issues parsing backquoted commands nested in single/double-quoted strings (#491)
- Fix typos + add spell-checking PR check (#501)
- (extended-tests) Explicitly set modified date on test files (#453)
- Add compat test for $_ (#480)
- Add known-failing tests to reproduce reported issues (#483)
- Enable (and fix) current checks across all workspace crates (#457)
- (extended_tests) Add
-ef,-nt, and-ot - Upgrade dependencies: reedline, nix, clap, thiserror, etc. (#456)
- Better log + connect unimpl functionality with GH issues (#476)
- (Shell) Turn
&Pathparameters intoAsRef<Path>(#448)
- (Shell) Add
get_env_varmethod for more generic variable returns (#438)
- Honor COMP_WORDBREAKS in completion tokenization (#407)
- Handle complete builtin run without options (#435)
- Add instructions for installing from the AUR (#433)
- Implement --skip in brush-compat-tests harness (#432)
- (Shell) Use relaxed typing for string input (#437)
- Enable building for wasm32-unknown-unknown (#425)
- (deps) Bump rand from 0.9.0 to 0.9.1 in the cargo group (#431)
- (deps) Bump the cargo group with 3 updates (#426)
- (deps) Bump the cargo group with 2 updates (#427)
- (arithmetic) Support explicit base#literal in arithmetic (#388)
- Implement
command -p(#402)
- Default PS1 and PS2 in interactive mode (#390)
- (builtins) Implement command-less exec semantics with open fds (#384)
- (builtins) Correct read handling of IFS/space (#385)
- (extglob) Correct handling of extglobs with empty branches (#386)
- Correct path tests on empty strings (#391)
- Allow newline in empty array assignment (#405)
- Improve panic handling output (#409)
- (regex) Enable multiline mode for extended test regexes (#416)
- Parse '#' as char only if inside a variable expansion (#418)
- Symlink licenses under crate dirs (#400)
- Add more linux distros to test matrix (#412)
- Enable testing on nixos/nix container image (#413)
- Upgrade cached crate (#398)
- Rewrite dir diffing test code to avoid deps
- (deps) Bump the cargo group with 2 updates (#393)
- (deps) Bump whoami from 1.5.2 to 1.6.0 in the cargo group (#423)
- (deps) Bump the cargo group with 2 updates (#389)
- (deps) Bump serde from 1.0.218 to 1.0.219 in the cargo group (#401)
- (deps) Bump the cargo group with 2 updates (#410)
- (continue) Implement continue n for n >= 2 (#326)
- (options) Implement dotglob semantics (#332)
- (options) Implement "set -t" (#333)
- (options) Implement "set -a" (#336)
- (env) Introduce dynamic variables (#360)
- (builtins) Skip unenumerable vars in set builtin (#322)
- (expansion) Handle negative substring offset (#372)
- (completion) Better handle native errors in completion funcs (#373)
- (builtins) Correct parsing of bind positional arg (#381)
- (patterns) Fix incorrect parse of char ranges (#323)
- (exit) Correct exit semantics in various compund statements (#347)
- (for) Correct semantics for "for" without "in" (#348)
- Correct semantics of = in non-extended test commands (#349)
- (return) Error if return used outside sourced script or function (#350)
- (arithmetic) Recursively evaluate var references (#351)
- (arithmetic) Fixes for nested parenthesis parsing in arithmetic (#353)
- (builtins) Fix set builtin handling of - and -- (#354)
- (builtins) Do not interpret --help in command builtin command args (#355)
- (builtins) Correct more 'set' argument parsing (#356)
- (variables) More correct handling of integer variables (#357)
- (redirection) Make sure redirection fd + operator are contiguous (#359)
- Better error when cwd is gone (#370)
- (builtins) Fix read builtin ignoring tab chars (#371)
- Propagate execution parameters more thoroughly (#374)
- (redirection) Allow continuing past redir errors (#375)
- Remove unneeded string cloning for arithmetic eval (#324)
- Simplify export enumeration (#363)
- Skip word parsing if no expansion required (#365)
- Minor optimizations for shell create + command run (#362)
- (perf) Update tokenizer/parser benchmarks (#321)
- Resolve false errors about side effects in bash-completion tests (#379)
- Remove some unneeded
pub(crate)visibility annotations (#346) - Remove unneeded result wrappings (#367)
- Remove a few object clones (#368)
- Update readme (#331)
- Add pattern and expansion tests to track newly filed issues (#330)
- Minor cleanups and test additions (#364)
- Fix rng warnings (#378)
- (deps) Bump indexmap from 2.7.0 to 2.7.1 in the cargo group (#334)
- (deps) Bump the cargo group across 1 directory with 4 updates (#320)
- (deps) Bump the cargo group with 3 updates (#376)
- (prompts) Enable PS0, custom right-side prompts, more (#278)
- (completion) Programmable completion support for filters + commands
- (non-posix) Implement
timekeyword (#310) - (builtins) Implement suspend (#311)
- (set) Implement nullglob option (#279)
- (set) Implement nocaseglob + nocasematch options (#282)
- (builtins) Add minimal mapfile + bind impls
- (debug) Improved function tracing capabilities
- (options) Implement lastpipe option
- Implement brace expansion (#290)
- (options) Implement noclobber option (a.k.a. -C) (#291)
- (builtins) Implement more of kill builtin (#305)
- (builtins) Implement times builtin (#309)
- Correct sh mode vs posix mode confusion for syntax extensions
- Assorted non-fatal clippy warnings (#274)
- (builtins) Correct behavior of set builtin with no args
- More consistently honor shell options when invoking the tokenizer
- Update COMP_WORDBREAKS default value
- Honor extglob for expansion transformations
- Sync PWD with actual workdir on launch
- (jobs) Only report job status when job control option is enabled (#306)
- Stop incorrectly parsing assignment as function def (#273)
- Multiple issues blocking docker cmd completion (#275)
- Improve substring ops with multi-byte chars (#280)
- Better handle escape chars in pattern bracket exprs (#281)
- (completion) Multiple fixes for compgen builtin usage
- (regex) Work around incompatibilities between shell + rust regexes
- (extendedtests) Add missing arithmetic eval in extended tests
- (command) Handle sending basic command errors to redirected stderr
- Improve accuracy of negative extglobs
- Implement date and time in prompts (#298)
- (completion) Handle -o {default,dirnames,plusdirs} (#300)
- (expansion) Correct length for 1-element arrays (#316)
- Correct issues with
!extglobs and compgen -X (#317)
- Update README to reflect test expansion
- Cache parsing for arithmetic expressions (#301)
- Remove unneeded async from arithmetic eval (#312)
- Remove setup operations from microbenchmarks (#307)
- Reimplement colon command as a "simple builtin" (#315)
- (completion) Add another completion test
- (completion) Enable use of pexpect et al. with basic input backend
- Update comments
- Improve tracing for completion function invocation
- Remove unneeded helper code
- Address warnings (#313)
- (deps) Bump the cargo group with 3 updates (#285)
- (deps) Bump the cargo group with 4 updates (#289)
- (deps) Bump the cargo group with 3 updates (#294)
- (deps) Bump anyhow from 1.0.94 to 1.0.95 in the cargo group (#297)
- (deps) Bump the cargo group with 2 updates (#299)
- (deps) Bump the cargo group with 2 updates (#304)
- (ast) Derive
PartialEqandEqfor testing (#259)
- Correct parsing of parens in arithmetic command (#270)
- Upgrade dependencies (#271)
- Implement support for ;;& and ;& in case items (#223)
- Implement
|&extension (#240) - Implement
kill -l(#221) - Implement
|&for function declarations (#244)
- Omit dirs from executable searches (#236)
- Handle PS2 prompts that require prompt-expansion (#239)
- Allow usually-operator chars in regex parens (#224)
- Assorted correctness issues in getopts builtin (#225)
- Assorted completion-related issues (#226)
- String replacement with slashes (#231)
- Correct pattern removal expansions on arrays (#232)
- (completion) Fix -- handling in getopts (#235)
- (completion) Correct behavior of slice past end of array (#237)
- Support here documents in command substitutions (#255)
- Upgrade crate dependencies (#247)
- (deps) Bump the cargo group with 2 updates (#220)
- Experimentally enable reedline as an input backend (#186)
- Default to reedline and add syntax highlighting support (#187)
- Add a panic handler via human-panic (#191)
- Several fixes for bash-completion + tests (#192)
- Implement
cd -(#201) - Implement command hashing (#206)
- Deduplicate completion candidates (#189)
- Cleanup transient completion variables (#213)
- Allow newlines in extended test exprs (#188)
- Fixes for short-circuit precedence + parameter expr replacement (#193)
- Workarounds for edge word parsing cases (#194)
- Assorted completion issues with ~ and vars (#199)
- Slight compat improvements to set -x (#205)
- Matching newline chars in glob patterns (#207)
- Honor IFS in read builtin (#208)
- Correct behavior of break in arithmetic for loop (#210)
- Address issues with array unset (#211)
- Handle expansion in here documents (#212)
- Enable setting min oracle version on tests (#184)
- Where possible replace
async-traitwith native async trait support in 1.75+ (#197)
- (deps) Bump futures from 0.3.30 to 0.3.31 in the cargo group (#190)
- Leave rustyline disabled by default (#196)
- (deps) Bump the cargo group with 4 updates (#203)
- Remove rustyline support (#216)
- Allow source to be used with process substitution (#175)
- Address multiple issues with foreground controls for pipeline commands (#180)
- Move to cargo nextest (#176)
- Correctly report skipped tests for nextest (#178)
- Convert more test skips to known failures (#179)
- (deps) Bump the cargo group with 2 updates (#177)
- Launch processes in their own process groups (#166)
- Posix compliant argument parsing for
-cmode (#147)
- (deps) Bump thiserror from 1.0.63 to 1.0.64 in the cargo group (#167)
- Temporarily disable failing test (#170)
- Refactor PR workflow to better support multi-platform build + test (#169)
- Implement ~USER syntax (#160)
- Compgen needs to expand target arg (#162)
- Do not invoke debug traps during completion funcs (#163)
- Disable flaky test until it can be root-caused
- Generate man page via xtask (#157)
- Short-term optimization for common-case printf
- Extract InteractiveShell as trait + refactor (#159)
- (deps) Bump tokio from 1.39.3 to 1.40.0 in the cargo group (#156)
- (deps) Bump the cargo group with 6 updates (#158)
- (deps) Bump the cargo group with 2 updates (#161)
- Move MSRV up to 1.75.0 (#139)
- Correct echo -e escape expansion for \x sequences (#143)
- Disable displaying tracing target (#140)
- Correct multiple issues with process substitution + redirection (#145)
- (deps) Bump tokio from 1.39.1 to 1.39.2 in the cargo group (#141)
- (deps) Bump the cargo group with 3 updates (#148)
- (deps) Bump serde from 1.0.204 to 1.0.206 in the cargo group (#150)
- (deps) Bump the cargo group with 2 updates (#152)
- (deps) Bump serde from 1.0.208 to 1.0.209 in the cargo group (#154)
- Correct relative path resolution cases
- Relative path completion fixes (#137)
- Build error outside git (#134)
- (deps) Bump the cargo group with 2 updates (#133)
- Initial support for non-linux
- Enable simpler builtins implemented outside brush (#130)
- Get building on windows and wasm-wasip1 targets (#116)
- Add brushctl builtin, seed with event toggling support
- Absorb breaking change in homedir crate
- Clippy and check warnings (#123)
- Correct completion fallback logic when spec matches but 0 results (#125)
- Various build warnings on windows build (#126)
- Exclude tags from git version info (#115)
- Update readme (#127)
- Merge builtin and builtins modules
- Update comments (#129)
- (deps) Bump the cargo group across 1 directory with 5 updates
- Enable -O and +O on command line (#105)
- Start using cargo-fuzz for testing (#106)
- Enable fuzz-testing arithmetic eval (#108)
- Include more details in version info (#112)
- Correct expansion when PWD is / (#96)
- Ensure parser error actually impls Error (#98)
- Realign newline parsing with spec (#99)
- Correct handling of unterminated expansions (#101)
- Add &>> implementation (#103)
- Correct metadata for fuzz crate (#107)
- Resolve assorted arithmetic eval issues (#110)
- Correct ** overflow behavior (#111)
- Update Cargo.lock (#113)
- Release
- Take targeted dependency updates (#93)
- Update config (#97)
- Implement 'command' builtin (#77)
- Add stubs for help man page generation
- Fill out read builtin impl
- Rework here doc files (#85)
- Set + validate intentional MSRV (1.72.0) (#86)
- Add basic changelog
- Add basic changelog (#87)
- Compgen -W expansion (#78)
- Don't split completions that aren't file paths (#79)
- Allow interrupting read builtin, run pipeline cmds in subshell (#81)
- Add missing flush calls
- Tweak manifests to work with release flow (#89)
- Ensure brush-core builds outside workspace (#90)
- Add crate shields to readme (#74)
- Add missing code documentation
- (release) Bump version to 0.2.0 (#88)
- Update dependencies
- Adjust clippy warnings
- Prepare for initial release (#68)
- Enable publishing (#71)