All Versions
Latest Version
Avg Release Cycle
55 days
Latest Release
15 days ago

Changelog History
Page 1

  • v3.0.1

    January 11, 2020


    • cmd/shfmt
      • Fix an edge case where walking directories could panic
    • syntax
      • Only do a trailing read in Parser.Stmts if we have open heredocs
      • Ensure comments are never folded into heredocs
      • Properly tokenize ) after a =~ test regexp
      • Stop parsing a comment at an escaped newline
    • expand
      • "$@" now expands to zero fields when there are zero parameters

    🐧 Binaries built on go version go1.13.5 linux/amd64.

  • v3.0.0

    June 05, 2019

    🚀 This is the first stable release as a proper module, now under 👍 Go 1.12 or later is supported.

    🚀 A large number of changes have been done since the last feature release a year ⚡️ ago. All users are encouraged to update. Below are the major highlights.

    • cmd/shfmt
      • Support for EditorConfig files
      • Drop the dependency on diff for the -d flag, now using pure Go
    • syntax
      • Overhaul escaped newlines, now represented as WordPart positions
      • Improve some operator type names, to consistently convey meaning
      • Completely remove StmtList
      • Redesign IfClause, making its "else" another IfClause node
      • Redesign DeclClause to remove its broken Opts field
      • Brace expression parsing is now done with a BraceExp word part
      • Improve comment alignment in Printer via a post-process step
      • Add support for the ~ bitwise negation operator
      • Record the use of deprecated tokens in the syntax tree
    • interp
      • Improve the module API as "handlers", to reduce confusion with Go modules
      • Split LookPath out of ExecHandler to allow custom behavior
      • Run now returns nil instead of ShellExitStatus(0)
      • OpenDevImpls is removed; see ExampleOpenHandler for an alternative
    • expand
      • Redesign Variable to reduce allocations
      • Add support for more escape sequences
      • Make Config a bit more powerful via func fields
      • Rework brace expansion via the new BraceExp word part
    • pattern
      • New package for shell pattern matching, extracted from syntax
      • Add support for multiple modes, including filenames and braces

    🚀 Special thanks to Konstantin Kulikov for his contribution to this release.

  • v3.0.0-beta1

    November 12, 2019

    🚀 This is one of the final pre-releases before v3.0.0. See the changelog for a summary of the included changes:

  • v3.0.0-alpha3

    September 23, 2019
  • v3.0.0-alpha2

    June 05, 2019
  • v3.0.0-alpha1

    March 11, 2019
  • v3.0.0-alpha0

    November 10, 2018
  • v2.6.4

    March 10, 2019


    • syntax
      • Support array elements without values, like 'declare -A x=([index]=)`
      • Parse for i; do ... uniquely, as it's short for for i in "$@"
      • Add missing error on unclosed nested backquotes
    • expand
      • Don't expand tildes twice, fixing echo ~ on Windows
    • interp
      • Fix the use of Params as an option to New
      • Support lowercase Windows volume names in $PATH

    🐧 Binaries built on go version go1.12 linux/amd64.

  • v2.6.3

    January 19, 2019


    • expand
      • Support globs with path prefixes and suffixes, like ./foo/*/
      • Don't error when skipping non-directories in glob walks

    🐧 Binaries built on go version go1.11.4 linux/amd64.

  • v2.6.2

    December 08, 2018


    • syntax
      • Avoid premature reads in Parser.Interactive when parsing Unicode bytes
      • Fix parsing of certain Bash test expression involving newlines
      • Redirect.End now takes the Hdoc field into account
      • ValidName now returns false for an empty string
    • expand
      • Environment variables on Windows are case insensitive again
    • interp
      • Don't crash on declare $unset=foo
      • Fix a regression where executed programs would receive a broken environment

    🐳 Note that the published Docker image was changed to set shfmt as the entrypoint, so previous uses with arguments like docker run mvdan/shfmt:v2.6.1 shfmt --version should now be docker run mvdan/shfmt:v2.6.2 --version.

    🐧 Binaries built on go version go1.11.2 linux/amd64.