Skip to content

Releases: mvdan/sh

v3.1.1

04 May 21:31
Compare
Choose a tag to compare

Highlights:

  • cmd/shfmt
    • Recognise function_next_line in EditorConfig files
  • syntax
    • Don't ignore escaped newlines at the end of heredoc bodies
    • Improve support for parsing regexes in test expressions
    • Count columns for KeepPadding in bytes, to better support unicode
    • Never let KeepPadding add spaces right after indentation
  • interp
    • Hide unset variables when executing programs

Binaries built on go version go1.14.2 linux/amd64.

v3.1.0

07 Apr 11:36
Compare
Choose a tag to compare

Highlights:

  • Redesigned Docker images, including buildx and an Alpine variant
  • cmd/shfmt
    • Replace source files atomically when possible
    • Support ignore = true in an EditorConfig to skip directories
    • Add -fn to place function opening braces on the next line
    • Improve behavior of -f when given non-directories
    • Docker images and go get installs now embed good version information
  • syntax
    • Add support for nested here-documents
    • Allow parsing for loops with braces, present in mksh and Bash
    • Expand CaseClause to describe its in token
    • Allow empty lines in Bash arrays in the printer
    • Support disabling KeepPadding
    • Avoid mis-printing some programs involving &
  • interp
    • Add initial support for Bash process substitutions
    • Add initial support for aliases
    • Fix an edge case where the status code would not be reset
    • The exit status code can now reflect being stopped by a signal
    • test -t now uses the interpreter's stdin/stdout/stderr files
  • expand
    • Improve the interaction of @ and * with quotes and IFS

Binaries built on go version go1.14.2 linux/amd64.

Please note that the binaries were re-uploaded on April 10th, to update the Go version and fix the missing version information.

v3.0.2

22 Feb 19:37
Compare
Choose a tag to compare

Highlights:

  • syntax
    • Don't indent after escaped newlines in heredocs
    • Don't parse *[i]=x as a valid assignment
  • interp
    • Prevent subshells from defining funcs in the parent shells
  • expand
    • Parameters to Fields no longer get braces expanded in-place

Binaries built on go version go1.13.8 linux/amd64.

v3.0.1

11 Jan 05:55
Compare
Choose a tag to compare

Highlights:

  • 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

16 Dec 13:43
Compare
Choose a tag to compare

This is the first stable release as a proper module, now under mvdan.cc/sh/v3/.... 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

12 Nov 18:50
Compare
Choose a tag to compare
v3.0.0-beta1 Pre-release
Pre-release

This is one of the final pre-releases before v3.0.0. See the changelog for a summary of the included changes: https://github.com/mvdan/sh/blob/v3.0.0-beta1/CHANGELOG.md#unreleased

v2.6.4

10 Mar 17:34
Compare
Choose a tag to compare

Highlights:

  • 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

19 Jan 15:53
Compare
Choose a tag to compare

Highlights:

  • 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

08 Dec 10:34
Compare
Choose a tag to compare

Highlights:

  • 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

17 Nov 17:38
Compare
Choose a tag to compare

Highlights:

  • 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.