All Versions
47
Latest Version
Avg Release Cycle
58 days
Latest Release
969 days ago
Changelog History
Page 4
Changelog History
Page 4
-
v2.4.0 Changes
May 16, 2018Highlights:
- 📦 Publish as a JS package, mvdan-sh
- syntax
- Add
DebugPrint
to pretty-print a syntax tree - Fix comment parsing and printing in some edge cases
- Indent
<<-
heredoc bodies if indenting with tabs - Add support for nested backquotes
- Relax parser to allow quotes in arithmetic expressions
- Don't rewrite
declare foo=
intodeclare foo
- Add
- interp
- Add support for
shopt -s globstar
- Replace
Runner.Env
with an interface
- Add support for
- shell
- Add
Expand
as a fully featured version ofos.Expand
- Add
- cmd/shfmt
- Set appropriate exit status when
-d
is used
- Set appropriate exit status when
-
v2.3.0 Changes
March 07, 2018Highlights:
- syntax
- Case clause patterns are no longer forced on a single line
- Add
ExpandBraces
, to perform Bash brace expansion on words - Improve the handling of backslashes within backquotes
- Improve the parsing of Bash test regexes
- interp
- Support
$DIRSTACK
,${param[@]#word}
, and${param,word}
- Support
- cmd/shfmt
- Add
-d
, to display diffs when formatting differs - Promote
-exp.tojson
to-tojson
- Add
Pos
andEnd
fields to nodes in-tojson
- Inline
StmtList
fields to simplify the-tojson
output - Support
-l
on standard input
- Add
- syntax
-
v2.2.1 Changes
January 25, 2018Highlights:
- syntax
- Don't error on
${1:-default}
- Allow single quotes in
${x['str key']}
as well as double quotes - Add support for
${!foo[@]}
- Don't simplify
foo[$x]
tofoo[x]
, to not break string indexes - Fix
Stmt.End
when the end token is the background operator&
- Never apply the negation operator
!
to&&
and||
lists - Apply the background operator
&
to entire&&
and||
lists - Fix
StopAt
when the stop string is at the beginning of the source - In
N>word
, check thatN
is a valid numeric literal - Fix a couple of crashers found via fuzzing
- Don't error on
- cmd/shfmt
- Don't error if non-bash files can't be written to
- syntax
-
v2.2.0 Changes
January 18, 2018Highlights:
- 🏁 Tests on Mac and Windows are now ran as part of CI
- syntax
- Add
StopAt
to stop lexing at a custom arbitrary token - Add
TranslatePattern
andQuotePattern
for pattern matching - Minification support added to the printer - see
Minify
- Add ParamExp.Names to represent
${!prefix*}
- Add TimeClause.PosixFormat for its
-p
flag - Fix parsing of assignment values containing
=
- Fix parsing of parameter expansions followed by a backslash
- Fix quotes in parameter expansion operators like
${v:-'def'}
- Fix parsing of negated declare attributes like
declare +x name
- Fix parsing of
${#@}
- Reject bad parameter expansion operators like
${v@WRONG}
- Reject inline array variables like
a=(b c) prog
- Reject indexing of special vars like
${1[3]}
- Reject
${!name}
when in POSIX mode - Reject multiple parameter expansion actions like
${#v:-def}
- Add
- interp
- Add Bash brace expansion support, including
{a,b}
and{x..y}
- Pattern matching actions are more correct and precise
- Exported some Runner internals, including
Vars
andFuncs
- Use the interpreter's
$PATH
to find binaries - Roll our own globbing to use our own pattern matching code
- Support the
getopts
sh builtin - Support the
read
bash builtin - Numerous changes to improve Windows support
- Add Bash brace expansion support, including
- shell
- New experimental package with high-level utility functions
- Add
SourceFile
to get the variables declared in a script - Add
SourceNode
as a lower-level version of the above
- cmd/shfmt
- Add
-mn
, which minifies programs viasyntax.Minify
- Add
-
v2.1.0 Changes
November 25, 2017Highlights:
- syntax
- Add
Stmts
, to parse one statement at a time - Walk no longer ignores comments
- Parameter expansion end fixes, such as
$foo.bar
- Whitespace alignment can now be kept - see
KeepPadding
- Introduce an internal newline token to simplify the parser
- Fix
Block.Pos
to actually return the start position - Fix mishandling of inline comments in two edge cases
- Add
- interp
- Expose
Fields
to expand words into strings - First configurable modules - cmds and files
- Add support for the new
TimeClause
- Add support for namerefs and readonly vars
- Add support for associative arrays (maps)
- More sh builtins:
exec return
- More bash builtins:
command pushd popd dirs
- More
test
operators:-b -c -t -o
- Configurable kill handling - see
KillTimeout
- Expose
- cmd/shfmt
- Add
-f
to just list all the shell files found - Add
-kp
to keep the column offsets in place
- Add
- cmd/gosh
- Now supports a basic interactive mode
- syntax
-
v2.0.0 Changes
August 30, 2017Highlights:
- 📦 The package import paths were moved to
mvdan.cc/sh/...
- syntax
- Parser and Printer structs introduced with functional options
- Node positions are now independent -
Position
merged intoPos
- All comments are now attached to nodes
- Support
mksh
- MirBSD's Korn Shell, used in Android - Various changes to the AST:
EvalClause
removed;eval
is no longer parsed as a keyword- Add support for Bash's
time
andselect
- Merge
UntilClause
intoWhileClause
- Moved
Stmt.Assigns
toCallExpr.Assigns
- Remove
Elif
- chainIfClause
nodes instead - Support for indexed assignments like
a[i]=b
- Allow expansions in arithmetic expressions again
- Unclosed heredocs now produce an error
- Binary ops are kept in the same line - see
BinaryNextLine
- Switch cases are not indented by default - see
SwitchCaseIndent
- cmd/shfmt
- Add
-s
, which simplifies programs viasyntax.Simplify
- Add
-ln <lang>
, like-ln mksh
- Add
-bn
to put binary ops in the next line, like in v1 - Add
-ci
to indent switch cases, like in v1
- Add
- interp
- Some progress made, though still experimental
- Most of POSIX done - some builtins remain to be done
- 📦 The package import paths were moved to
-
v1.3.1 Changes
May 26, 2017Highlights:
- syntax
- Fix parsing of
${foo[$bar]}
- Fix printer regression where
> >(foo)
would be turned into>>(foo)
- Break comment alignment on any line without a comment, fixing formatting issues
- Error on keywords like
fi
anddone
used as commands
- Fix parsing of
- syntax
-
v1.3.0 Changes
April 24, 2017Highlights:
- syntax
- Fix backslashes in backquote command substitutions
- Disallow some test expressions like
[[ a == ! b ]]
- Disallow some parameter expansions like
${$foo}
- Disallow some arithmetic expressions like
((1=3))
and(($(echo 1 + 2)))
- Binary commands like
&&
,||
and pipes are now left-associative
- fileutil
CouldBeScript
may now return true on non-regular files such as symlinks
- interp
- New experimental package to interpret a
syntax.File
in pure Go
- New experimental package to interpret a
- syntax
-
v1.2.0 Changes
February 22, 2017Highlights:
- syntax
- Add support for escaped characters in bash regular expressions
- fileutil
- New package with some code moved from
cmd/shfmt
, now importable - New funcs
HasShebang
andCouldBeScript
- Require shebangs to end with whitespace to reject
#!/bin/shfoo
- New package with some code moved from
- syntax
-
v1.1.0 Changes
January 05, 2017Highlights:
- syntax
- Parse
[[ a = b ]]
like[[ a == b ]]
, deprecatingTsAssgn
in favour ofTsEqual
- Add support for the
-k
,-G
,-O
and-N
unary operators inside[[ ]]
- Add proper support for
!
in parameter expansions, like${!foo}
- Fix a couple of crashes found via fuzzing
- Parse
- cmd/shfmt
- Rewrite
[[ a = b ]]
into the saner[[ a == b ]]
(see above)
- Rewrite
- syntax