github mvdan/sh v3.6.0

latest releases: v3.10.0, v3.9.0, v3.8.0...
23 months ago

This release drops support for Go 1.17 and includes many features and fixes.

  • cmd/shfmt
    • 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
  • syntax
    • Don't require peeking two bytes after echo * - #835
    • Simplify ${name:-} to the equivalent ${name-} - #849
    • Don't print trailing whitespaces on nested subshells - #814
    • Don't print extra newlines in some case clauses - #779
    • Don't indent comments preceding case clause items - #917
    • Allow escaped newlines before unquoted words again - #873
    • Parse a redirections edge case without spaces - #879
    • Give a helpful error when <<< is used in POSIX mode - #881
    • Forbid ${!foo*} and ${!foo@} in mksh mode - #929
    • Batch allocations less aggressively in the parser
  • syntax/typedjson
    • Expose --from-json and --to-json as Go APIs - #885
  • expand
    • Improve support for expanding array keys and values - #884
    • Don't panic on unsupported syntax nodes - #841
    • Don't panic on division by zero - #892
    • Properly expand unquoted parameters with spaces - #886
    • Trim spaces when converting strings to integers - #928
  • interp
    • Add initial implementation for mapfile and readarray - #863
    • Improve matching patterns against multiple lines - #866
    • Support %b in the printf builtin - #955
    • Display all Bash options in shopt - #877
  • pattern
    • Add EntireString to match the entire string using ^$ - #866

A special thanks to all the contributors to this release!
@fauust @graf0 @hristiy4n @ihar-orca @lollipopman @mkhl @przmv @reubeno @riacataquian @scop @tmillr

Binaries built on go version go1.19.4 linux/amd64 with:

CGO_ENABLED=0 go build -trimpath -ldflags="-w -s -X=main.version=v3.6.0"

Consider becoming a sponsor if you benefit from the work that went into this release!

Don't miss a new sh release

NewReleases is sending notifications on new releases.