All Versions
Latest Version
Avg Release Cycle
58 days
Latest Release
731 days ago

Changelog History
Page 3

  • v3.0.0-alpha2

    June 05, 2019
  • v3.0.0-alpha1

    March 11, 2019
  • v3.0.0-alpha0

    November 10, 2018
  • v2.6.4 Changes

    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 Changes

    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 Changes

    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.

  • v2.6.1 Changes

    November 17, 2018


    • syntax
      • Fix Parser.Incomplete with some incomplete literals
      • Fix parsing of Bash regex tests in some edge cases
    • interp
      • Add support for $(<file) special command substitutions

    ๐Ÿง Binaries built on go version go1.11.2 linux/amd64.

  • v2.6.0 Changes

    November 10, 2018

    ๐Ÿš€ This is the biggest v2 release to date. It's now possible to write an interactive shell, and it's easier and safer to perform shell expansions.

    This will be the last major v2 version, to allow converting the project to a Go module in v3.


    • ๐Ÿ— Go 1.10 or later required to build
    • syntax
      • Add Parser.Interactive to implement an interactive shell
      • Add Parser.Document to parse a single here-document body
      • Add Parser.Words to incrementally parse separate words
      • Add the Word.Lit helper method
      • Support custom indentation in <<- heredoc bodies
    • interp
      • Stabilize API and add some examples
      • Introduce a constructor, and redesign Runner.Reset
      • Move the context from a field to function parameters
      • Remove Runner.Stmt in favor of Run with ShellExitStatus
    • shell
      • Stabilize API and add some examples
      • Add Expand, as a more powerful os.Expand
      • Add Fields, similar to the old Runner.Fields
      • Source* functions now take a context
      • Source* functions no longer try to sandbox
    • expand
      • New package, split from interp
      • Allows performing shell expansions in a controlled way
      • Redesigned Environ and Variable moved from interp

    ๐Ÿง Binaries built on go version go1.11.2 linux/amd64.

  • v2.5.1 Changes

    August 03, 2018


    • syntax
      • Fix a regression where semicolons would disappear within switch cases

    ๐Ÿง Binaries built on go version go1.10.3 linux/amd64.

  • v2.5.0 Changes

    July 13, 2018


    • syntax
      • Add support for Bash's {varname}< redirects
      • Add SpaceRedirects to format redirects like > word
      • Parse $\" correctly within double quotes
      • A few fixes where minification would break programs
      • Printing of heredocs within <() no longer breaks them
      • Printing of single statements no longer adds empty lines
      • Error on invalid parameter names like ${1a}
    • interp
      • Runner.Dir is now always an absolute path
    • shell
      • Expand now supports expanding a lone ~
      • Expand and SourceNode now have default timeouts
    • cmd/shfmt
      • Add -sr to print spaces after redirect operators
      • Don't skip empty string values in -tojson
      • Include comment positions in -tojson

    ๐Ÿง Binaries built on go version go1.10.3 linux/amd64.