Immutable
release. Only release title and notes can be modified.
gnash 1.3.9
A continued bash-conformance release. Since 1.3.8, gnash has been run
against further batches of bash 5.3's own test suite and brought into
byte-for-byte agreement across debugger support, programmable completion,
functions, and array subscripts. Highlights below; a number of smaller
fidelity fixes are included.
Debugger support, DEBUG/RETURN traps, and $LINENO
$LINENOinside aDEBUG/RETURN/ERRtrap body reports the line of the
command that fired the trap, not the trap body's own line.- A function invoked while the
DEBUGtrap is running (including the trap
handler itself) no longer spuriously fires theRETURNtrap. - The whole-body
DEBUGtrap reports a function's definition line, command
substitutions run at their enclosing line, and a sourced file gets its own
line numbering starting at 1. - The
DEBUGtrap fires for each expression of an arithmeticfor (( ; ; ))
loop, and thecallerbuiltin now matches bash (top-level form, option and
invalid-number diagnostics).
Programmable completion
complete -preconstructs each specification in bash's canonical option and
action order with correct quoting, listed in bash's hash-table walk order.compgengains thesetopt,shopt,enabled, andhelptopicaction
generators, the-V varnameand-X filterpatoptions, and bash's
option/action/identifier diagnostics;compoptvalidates-ooption names.
Functions
- Enforce
FUNCNESTto cap function-call recursion. - Reject a function name containing an unquoted
$, and prefixfunctionto a
non-identifier name indeclare -f. - Report an error for a malformed integer-attribute assignment (
i=0#4).
Arrays
- Array and associative subscripts are scanned by a single quote-aware parser,
so a key containing]— escaped (a[x\]y]), quoted (a["p]q"]), or from a
substitution (a[$(cmd)]) — is handled consistently for assignment,${...}
reads, and compound literals. - Implement
shopt -s array_expand_once: an already-expanded array subscript is
not re-expanded, so a command substitution left in it errors rather than
running — closing a subscript-injection vector acrossprintf -v,read,
unset, assignment, arithmetic,${a[sub]}, andtest -v. - Implement
test -v/[ -v ]for scalars and array elements.
Install
brew tap brianjfox/tools && brew trust brianjfox/tools && brew install gnash
Or download the universal (arm64 + x86_64) macOS tarball below.