| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| shfmt_v3.14.0_darwin_amd64 | 2026-08-28 | 3.6 MB | |
| shfmt_v3.14.0_darwin_arm64 | 2026-08-28 | 3.4 MB | |
| shfmt_v3.14.0_linux_386 | 2026-08-28 | 3.4 MB | |
| shfmt_v3.14.0_linux_amd64 | 2026-08-28 | 3.6 MB | |
| shfmt_v3.14.0_linux_arm | 2026-08-28 | 3.5 MB | |
| shfmt_v3.14.0_linux_arm64 | 2026-08-28 | 3.3 MB | |
| shfmt_v3.14.0_windows_386.exe | 2026-08-28 | 3.6 MB | |
| shfmt_v3.14.0_windows_amd64.exe | 2026-08-28 | 3.8 MB | |
| README.md | 2026-08-28 | 3.6 kB | |
| v3.14.0 source code.tar.gz | 2026-08-28 | 294.2 kB | |
| v3.14.0 source code.zip | 2026-08-28 | 341.1 kB | |
| Totals: 11 Items | 28.8 MB | 11 | |
This release drops support for Go 1.25 and includes many enhancements, particularly in the interpreter, which implements more shell features and fixes many divergences from Bash.
- cmd/shfmt
- Add
--detectto find shell files by executable bit or shebang - [#944] - syntax
- Add
Preorder, an iterator over all nodes, complementingWalk - Add
encoding.TextUnmarshalerimplementations for each operator type - Support
${ foo;}and${|foo;}inside double quotes - [#1368] - Support array elements in
{varname}redirects, likeexec {fds[3]}>&-- [#719] - Backslashes inside backquotes within double quotes escape double quotes - [#1083]
- Allow pound signs in associative array keys like
${args[cmd,#]}- [#1285] - Don't treat
#as the start of a comment inside[[ ]]tests - [#1326] - Don't join
thenordowith a semicolon when heredocs are pending - [#1047] - Print a space after
!in arithmetic expressions, avoiding history expansion - [#987] - Space nested closing parentheses like the opening ones - [#876]
- Make
SplitBracesreject malformed sequences and skip backslash escapes - [#1330] - Zsh: support the
${=name},${~name}, and${^name}prefixes - [#1238] - Zsh: support the
;|case terminator and leading parentheses for globs - [#1293], [#1279] - Zsh: parse subscript flag arguments as patterns, and allow
[globs in arrays - [#1278], [#1322] - syntax/typedjson
- Encode operators as their syntax form, such as
">>", rather than integers - [#1321] - Return errors rather than panicking on malformed input
- interp
- Add
BashOptsto set Bash options likeshopt- [#962] - Add
AccessHandlerto control file access checks, used by-randcd- [#1318] - Add
HandlerContext.LastExitStatus, and provide aHandlerContextto stat handlers - Implement the
helpandtimesbuiltins, as well as$-- [#1398] - Implement the
;∧;&case terminators - [#1391] - Implement the
-Ntest operator, and make-ntand-otfollow POSIX - [#1340] - Support sparse indexed arrays such as
a=([5]=x)- [#1373] - Run files as shell scripts when
execfails withENOEXEC- [#1065] - Support empty here-documents, and don't expand quoted ones - [#1390]
- Support
js/wasm, where subprocesses and pipes are unavailable - Keep the redirections applied by
execwith no arguments - Only fire the exit trap when the shell exits, rather than after every
Run - expand
- Add
BracesSeqwith a config and error reporting, deprecatingBraces - Add
Variable.Indexesto describe sparse indexed arrays - Support integer bases in arithmetic - [#339]
- Short-circuit the arithmetic
&&and||operators - [#1371] - Apply per-element operators to quoted array expansions like
"${a[@]%o}"- [#1081] - Make unquoted
${!arr[@]}consistent with the quoted form - [#672] - Fix many divergences from Bash in arithmetic, string, and brace expansions
- Reject unsupported Zsh syntax rather than panicking - [#1363]
- pattern
- Treat an unmatched
[as a literal character, like Bash - [#1372] - Fix panics and mismatches in bracket expressions, such as
[![:space:]] - fileutil
- Recognize
dashshebangs as POSIX shell for-ln=auto- [#1307]
Consider becoming a sponsor if you benefit from the work that went into this release!
Binaries built on go version go1.27.0 linux/amd64 with:
CGO_ENABLED=0 go build -trimpath -ldflags="-w -s"