shfmt-ohjelmasta on luettelossa 11 versiota, ensimmäinen 12. joulukuuta 2022 ja uusin 3.14.1. Jokainen versio linkittää julkaisijan omiin asennustiedostoihin.
11 versiota 4 vuoden aikana · noin 2,9 vuodessa
| Versio | Päivämäärä | Koko | Tiedostot |
|---|---|---|---|
| 3.14.1Uusin | 6. syyskuuta 2026 | — | 64-bittinen Portable32-bittinen Portable Muutosloki- syntax
- Fix the indentation of heredocs nested inside command substitutions - #1403
- Keep literal tabs in <<- heredoc bodies rather than replacing them with spaces
- Don't indent heredocs without dashes nested in <<- ones, whose output no longer parsed
- Zsh: don't drop the prefix in short forms like $#"$foo" and $+"$foo" - #1405
- interp
- Fix the build on 32-bit FreeBSD and NetBSD
- expand
- Don't let escaped characters such as \* act as glob metacharacters
- pattern
- Treat unclosed extended operator groups like @(a as literals, avoiding a panic |
| 3.14.0 | 28. elokuuta 2026 | — | 64-bittinen Portable32-bittinen Portable MuutoslokiThis 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 --detect to find shell files by executable bit or shebang - #944
- syntax
- Add Preorder, an iterator over all nodes, complementing Walk
- Add encoding.TextUnmarshaler implementations for each operator type
- Support ${ foo;} and ${|foo;} inside double quotes - #1368
- Support array elements in {varname} redirects, like exec {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 then or do with 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 SplitBraces reject 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 BashOpts to set Bash options like shopt - #962
- Add AccessHandler to control file access checks, used by -r and cd - #1318
- Add HandlerContext.LastExitStatus, and provide a HandlerContext to stat handlers
- Implement the help and times builtins, as well as $- - #1398
- Implement the ;& and ;;& case terminators - #1391
- Implement the -N test operator, and make -nt and -ot follow POSIX - #1340
- Support sparse indexed arrays such as a=([5]=x) - #1373
- Run files as shell scripts when exec fails with ENOEXEC - #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 exec with no arguments
- Only fire the exit trap when the shell exits, rather than after every Run
- expand
- Add BracesSeq with a config and error reporting, deprecating Braces
- Add Variable.Indexes to 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 dash shebangs as POSIX shell for -ln=auto - #1307 |
| 3.13.1 | 6. huhtikuuta 2026 | — | 64-bittinen Portable32-bittinen Portable Muutosloki- cmd/shfmt
- Add support for [[zsh]] in EditorConfig files
- Detect the shell variant from filenames like .zshrc and .bash_profile
- Fix --apply-ignore when used with explicit args - #1310
- syntax
- Revert an accidental change to how array subscripts are formatted - #1314
- Never join ;; with the previous line when formatting - #1289
- Fix a bug where $1[foo] was parsed as a subscript in Zsh - #1288
- Correctly parse $! in double quotes in Zsh - #1298
- Allow indexing into special parameters in Zsh - #1299
- Allow parameter expansions with empty names in Zsh - #1280
- interp
- Test against Bash 5.3 and fix three new discrepancies
- Fix a few bugs related to nameref variables
- Avoid panics when user input encounters unimplemented features |
| 3.13.0 | 9. maaliskuuta 2026 | — | 64-bittinen Portable32-bittinen Portable |
| 3.12.0 | 6. heinäkuuta 2025 | — | 64-bittinen Portable32-bittinen Portable Muutosloki- The mvdan-sh JS package is discontinued in favor of sh-syntax - #1145
- cmd/shfmt
- Support the "simplify" and "minify" flags via EditorConfig - #819
- Do not allow --write to replace non-regular files - #843
- interp
- Add IsBuiltin to check if a command name is a shell built-in - #1164
- Add HandlerContext.Builtin to allow ExecHandlerFunc to call built-ins
- Initial support for $! and wait PID - #221
- Return non-fatal ExecHandlerFunc errors via the Runner.Run API
- Add HandlerContext.Pos to provide handlers with source positions
- Deprecate NewExitStatus and IsExitStatus in favor of ExitStatus
- Fix wait to always return the status of the last given job
- Copy all env vars for background subshells to avoid data races
- Support reading random numbers via $RANDOM and $SRANDOM
- Set $BASH_REMATCH when matching regular expressions via =~
- Support modifying local vars from the parent calling function
- expand
- Adjust which backslash sequences are expanded in here-docs - #1138
- Tweak tilde expansions to match Bash semantics
- pattern
- Remove the flawed and broken Braces mode; use syntax.SplitBraces instead
- Tweak ** to only act as "globstar" when alone as a path element - #1149
- Tweak * and ** to not match leading dots in basenames
- Add a NoGlobStar mode to match the POSIX semantics
- fileutil
- Treat all non-regular files as definitely not shell scripts - #1089 |
| 3.11.0 | 5. maaliskuuta 2025 | — | 64-bittinen Portable32-bittinen Portable MuutoslokiThis release drops support for Go 1.22 and includes many enhancements.
- cmd/shfmt
- Support -l=0 and -f=0 to split filenames with null bytes - #1096
- syntax
- New iterator API: Parser.WordsSeq
- Fix Parser.Incomplete and IsIncomplete to work well with Parser.Words - #937
- Initial support for parsing incomplete shell via RecoverErrors
- Expand LangError to include which language was used when parsing
- interp
- Refactor setting variables to fix array declaration edge cases - #1108
- Fix test read/write/exec operators to work correctly on directories - #1116
- Replace the cancelreader dependency with os.File.SetReadDeadline
- Avoid waiting for process substitutions, matching Bash
- Skip OpenHandler when opening named pipes for process substitutions - #1120
- Use TMPDIR if set via Env to create temporary files such as named pipes
- expand
- New iterator API: FieldsSeq
- Correctly handle repeated backslashes in double quotes - #1106
- Don't expand backslashes inside here-documents - #1070
Consider becoming a sponsor if you benefit from the work that went into this release! |
| 3.10.0 | 20. lokakuuta 2024 | — | 64-bittinen Portable32-bittinen Portable Muutosloki- cmd/shfmt
- Report the correct language variant in parser error messages - #1102
- Move --filename out of the parser options category - #1079
- syntax
- Parse all CRLF line endings as LF, including inside heredocs - #1088
- Count skipped backslashes inside backticks in position column numbers - #1098
- Count skipped null bytes in position column numbers for consistency
- interp
- Fix a regression in v3.9.0 which broke redirecting files to stdin - #1099
- Fix a regression in v3.9.0 where HandlerContext.Stdin was never nil
- Add an Interactive option to be used by interactive shells - #1100
- Support closing stdin, stdout, and stderr via redirections like <&-
Consider becoming a sponsor if you benefit from the work that went into this release! |
| 3.9.0 | 16. elokuuta 2024 | — | 64-bittinen Portable32-bittinen Portable MuutoslokiThis release drops support for Go 1.21 and includes many fixes.
- cmd/shfmt
- Switch the diff implementation to remove one dependency
- syntax
- Protect against overflows in position offset integers
- interp
- Use os.Pipe for stdin to prevent draining by subprocesses - #1085
- Support cancelling reads in builtins when stdin is a file - #1066
- Support the nocaseglob bash option - #1073
- Support the Bash 5.2 @k parameter expansion operator
- Support the test -O and test -G operators on non-Windows - #1080
- Support the read -s builtin flag - #1063
- expand
- Add support for case insensitive globbing - #1073
- Don't panic when pattern words are nil - #1076
A special thanks to @theclapp for their contributors to this release!
Consider becoming a sponsor if you benefit from the work that went into this release! |
| 3.8.0 | 11. helmikuuta 2024 | — | 64-bittinen Portable32-bittinen Portable MuutoslokiThis release drops support for Go 1.19 and 1.20 and includes many features and bugfixes, such as improving EditorConfig support in shfmt.
- cmd/shfmt
- Support EditorConfig language sections such as [[shell]] - #664
- Add --apply-ignore for tools and editors - #1037
- syntax
- Allow formatting redirects before all command argumetnts - #942
- Support brace expansions with uppercase letters - #1042
- Unescape backquotes in single quotes within backquotes - #1041
- Better error when using function in POSIX mode - #993
- Better column numbers for escapes inside backquotes - #1028
- interp
- Support parentheses in classic test commands - #1036
- Determine access to a directory via unix.Access - #1033
- Support subshells with FuncEnviron as Env - #1043
- Add support for fs.DirEntry via ReadDirHandler2
- expand
- Add support for fs.DirEntry via ReadDir2
- Support zero-padding in brace expansions - #1042 |
| 3.7.0 | 18. kesäkuuta 2023 | — | 64-bittinen Portable32-bittinen Portable MuutoslokiThis release drops support for Go 1.18 and includes many features and fixes.
- syntax
- Correctly parse $foo#bar as a single word - [#1003]
- Make &> redirect operators an error in POSIX mode - [#991]
- Avoid producing invalid shell when minifying some heredocs - [#923]
- Revert the simplification of ${foo:-} into ${foo-} - [#970]
- interp
- Add ExecHandlers to support layering multiple middlewares - [#964]
- Add initial support for the select clause - [#969]
- Support combining the errexit and pipefail options - [#870]
- Set EUID just like UID - [#958]
- Replace panics on unimplemented builtins with errors - [#999]
- Tweak build tags to support building for js/wasm - [#983]
- syntax/typedjson
- Avoid reflect.Value.MethodByName to reduce binary sizes - [#961]
A special thanks to all the contributors to this release! @riacataquian @anderbubble @teefill @diamondburned
Consider becoming a sponsor if you benefit from the work that went into this release! |
| 3.6.0 | 12. joulukuuta 2022 | — | 64-bittinen Portable32-bittinen Portable Muutosloki- Implement --from-json as the reverse of --to-json - #900
- Improve the quality of the --to-json output - #900
- Provide detected language when erroring with -ln=auto - #803 |