1## bash-4.0-rc1
2+n. The -p option to `declare' now displays all variable values and attributes
3+ (or function values and attributes if used with -f).
4
5+jj. The `declare' builtin now has new -l (convert value to lowercase upon
6+ assignment) and -u (convert value to uppercase upon assignment) options.
7+ There is an optionally-configurable -c option to capitalize a value at
8+ assignment.
9
10## bash-4.2
11+e. declare/typeset has a new `-g' option, which creates variables in the
12+ global scope even when run in a shell function.
13
14## bash-4.4
15+f. The `-p' option to declare and similar builtins will display attributes for
16+ named variables even when those variables have not been assigned values
17+ (which are technically unset).
18
19+p. Bash no longer attempts to perform compound assignment if a variable on the
20+ rhs of an assignment statement argument to `declare' has the form of a
21+ compound assignment (e.g., w='(word)' ; declare foo=$w); compound
22+ assignments are accepted if the variable was already declared as an array,
23+ but with a warning.
24+
25+q. The declare builtin no longer displays array variables using the compound
26+ assignment syntax with quotes; that will generate warnings when re-used as
27+ input, and isn't necessary.
28
29## bash-5.0
30+aa. The `@A' variable transformation now prints a declare command that sets a
31+ variable's attributes if the variable has attributes but is unset.
32+
33+bb. `declare' and `local' now have a -I option that inherits attributes and
34+ value from a variable with the same name at a previous scope.
35
36
37## bash-5.2
38+bb. Array references using `@' and `*' that are the value of nameref variables
39+ (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
40+ set -u is enabled and the array (v) is unset.
41
42+gg. Since there is no `declare -' equivalent of `local -', make sure to use
43+ `local -' in the output of `local -p'.