Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 (2026-04-14)
Features
- add context option to justbash struct for custom commands (#34) (8824fd9)
- add xxd/od, curl flags, grep -P, awk crash guard (#32) (4afdb3b)
- add production resource limits and execution stats (#28) (9c7a36d)
- add missing command flags, stdin support, and bash comparison fixtures (#31) (67de3b0)
- replace NimbleParsec lexer with hand-written state machine (#30) (bc05d36)
- add telemetry instrumentation for script execution (#29) (b8cac23)
Bug Fixes
- jq parser failing to resolve builtin function names to atoms (144cbe8)
0.2.0 (2026-03-23)
Features
- add 12 new evals covering uncovered commands and shell features (2c21f75)
- add custom command eval with KV store (840ba00)
- add eval system and fix 5 bugs exposed by LLM agent evals (39e4637)
- expand evals to 28 tasks and fix 8 additional bugs (5ba37c5)
- major expansion - 15 new commands, jq overhaul, test infrastructure (a5efb73)
- test infrastructure, new commands, jq overhaul (13749d2)
Bug Fixes
- 8 AWK bugs, jq -e exit status, declare -A keys, printf redirect parsing (cb57e64)
- capture bash state between exec calls in README example (09b2039)
- correct GitHub URLs in CHANGELOG (a4cf791)
- correct GitHub URLs in CHANGELOG (5b29c7e)
- heredoc in compound commands, assoc array subscripts, which/type builtins, jq @tsv (99aab44)
- implement AWK field assignment ($N = value) with $0 reconstruction (e760cad)
- read IFS splitting, wc/head/tail multi-file, and improve eval robustness (7d96af7)
- remove deprecated package-name from release-please workflow (d1d7ab7)
- tests: use variable instead of module attribute for spec tests (#18) (f583911)
Unreleased
0.1.0 - 2026-01-11
Added
- Initial release
- In-memory virtual filesystem (
JustBash.Fs.InMemoryFs) - Bash lexer and recursive descent parser
- Variable expansion:
$VAR,${VAR},${VAR:-default},${VAR:=default},${VAR:+alt},${#VAR},${VAR:start:len},${VAR#pattern},${VAR%pattern},${VAR/old/new},${VAR^^},${VAR,,} - Command substitution:
$(cmd)and backticks - Arithmetic expansion:
$((expr))with full operator support including**,?:, hex, binary - Control flow:
if/elif/else/fi,for x in ...; do; done,while/until,case/esac - Logical operators:
&&,||,!with short-circuit evaluation - Pipes with stdin/stdout flow
- Redirections:
>,>>,2>,&>,<,<<<, heredocs - Brace expansion:
{a,b,c},{1..5},{a..z} - Arrays:
arr=(...),${arr[0]},${arr[@]},${#arr[@]} - Functions with local variables
- Extended test command:
[[ ]]with regex support
Commands
File operations:
cat,ls,cp,mv,rm,mkdir,touch,lnfind,stat,du,tree,file,readlink
Text processing:
grep,sed,awk(full implementations)sort,uniq,head,tail,wc,cut,trrev,tac,nl,fold,paste,comm,diff,expand
Data tools:
jq(comprehensive JSON processor)curl(HTTP client with network allowlists)markdown/md(Markdown to HTML)base64,md5sum
Shell builtins:
echo,printf,pwd,cd,export,unsettest,[,[[,true,false,:set(shell options:-e,-u,-o pipefail)source,.,read,exit,returnlocal,declare,typesetbreak,continue,shift,getopts,trap
Utilities:
seq,date,sleep,basename,dirnamewhich,env,printenv,hostnamexargs,tee