+This document details the changes between this version, bash-4.4-rc2, and
+the previous version, bash-4.4-beta2.
+
+1. Changes to Bash
+
+a. Fixed an out-of-bounds read in the redirection operator completion code.
+
+b. Fixed execution context so `until continue' doesn't disable execution for
+ subsequent commands.
+
+c. Fixed trap handling code so traps don't inherit a command's temporary
+ environment.
+
+d. Fixed a bug that resulted in incorrect line numbers when a function is defined
+ as part of another function's execution.
+
+e. Fixed a bug in the expansion of ${a[@]} in contexts where word splitting is not
+ performed and $IFS is not the default.
+
+f. Fixed a bug that caused ''"$@" to not expand to an empty argument when there are
+ no positional parameters.
+
+g. Fixed a bug that caused a shell compiled without job control to use the incorrect
+ exit status for builtin commands preceded by a command executed from the file
+ system that causes the shell to call waitpid().
+
+h. Improved word completion for quoted strings containing unterminated command
+ substitutions with embedded double quotes.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused mode strings to be displayed incorrectly if the prompt was
+ shorter than the mode string.
+
+3. New Features in Bash
+
+a. Using ${a[@]} or ${a[*]} with an array without any assigned elements when
+ the nounset option is enabled no longer throws an unbound variable error.
+
+4. New Features in Readline
+
+a. New application-callable function: rl_pending_signal(): returns the signal
+ number of any signal readline has caught but not yet handled.
+
+b. New application-settable variable: rl_persistent_signal_handlers: if set to a
+ non-zero value, readline will enable the readline-6.2 signal handler behavior
+ in callback mode: handlers are installed when rl_callback_handler_install is
+ called and removed removed when a complete line has been read.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.4-beta2, and
+the previous version, bash-4.4-rc1.
+
+1. Changes to Bash
+
+a. Fixed a memory leak when processing ${!var[@]}.
+
+b. Fixed a bug that caused subshells to free trap strings associated with
+ inherited signals.
+
+c. Inheriting BASHOPTS from the environment now works to force actions
+ associated with enabling an option, instead of just marking the option
+ as enabled.
+
+d. Fixed a bug that allowed assignments to BASH_CMDS when the shell was in
+ restricted mode.
+
+e. Fixed a bug caused by an accidental omission of part of the original patch
+ for EXECIGNORE.
+
+e. Prompt expansion now quotes the results of the \s, \h, and \H expansions.
+
+f. Fixed a bug that caused parsing errors in command substitutions with
+ consecutive case statements separated by newlines.
+
+g. Updated logic used to decide whether bash is running inside an emacs
+ terminal emulator to work with future emacs versions.
+
+h. Fixed two extended pattern matching bugs caused by premature short-
+ circuiting.
+
+i. Fixed a memory leak in the code that removes duplicate history entries.
+
+j. There are a number of bug fixes to coproc, mapfile, declare, unset,
+ and assignment statements that prevent nameref variables from creating
+ and unsetting variables with invalid names.
+
+k. Fixed a bug that caused variables to be inadvertently marked as both an
+ associative and an indexed array.
+
+l. Fixed a bug that caused `bash -c' to not run a trap specified in the
+ command string.
+
+j. There are a number of bug fixes to coproc, mapfile, declare, and assignment
+ statements that prevent nameref variables from overwriting or modifying
+ attributes of readonly variables.
+
+k. Fixed a bug that caused command substitution to attempt to set the
+ terminal's process group incorrectly.
+
+l. Fixed a bug that could cause prompt string expansion to display error
+ messages when the `nounset' shell option is set.
+
+m. Fixed a bug that caused "$@" to not expand to an empty string under the
+ circumstances when Posix says it should ("${@-${@-$@}}").
+
+n. Fixed several bugs caused by referencing nameref variables whose values
+ are names of unset variables (or names that are valid for referencing
+ but not assignment), including creating variables in the temporary
+ environment.
+
+o. Function tracing and error tracing are disabled if --debugger is supplied
+ at startup but the shell can't find the debugger start file.
+
+p. Fixed a bug when IFS is used as the control variable in a for statement.
+
+q. Fixed a bug with SIGINT received by a command substitution in an interactive
+ shell.
+
+r. The checks for nameref variable self-references are more thorough.
+
+s. Fixed several bugs with multi-line aliases.
+
+t. Fixed `test' to handle the four-argument case where $1 == '(' and
+ $4 == ')'.
+
+u. Fixed a bug in the expansion of $* in the cases where word splitting is
+ not performed.
+
+v. Fixed a bug in execution of case statements where IFS includes the
+ pattern matching characters.
+
+2. Changes to Readline
+
+a. When refreshing the line as the result of a key sequence, Readline attempts
+ to redraw only the last line of a multiline prompt.
+
+b. Fixed an issue that caused completion of git commands to display
+ incorrectly when using colored-completion-prefix.
+
+c. Fixed several redisplay bugs having to do with multibyte characters and
+ invisible characters in prompt strings.
+
+3. New Features in Bash
+
+a. Value conversions (arithmetic expansions, case modification, etc.) now
+ happen when assigning elements of an array using compound assignment.
+
+b. There is a new option settable in config-top.h that makes multiple
+ directory arguments to `cd' a fatal error.
+
+c. Bash now uses mktemp() when creating internal temporary files; it produces
+ a warning at build time on many Linux systems.
+
+4. New Features in Readline
+
+a. The default binding for ^W in vi mode now uses word boundaries specified
+ by Posix (vi-unix-word-rubout is bindable command name).
+
+b. rl_clear_visible_line: new application-callable function; clears all
+ screen lines occupied by the current visible readline line.
+
+c. rl_tty_set_echoing: application-callable function that controls whether
+ or not readline thinks it is echoing terminal output.
+
+d. Handle >| and strings of digits preceding and following redirection
+ specifications as single tokens when tokenizing the line for history
+ expansion.
+
+e. Fixed a bug with displaying completions when the prefix display length
+ is greater than the length of the completions to be displayed.
+
+f. The :p history modifier now applies to the entire line, so any expansion
+ specifying :p causes the line to be printed instead of expanded.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.4-rc1, and
+the previous version, bash-4.4-beta.
+
+1. Changes to Bash
+
+a. Fixed several problems with bash completion not special-casing bash syntax
+ constructs.
+
+b. Fixed a bug that caused the mapfile builtin to not create array variables
+ when a variable of the same name appears in the temporary environment.
+
+c. Fixed a bug that caused prompt expansion to loop when PS1 contained a
+ syntax error.
+
+d. Fixed a bug that caused the ${array[@]@A} expansion to split the results even
+ when double-quoted.
+
+e. There is a new implementation of the code that saves the last CHILD_MAX
+ exited background pids so their status can be queried later.
+
+f. Bash-4.4 can now be configured and built on very old versions of Solaris 2.
+
+g. Fixed problems with --help support for several builtins.
+
+h. Fixed values added to BASH_SOURCE and BASH_LINENO for functions inherited from
+ the environment.
+
+i. Fixed a bug that caused background processes run from non-interactive shells
+ with job control enabled to place the terminal in the wrong process group
+ under certain circumstances.
+
+j. Fixed a bug that caused `fc' to return an incorrect exit status when
+ executing commands from the history list.
+
+k. Fixed a bug that caused the shell to exit when a process substitution received
+ a SIGINT when run in certain terminal emulators.
+
+l. EXECIGNORE now honors the setting of `extglob' when attempting to match
+ executable names.
+
+m. Fixed a bug where `return' used the wrong exit status when executed in a
+ DEBUG trap.
+
+n. Fixed a bug that caused a command containing a here-document and an escaped
+ newline to be stored in the history list incorrectly.
+
+o. Fixed a bug that caused set -e to be honored in cases of builtins invoking
+ other builtins when it should be ignored.
+
+p. Fixed a bug that caused `readonly' and `export' to create local array
+ variables when used within shell functions.
+
+q. Fixed a bug that allowed subshells begun to execute process substitutions to
+ have access to the command's temporary environment.
+
+r. Fixed a bug that could cause the shell to dump core when receiving a SIGCHLD
+ for which a trap has been set while running in posix mode.
+
+s. Fixed a bug that caused bash to not restore BASH_ARGC, BASH_ARGV, BASH_SOURCE,
+ BASH_LINENO, and FUNCNAME if the shell received a SIGINT while reading
+ commands from a file while executing `.'.
+
+t. Fixed a bug that caused the `-o history' option to have no effect when
+ supplied on the command line when starting a new shell.
+
+u. Fixed a bug that caused history expansions occurring in command substitutions
+ to not be performed.
+
+v. Fixed a bug that caused `eval' run in a non-interactive shell to disable
+ history expansion for the remainder of the shell script, even if the script
+ had previously enabled it.
+
+w. Fixed a bug that caused "$@" to not expand to multiple words when IFS is set
+ to the empty string.
+
+x. Fixed a bug that caused process and command substitution to inherit output
+ buffered in the stdio library but not written.
+
+y. Fixed a bug that caused a terminating signal received during `echo' to run
+ an exit trap in a signal handler context.
+
+z. Fixed a bug that caused a builtin command containing a process substitution to
+ return the wrong exit status.
+
+aa. Fixed a bug that caused `()' subshells with piped input to incorrectly redirect
+ the standard input of some of the commands in the subshell from /dev/null.
+
+bb. The history builtin now uses more descriptive error messages for missing or
+ invalid timestamps.
+
+2. Changes to Readline
+
+a. The history file writing functions only attempt to create and use a backup
+ history file if the history file exists and is a regular file.
+
+b. Fixed an out-of-bounds read in readline's internal tilde expansion interface.
+
+c. Fixed several redisplay bugs with prompt strings containing multibyte
+ and non-visible characters whose physical length is longer than the screen
+ width.
+
+d. Fixed a redisplay bug with prompt strings containing invisible characters
+ whose physical length exceeds the screen width and using incremental search.
+
+e. Readline prints more descriptive error messages when it encounters errors
+ while reading an inputrc file.
+
+f. Fixed a bug in the character insertion code that attempts to optimize
+ typeahead when it reads a character that is not bound to self-insert and
+ resets the key sequence state.
+
+3. New Features in Bash
+
+a. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial
+ environment.
+
+b. inherit_errexit: a new `shopt' option that, when set, causes command
+ substitutions to inherit the -e option. By default, those subshells disable
+ -e. It's enabled as part of turning on posix mode.
+
+c. New prompt string: PS0. Expanded and displayed by interactive shells after
+ reading a complete command but before executing it.
+
+d. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to SIG_DFL
+ when the shell is started, so they are set to SIG_DFL in child processes.
+
+e. Posix-mode shells now allow double quotes to quote the history expansion
+ character.
+
+f. OLDPWD can be inherited from the environment if it names a directory.
+
+g. Shells running as root no longer inherit PS4 from the environment, closing a
+ security hole involving PS4 expansion performing command substitution.
+
+h. If executing an implicit `cd' when the `autocd' option is set, bash will now
+ invoke a function named `cd' if one exists before executing the `cd' builtin.
+
+4. New Features in Readline
+
+a. If an incremental search string has its last character removed with DEL, the
+ resulting empty search string no longer matches the previous line.
+
+b. If readline reads a history file that begins with `#' (or the value of
+ the history comment character) and has enabled history timestamps, the history
+ entries are assumed to be delimited by timestamps. This allows multi-line
+ history entries.
+
+c. Readline now throws an error if it parses a key binding without a terminating
+ `:' or whitespace.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.4-beta, and
+the previous version, bash-4.4-alpha.
+
+1. Changes to Bash
+
+a. Fixed two bugs that caused out-of-bounds reads when skipping over assignment
+ statements while finding the word on which to perform programmable
+ completion.
+
+b. Fixed a memory leak in programmable completion.
+
+c. Fixed a bug that could cause the shell to crash when interrupting the
+ wait builtin.
+
+d. Fixed a bug that caused ${!vvv@} to be interpreted as introducing the new
+ `@' operator.
+
+e. Fixed a bug that caused the && and || operators to be incorrectly optimized.
+
+f. The shell now undoes redirections before exiting the shell when the `-e'
+ option is enabled, and a shell function fails.
+
+g. History expansion now skips over the history expansion character in command
+ and process substitution.
+
+h. Fixed a bug that caused stray '\001' characters to be added to the output
+ of `declare -p'.
+
+i. Fixed a memory leak when processing declare commands that perform compound
+ array assignments.
+
+j. Fixed a bug that could cause the shell to crash when reading input from a
+ file and the limit on open file descriptors is high.
+
+k. Fixed a bug that caused the ERR and RETURN traps to be unset if they were
+ set in a shell function but unset previously.
+
+l. Fixed a bug that caused several signals to be ignored if `exec' failed in
+ an interactive shell.
+
+m. A posix-mode non-interactive shell now considers a parameter expansion error
+ to be a fatal error.
+
+n. The `time' command now prints timing statistics for failed commands when
+ the -e option is enabled.
+
+o. Fixed a bug that caused the shell to crash when attempting to indirectly
+ expand a shell variable with an invalid name.
+
+p. Fixed a bug that caused the shell to crash when running a trap containing
+ a process substitution.
+
+q. Bash now prints the keyword `function' before a function with the same name
+ as a reserved word when using `declare -f' to avoid parse errors when
+ reusing the output as input.
+
+r. Fixed a bug that caused the shell to crash when using declare -g to attempt
+ to redefine an existing global indexed array variable as an associative
+ array.
+
+s. Fixed a memory leak that occurred when interrupting brace expansions
+ generating a sequence.
+
+t. Fixed a bug that resulted in alias expansion in redirections.
+
+u. The `declare -a' and `declare -A' commands now print fewer warnings when
+ attempting to create and initialize an array at the same time, but
+ relying on word expansions to construct the compound assignment.
+
+v. The `help' builtin now behaves better in locales where each wide
+ character occupies more than one display column.
+
+w. The `read' builtin no longer has a possible race condition when a timeout
+ occurs.
+
+x. Fixed several expansion problems encountered when IFS="'".
+
+y. Fixed a problem with the expansion of $'\c?'.
+
+z. Bash no longer splits the expansion of here-strings, as the documentation
+ has always said.
+
+aa. Bash now puts `s' in the value of $- if the shell is reading from standard
+ input, as Posix requires.
+
+bb. Fixed a bug that caused the shell to crash if invoked with a NULL
+ environment.
+
+cc. The shell now only trusts an inherited value for $PWD if it begins with a
+ `/'.
+
+dd. Fixed a memory leak when creating local array variables and assigning to
+ them using compound assignment with the `declare' builtin.
+
+ee. Fixed a bug that could cause the shell to crash when processing nested here
+ documents inside a command substitution.
+
+ff. Array keys and values are now displayed using $'...' quoting where
+ appropriate.
+
+gg. Fixed a bug that could cause the shell to crash if the replacement string
+ in pattern substitution was NULL.
+
+hh. Fixed a bug that could cause the shell to crash if a command substitution
+ contained a non-fatal syntax error.
+
+ii. Fixed a bug that could cause the shell to crash if variable indirection
+ resulted in a NULL variable.
+
+jj. Fixed a bug that could cause the shell to crash if a long string contained
+ multiple unterminated parameter expansion constructs.
+
+kk. Improved the code that acts on SIGINT received while waiting for a child
+ process only if the child exits due to SIGINT.
+
+ll. $BASH_SUBSHELL now has more consistent values in asynchronous simple
+ commands.
+
+2. Changes to Readline
+
+a. Colored completion prefixes are now displayed using a different color, less
+ likely to collide with files.
+
+b. Fixed a bug that caused vi-mode character search to misbehave when
+ running in callback mode.
+
+c. Fixed a bug that caused output to be delayed when input is coming from a
+ macro in vi-mode.
+
+d. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing
+ a multi-key key sequence via a macro.
+
+e. Fixed a bug that caused problems with applications that supply their own
+ input function when performing completion.
+
+f. When read returns -1/EIO when attempting to read a key, return an error
+ instead of line termination back to the caller.
+
+g. Updated tty auditing feature based on patch from Red Hat.
+
+h. Fixed a bug that could cause the history library to crash on overflows
+ introduced by malicious editing of timestamps in the history file.
+
+3. New Features in Bash
+
+a. `make install' now installs the example loadable builtins and a set of
+ bash headers to use when developing new loadable builtins.
+
+b. `enable -f' now attempts to call functions named BUILTIN_builtin_load when
+ loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows
+ loadable builtins to run initialization and cleanup code.
+
+c. There is a new BASH_LOADABLES_PATH variable containing a list of directories
+ where the `enable -f' command looks for shared objects containing loadable
+ builtins.
+
+d. The `complete_fullquote' option to `shopt' changes filename completion to
+ quote all shell metacharacters in filenames and directory names.
+
+e. The `kill' builtin now has a `-L' option, equivalent to `-l', for
+ compatibility with Linux standalone versions of kill.
+
+4. New Features in Readline
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.4-alpha, and
+the previous version, bash-4.3-release.
+
+1. Changes to Bash
+
+a. A bug that caused pipelines to be corrupted while running the DEBUG trap
+ was fixed.
+
+b. A bug that accidentally omitted the `-R' unary operator from `test' was
+ fixed.
+
+c. A bug that could cause the shell to not restore the terminal's process
+ group on shell exit was fixed.
+
+d. Several changes were made to programmable completion to accommodate
+ assumptions made by the bash-completion package.
+
+e. Bash no longer inhibits C-style escape processing ($'...') while performing
+ pattern substitution word expansions.
+
+f. Fixed a bug that caused `return' executed from a trap handler to use the
+ wrong return status when one was not supplied as an argument.
+
+g. In Posix mode, defining a function with the same name as a special
+ builtin is now an error, fatal only when the shell is not interactive.
+
+h. Fixed a bug that caused compound array assignments to discard unset or null
+ variables used as subscripts, thereby making it appear as if the index was
+ not present.
+
+i. Fixed a bug that caused extended glob patterns to incorrectly match
+ filenames with a leading `.'.
+
+j. Fixed a bug involving sign extension when reallocating the input line
+ after a history expansion, causing segmentation faults.
+
+k. Bash now does a better job at identifying syntax errors during word
+ completion and tailoring completion appropriately.
+
+l. Bash now uses the current locale's decimal point in comamnd timing output.
+
+m. Fixed a bug that caused segmentation faults while reading here documents if
+ PS2 contains a command substitution.
+
+n. There are several changes to how $@ is expanded when unquoted but in a
+ context where word splitting is not performed (e.g., on the rhs of an
+ assignment or in a conditional command).
+
+o. Bash now quotes command hash table entries that contain shell metacharacters
+ when displaying hash table contents.
+
+p. Fixed a potential file descriptor leak when dup2() fails while performing a
+ redirection.
+
+q. Fixed a bug that caused directory names evaluated during word completion to
+ be dequoted twice.
+
+r. Fixed several bugs which could result in indirect variable expansion and
+ namerefs creating variables with invalid names or referencing variables
+ set to the empty string.
+
+s. Fixed a bug that caused bash to not expand $0 in word expansions where it
+ should.
+
+t. Fixed a bug that caused bash to perform process substitution if <(
+ appeared inside an arithmetic context.
+
+u. Fixed a bug in extglob pattern parsing that caused slashes in the pattern
+ to be confused as directory names.
+
+v. Fixed several bugs with treatment of invisible variables (variables with
+ attributes that are unset because they have never been assigned values).
+
+w. Fixed a bug that caused the `read' builtin to not clean up readline's
+ state when using the -e and -t options together and the read timed out.
+
+x. Fixed a bug that caused the shell to exit with the wrong (but non-zero)
+ value if a command was not found or was not executable.
+
+y. Fixed a bug that caused the `time' reserved word to not be recognized as
+ such in all contexts where it should have been.
+
+z. Fixed a bug that caused the shell to close process subsitution file
+ descriptors when executing a script without the `#!' leading line.
+
+aa. Fixed a typo that caused the `compat42' shell option to set the wrong
+ compatibility level.
+
+bb. The shell now handles process substitution commands with embedded
+ parentheses the same way as it does when parsing command substitution.
+
+cc. Fixed a bug that caused nested pipelines and the `lastpipe' shell option
+ to produce core dumps.
+
+dd. Fixed a bug that caused patterns containing `*' to match pathnames in cases
+ where slashes must be matched explicitly.
+
+ee. Fixed a problem with patterns containing `:' in colon-separated variables
+ lik GLOBIGNORE.
+
+ff. Fixed a bug that caused indirect variable expansion using indexed arrays to
+ always use index 0.
+
+gg. Fixed a parsing problem that caused quoted newlines immediately following a
+ command substitution to be mishandled in certain cases.
+
+hh. Fixed a potential buffer overflow on systems without locale_charset or the
+ bash replacement.
+
+ii. Fixed a bug that caused background processes to modify the terminal's
+ process group under certain circumstances.
+
+jj. Asynchronous commands now always set $? to 0 and are not affected by
+ whether or not the command's exit status is being inverted.
+
+kk. Fixed a problem that caused a line ending with an escaped newline and
+ containingh a prior `eval' to be incorrectly parsed.
+
+ll. Fixed an issue with programmable completion and `!' in extglob patterns
+ used as arguments to `compgen -X'.
+
+mm. Word completion now treats the two-character token `>|' as requiring
+ filename expansion.
+
+nn. Bash no longer expands tildes in $PATH elements while in Posix mode.
+
+oo. Fixed a bug that caused bash to not clean up readline's state, including
+ the terminal settings, if it received a fatal signal while in a readline()
+ call (including `read -e' and `read -s').
+
+pp. Fixed bug that caused importing shell functions from the environment to
+ execute additional commands following the function.
+
+qq. Fixed a bug that caused the parser to return a lookahead character pushed
+ back by a previous call, even when on another line.
+
+rr. Fixed a bug that caused many here-documents or many nested case statements
+ to overflow an internal stack.
+
+ss. Changed the way bash encodes exported functions for inclusion in the
+ environment to avoid name collisions with valid variable names and to
+ indicate that they are exported functions.
+
+tt. Fixed a bug that could result in an invalid memory access when processing
+ a here document delimited by end of file or end of string.
+
+uu. Fixed a bug that could cause an invalid memory access if a command was run
+ before initializing the job control framework.
+
+vv. When in Posix mode, bash prints shell function definitions as Posix
+ specifies them, without the leading `function' keyword.
+
+ww. The variable attribute display builtins no longer display variables with
+ invalid names that were imported from the environment.
+
+xx. Fixed a bug that could allow `break' or `continue' executed from shell
+ functions to affect loops running outside of the function.
+
+yy. Fixed a bug that could cause a restricted shell to attempt to import shell
+ functions from the environment.
+
+zz. The shell now allows double-quoted identifiers in arithmetic expressions.
+
+aaa. Fixed a bug that could allow scalar variables subscripted using [@] in
+ word expansions to be incorrectly quoted.
+
+bbb. The shell now makes sure to ignore SIGTSTP/SIGTTIN/SIGTTOU in child
+ processes if they were ignored at shell startup, even if job control is
+ in effect.
+
+ccc. Fixed a bug that could cause $* to be split on spaces when IFS is set to
+ the empty string.
+
+ddd. Posix says that expanding $* in a pattern context where the expansion is
+ double-quoted should not treat $* as if it were double quoted.
+
+eee. Bash now restores getopts' internal state between calls to getopts even if
+ a shell function declares a local copy of OPTIND.
+
+fff. Fixed a bug that could cause `history -r' or `history -n' to read identical
+ lines from the history file more than once.
+
+ggg. The commands executed by `bind -x' now redisplay at most the final line
+ of a multi-line prompt, and those commands may return 124 to indicate that
+ the entire prompt should be redrawn.
+
+hhh. Fixed a bug that could cause `mapfile' to create variables with invalid
+ names.
+
+iii. The shell only goes into debugging mode when --debugger is supplied if
+ the debugger initialization file is present.
+
+jjj. Fixed a bug that disallowed an assignment to (implicit) subscript 0 of an
+ existing array in a declare command that set the readonly attribute.
+
+kkk. Fixed a bug that inadvertently allowed assignments to FUNCNAME to disable
+ its special status.
+
+lll. Appending to an existing array variable using the compound assignment
+ syntax (var+=(aaa)) should not affect assignments to existing subscripts
+ appearing in the compound assignment.
+
+mmm. Fixed a bug that could cause the shell to crash when a variable with a
+ null value was passed in the temporary environment and the variable's
+ attributes are modified using `declare' while performing a redirection.
+
+nnn. Fixed a bug in printf so that a missing precision specifier after a `.'
+ is treated as 0.
+
+ooo. Fixed a bug that attempted to use the internal command timing to time
+ pipeline components if the pipeline elements are separated by newlines.
+
+ppp. Fixed a bug that caused `declare -al foo=(ONE TWO THREE)' to not lowercase
+ the values on assignment.
+
+qqq. Bash does a better job of determining whether or not files are executable
+ when running on Windows, since the X_OK flag to access(2) is not supported.
+
+rrr. Fixed a bug that caused some of the shell's internal traps (e.g., ERR) to
+ be interrupted (and leave incorrect state) by pending SIGINTs.
+
+sss. Fixed a bug in the bash interface to history expansion to avoid attempting
+ expansion if the history expansion character occurs in a command
+ substitution.
+
+ttt. Fixed a bug that caused the select command to crash if the REPLY variable
+ ends up empty (e.g., if it's made readonly)
+
+uuu. Bash handles backslash-quoting of multibyte characters better when quoting
+ output that is intended to be reused.
+
+vvv. System-specific changes for: Windows, Cygwin.
+
+www. Fixes for upper and lower-casing multibyte characters, some locales have
+ characters whose upper and lowercase versions have different numbers of
+ bytes.
+
+xxx. Fixed a bug that caused the ERR trap in a shell function to have the
+ wrong value for $LINENO.
+
+yyy. Fixed a bug that resulted in incorrect quoting of regexps for the =~
+ operator when an open brace appears without a close brace.
+
+zzz. Fixed a bug in the array unset operation that caused it to attempt to
+ parse embedded single and double quotes.
+
+aaaa. Fixed a bug that caused $* to not expand with the first character of
+ $IFS as a separator in a context where word splitting will not take
+ place.
+
+bbbb. Fixed two bugs that could cause the shell to dereference a null pointer
+ while attempting to print an error message from arithmetic expansion.
+
+cccc. Fixed a bug that resulted in short-circuited evaluation when reading
+ commands from a string ending in an unquoted backslash, or when sourcing
+ a file that ends with an unquoted backslash.
+
+dddd. Fixed a bug that resulted in the no-fork optimization not cleaning up
+ any FIFOs created by process substitution.
+
+eeee. If the -T option is not set, allow the source builtin and shell functions
+ to set a DEBUG trap that persists after the sourced file or function
+ returns, instead of restoring the old (unset) value unconditionally.
+
+ffff. Fixed a bug that caused redirections to not be undone on some syntax
+ errors, e.g., when parsing a command substitution.
+
+gggg. Bash only adds asynchronous commands to the table of background pids
+ whose status it remembers, to avoid it growing too large during scripts
+ that create and reap large numbers of child processes. This means that
+ `wait' no longer works on synchronous jobs, but $? can be used to get
+ the exit status in those cases.
+
+hhhh. Bash now checks whether or not a shell script argument is a directory
+ before trying to open it; Posix says implementations may allow open(2)
+ on a directory.
+
+iiii. Fixed a bug that could cause the shell to set the terminal's process
+ group to a background process group when running as part of a pipeline.
+
+jjjj. Made a few changes to strings to avoid possible potential negative effects
+ caused by malicious translations.
+
+kkkk. Fixed a bug that caused the `unset' builtin to continue to treat its
+ arguments as functions after unsetting a function when invoked with no
+ options.
+
+llll. Fixed a bug that would not replace empty strings using pattern
+ substitution even if the pattern matched the empty string.
+
+mmmm. Fixed a bug with word completion that prevented some characters from
+ being backslash-quoted (backquote, dollar sign).
+
+nnnn. Fixed a bug that prevented a command from the history re-executed by the
+ `fc' builtin from setting verbose mode.
+
+oooo. Fixed a bug that caused the shell to not enable and disable function
+ tracing with changes to the `extdebug' shell option.
+
+pppp. Fixed a bug that caused assignments to nameref variables pointing to
+ unset variables with attributes but no values to create variables with
+ incorrect names.
+
+qqqq. Fixed a bug that caused `unset' on nameref variables (without -n) to
+ unset the wrong variable under certain circumstances.
+
+rrrr. Fixed a bug that caused close braces occurring in brace expansions within
+ command substitutions to incorrectly terminate parameter expansions.
+
+ssss. Fixed a bug that caused `command -p' to temporarily alter $PATH.
+
+tttt. Fixed a bug that caused interactive shells compiled without job control
+ to return incorrect status values for child processes when running a
+ single command that creates enough children to use the entire PID space.
+
+uuuu. `esac' should not be recognized as a reserved word when it appears as the
+ second or later pattern in a case statement pattern list.
+
+vvvv. Fixed a bug that caused the completion code to read past the end of the
+ readline line buffer while skipping assignment statements to find the
+ command name.
+
+wwww. Fixed a bug that caused case statements within loops contained in a
+ command substitution to be parsed incorrectly.
+
+xxxx. Fixed a bug that could cause SIGCHLD handling to be delayed after
+ running `wait' with no arguments and interrupting it with ^C without
+ a trap handler installed.
+
+2. Changes to Readline
+
+a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y'
+ commands with modifiers was fixed.
+
+b. Fixed a bug that caused callback mode to dump core when reading a
+ multiple-key sequence (e.g., arrow keys).
+
+c. Fixed a bug that caused the redisplay code to erase some of the line when
+ using horizontal scrolling with incremental search.
+
+d. Readline's input handler now performs signal processing if read(2) is
+ interrupted by SIGALRM or SIGVTALRM.
+
+e. Fixed a problem with revert-all-at-newline freeing freed memory.
+
+f. Clarified the documentation for the history_quotes_inhibit_expansion
+ variable to note that it inhibits scanning for the history comment
+ character and that it only affects double-quoted strings.
+
+g. Fixed an off-by-one error in the prompt printed when performing searches.
+
+h. Use pselect(2), if available, to wait for input before calling read(2), so
+ a SIGWINCH can interrupt it, since it doesn't interrupt read(2).
+
+i. Some memory leaks caused by signals interrupting filename completion have
+ been fixed.
+
+j. Reading EOF twice on a non-empty line causes EOF to be returned, rather
+ than the partial line. This can cause partial lines to be executed on
+ SIGHUP, for example.
+
+k. Fixed a bug concerning deleting multibyte characters from the search
+ string while performing an incremental search.
+
+l. Fixed a bug with tilde expanding directory names in filename completion.
+
+m. Fixed a bug that did not allow binding sequences beginning with a `\'.
+
+n. Fixed a redisplay bug involving incorrect line wrapping when the prompt
+ contains a multibyte character in the last screen column.
+
+o. Fixed a bug that caused history expansion to disregard characters that are
+ documented to delimit a history event specifier without requiring `:'.
+
+p. Fixed a bug that could cause reading past the end of a string when reading
+ the value when binding the set of isearch terminators.
+
+q. Fixed a bug that caused readline commands that depend on knowing which
+ key invoked them to misbehave when dispatching key sequences that are
+ prefixes of other key bindings.
+
+r. Paren matching now works in vi insert mode.
+
+3. New Features in Bash
+
+a. There is now a settable configuration #define that will cause the shell
+ to exit if the shell is running setuid without the -p option and setuid
+ to the real uid fails.
+
+b. Command and process substitutions now turn off the `-v' option when
+ executing, as other shells seem to do.
+
+c. The default value for the `checkhash' shell option may now be set at
+ compile time with a #define.
+
+d. The `mapfile' builtin now has a -d option to use an arbitrary character
+ as the record delimiter, and a -t option to strip the delimiter as
+ supplied with -d.
+
+e. The maximum number of nested recursive calls to `eval' is now settable in
+ config-top.h; the default is no limit.
+
+f. The `-p' option to declare and similar builtins will display attributes for
+ named variables even when those variables have not been assigned values
+ (which are technically unset).
+
+g. The maximum number of nested recursive calls to `source' is now settable
+ in config-top.h; the default is no limit.
+
+h. All builtin commands recognize the `--help' option and print a usage
+ summary.
+
+i. Bash does not allow function names containing `/' and `=' to be exported.
+
+j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
+
+k. The shell now allows `time ; othercommand' to time null commands.
+
+l. There is a new `--enable-function-import' configuration option to allow
+ importing shell functions from the environment; import is enabled by
+ default.
+
+m. `printf -v var ""' will now set `var' to the empty string, as if `var=""'
+ had been executed.
+
+n. GLOBIGNORE, the pattern substitution word expansion, and programmable
+ completion match filtering now honor the value of the `nocasematch' option.
+
+o. There is a new ${parameter@spec} family of operators to transform the
+ value of `parameter'.
+
+p. Bash no longer attempts to perform compound assignment if a variable on the
+ rhs of an assignment statement argument to `declare' has the form of a
+ compound assignment (e.g., w='(word)' ; declare foo=$w); compound
+ assignments are accepted if the variable was already declared as an array,
+ but with a warning.
+
+q. The declare builtin no longer displays array variables using the compound
+ assignment syntax with quotes; that will generate warnings when re-used as
+ input, and isn't necessary.
+
+r. Executing the rhs of && and || will no longer cause the shell to fork if
+ it's not necessary.
+
+s. The `local' builtin takes a new argument: `-', which will cause it to save
+ the single-letter shell options and restore their previous values at
+ function return.
+
+t. `complete' and `compgen' have a new `-o nosort' option, which forces
+ readline to not sort the completion matches.
+
+u. Bash now allows waiting for the most recent process substitution, since it
+ appears as $!.
+
+v. The `unset' builtin now unsets a scalar variable if it is subscripted with
+ a `0', analogous to the ${var[0]} expansion.
+
+w. `set -i' is no longer valid, as in other shells.
+
+x. BASH_SUBSHELL is now updated for process substitution and group commands
+ in pipelines, and is available with the same value when running any exit
+ trap.
+
+y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or
+ not bash is being run in a GNU Emacs shell window.
+
+z. Bash now treats SIGINT received when running a non-builtin command in a
+ loop the way it has traditionally treated running a builtin command:
+ running any trap handler and breaking out of the loop.
+
+aa. New variable: EXECIGNORE; a colon-separate list of patterns that will
+ cause matching filenames to be ignored when searching for commands.
+
+bb. Aliases whose value ends in a shell metacharacter now expand in a way to
+ allow them to be `pasted' to the next token, which can potentially change
+ the meaning of a command (e.g., turning `&' into `&&').
+
+4. New Features in Readline
+
+a. The history truncation code now uses the same error recovery mechansim as
+ the history writing code, and restores the old version of the history file
+ on error. The error recovery mechanism handles symlinked history files.
+
+b. There is a new bindable variable, `enable-bracketed-paste', which enables
+ support for a terminal's bracketed paste mode.
+
+c. The editing mode indicators can now be strings and are user-settable
+ (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
+ variables). Mode strings can contain invisible character sequences.
+ Setting mode strings to null strings restores the defaults.
+
+d. Prompt expansion adds the mode string to the last line of a multi-line
+ prompt (one with embedded newlines).
+
+e. There is a new bindable variable, `colored-completion-prefix', which, if
+ set, causes the common prefix of a set of possible completions to be
+ displayed in color.
+
+f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
+ mode yank-pop.
+
+g. The redisplay code underwent several efficiency improvements for multibyte
+ locales.
+
+h. The insert-char function attempts to batch-insert all pending typeahead
+ that maps to self-insert, as long as it is coming from the terminal.
+
+i. rl_callback_sigcleanup: a new application function that can clean up and
+ unset any state set by readline's callback mode. Intended to be used
+ after a signal.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-release, and
+the previous version, bash-4.3-rc2.
+
+1. Changes to Bash
+
+a. Only Posix-mode shells should exit on an assignment failure in the
+ temporary environment preceding a special builtin. This is how it's been
+ documented.
+
+b. Fixed a bug that caused a failed special builtin to not exit a posix-mode
+ shell if the failing builtin was on the LHS of a && or ||.
+
+c. Changed the handling of unquoted backslashes in regular expressions to be
+ closer to bash-4.2.
+
+d. globstar (**) no longer traverses symbolic links that resolve to
+ directories. This eliminates some duplicate entries.
+
+e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the
+ SIGCHLD disposition.
+
+f. Fixed a bug that caused a crash when -x was enabled and a command
+ contained a printable multibyte (wide) character.
+
+g. Fixed a bug that caused an interactive shell without line editing enabled
+ to read invalid data after receiving a SIGINT.
+
+h. Fixed a bug that caused command word completion to fail if the directory in
+ $PATH where the completion would be found contained single or double quotes.
+
+i. Fixed a bug that caused a shell with -v enabled to print commands in $()
+ multiple times.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused `undo' to reference freed memory or null pointers.
+
+3. New Features in Bash
+
+a. The [[ -v ]] option now understands array references (foo[1]) and returns
+ success if the referenced element has a value.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-rc2, and the
+previous version, bash-4.3-rc1.
+
+1. Changes to Bash
+
+a. Fixed a bug that left variables set by printf -v marked as invisible.
+
+b. Fixed an off-by-one error in a job control warning message.
+
+c. Fixed a bug that caused the shell to crash after declaring a nameref variable
+ without a value.
+
+d. Fixed a bug that caused asynchronous commands to not set $? correctly.
+
+e. Fixed a bug that caused out-of-order execution when executing aliases with
+ embedded newlines containing `.' commands.
+
+f. Fixed a bug that caused error messages generated by expansion errors in
+ `for' commands to have the wrong line number.
+
+g. Fixed a bug that caused the `wait' builtin to not be interruptible in an
+ interactive shell with job control enabled.
+
+h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in
+ asynchronous subshell commands.
+
+i. Bash now requires that the value assigned to a nameref variable be a valid
+ shell identifier (variable name or array reference).
+
+j. Converting an existing variable to a nameref variable now turns off the
+ -i/-l/-u/-c attributes.
+
+k. Displaying a nameref variable with `declare -p' now displays the nameref
+ variable and its value rather than following the nameref chain.
+
+l. Fixed a problem with interrupt handling that caused a second and subsequent
+ SIGINT to be ignored by interactive shells.
+
+m. Fixed a bug that caused certain positional parameter and array expansions
+ to mishandle (discard) null positional parameters and array elements.
+
+n. The shell no longer blocks receipt of signals while running trap handlers
+ for those signals, and allows most trap handlers to be run recursively
+ (running trap handlers while a trap handler is executing).
+
+o. The shell now handles backslashes in regular expression arguments to the
+ [[ command's =~ operator slightly differently, resulting in more
+ consistent behavior.
+
+2. Changes to Readline
+
+a. Fixed a bug that could cause readline to crash and seg fault attempting to
+ expand an empty history entry.
+
+b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all
+ color processing but leave color enabled.
+
+c. Fixed a bug that caused display problems with multi-line prompts containing
+ invisible characters on multiple lines.
+
+d. Fixed a bug that caused effects made by undoing changes to a history line to
+ be discarded.
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+a. When creating shared libraries on Mac OS X, the pathname written into the
+ library (install_name) no longer includes the minor version number.
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-rc1, and the
+previous version, bash-4.3-beta2.
+
+1. Changes to Bash
+
+a. Fixed a bug in bash completion that caused a tilde to be expanded even if
+ the `direxpand' option was not enabled.
+
+b. Fixed a potential bug that could cause corrupted input in interactive shells
+ running without line editing and with `ignoreeof' enabled.
+
+c. Fixed a bug that could cause failures when opening pipes back to shells
+ created to run process substitutions.
+
+d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR
+ to be set in order to actually change the current text domain.
+
+e. Changed the way redirections are printed to avoid confusion when the target
+ of an output redirection is a process substitution beginning with `>'.
+
+2. Changes to Readline
+
+a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13).
+
+3. New Features in Bash
+
+a. `cd' has a new `-@' option to browse a file's extended attributes on
+ systems that support O_XATTR.
+
+4. New Features in Readline
+
+a. There are additional default key bindings for MinGW32
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-beta2, and the
+previous version, bash-4.3-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused assignment to an unset variable using a negative
+ subscript to result in a segmentation fault.
+
+b. Fixed a bug that caused assignment to a string variable using a negative
+ subscript to use the incorrect index.
+
+c. Fixed a bug that caused some strings to be interpreted as invalid
+ extended globbing expressions when used with the help builtin.
+
+d. Fixed a bug that caused an attempt to trap a signal whose disposition
+ cannot be changed to reference uninitialized memory.
+
+e. Command completion now skips assignment statements preceding a command
+ name and completes the command.
+
+f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump
+ core under certain circumstances.
+
+g. Fixed a bug that caused the `read -N' to misbehave when the input stream
+ contains 0xff.
+
+2. Changes to Readline
+
+a. Changed message when an incremental search fails to include "failed" in
+ the prompt and display the entire search string instead of just the last
+ matching portion.
+
+b. Fixed a bug that caused an arrow key typed to an incremental search prompt
+ to process the key sequence incorrectly.
+
+c. Additional key bindings for arrow keys on MinGW.
+
+3. New Features in Bash
+
+a. The help builtin now attempts substring matching (as it did through
+ bash-4.2) if exact string matching fails.
+
+b. The fc builtin now interprets -0 as the current command line.
+
+c. Completing directory names containing shell variables now adds a trailing
+ slash if the expanded result is a directory.
+
+4. New Features in Readline
+
+a. rl_change_environment: new application-settable variable that controls
+ whether or not Readline modifies the environment (currently readline
+ modifies only LINES and COLUMNS).
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-beta, and the
+previous version, bash-4.3-alpha.
+
+1. Changes to Bash
+
+a. Fixed a bug in the prompt directory name "trimming" code that caused
+ memory corruption and garbled the results.
+
+b. Fixed a bug that caused single quotes that resulted from $'...' quoting
+ in the replacement portion of a double-quoted ${word/pat/rep} expansion
+ to be treated as quote characters.
+
+c. Fixed a bug that caused assignment statements preceding a command word to
+ result in assignment statements following a declaration command to not be
+ expanded like assignment statements.
+
+d. Fixed a bug with variable search order in the presence of local variables
+ with the same name as variables in the temporary environment supplied to
+ a shell function.
+
+e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process
+ substitutions even in an arithmetic context.
+
+f. Fixed several cases where `invisible' variables (variables with attributes
+ but no values, which are technically unset) were treated incorrectly.
+
+g. Fixed a bug that caused group commands in pipelines that were not the
+ last element to not run the EXIT trap.
+
+h. Fixed a bug that caused `unset -n' to not unset a nameref variable in
+ certain cases.
+
+i. Fixed the nameref circular reference checking to be less strict and only
+ disallow a nameref variable with the same value as its name at the global
+ scope.
+
+j. Fixed a bug that caused trap handlers to be executed recursively,
+ corrupting internal data structures.
+
+k. Fixed a bug that could result in bash not compiling if certain options were
+ not enabled.
+
+l. Fixed a bug that caused the arithmetic expansion code to attempt variable
+ assignments when operator precedence prohibited them.
+
+m. Word expansions like ${foo##bar} now understand indirect variable references.
+
+n. Fixed a bug that caused `declare -fp name' to not display a function
+ definition.
+
+o. Fixed a bug that caused asynchronous child processes to modify the stdin
+ file pointer when bash was using it to read a script, which modified the
+ parent's value as well.
+
+2. Changes to Readline
+
+a. Fixed a bug in vi mode that caused the arrow keys to set the saved last
+ vi-mode command to the wrong value.
+
+b. Fixed a bug that caused double-quoted strings to be scanned incorrectly
+ when being used as the value of a readline variable assignment.
+
+c. Fixed a bug with vi mode that prevented `.' from repeating a command
+ entered on a previous line (command).
+
+d. Fixed a bug that could cause completion to core dump if it was interrupted
+ by a signal.
+
+e. Readline now sends the meta-key enable string to the terminal if the
+ terminal has been successfully initialized.
+
+f. Readline now calls the signal hook after resizing the terminal when it
+ receives a SIGWINCH.
+
+g. Fixed a bug that could cause the history list code to perform an out-of-
+ bounds array reference if the history list is empty.
+
+3. New Features in Bash
+
+a. Shells started to run process substitutions now run any trap set on EXIT.
+
+b. There is now a configure-time option to enable the globasciiranges option
+ by default.
+
+c. The read builtin now checks its first variable argument for validity before
+ trying to read any input.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.3-alpha,
+and the previous version, bash-4.2-release.
+
+1. Changes to Bash
+
+a. Fixed several bugs concerning incomplete bracket expressions in filename
+ generation (globbing) patterns.
+
+b. Fixed a bug with single quotes and WORD in ${param op WORD} when running
+ in Posix mode.
+
+c. Fixed a bug that caused the pattern removal and pattern substitution word
+ expansions and case statement word expansion to not match the empty string.
+
+d. Fixed a bug that caused the tzset() function to not work after changing
+ the TZ enviroment variable.
+
+e. Fixed a bug that caused the RHS of an assignment statement to undergo
+ word splitting when it contained an unquoted $@.
+
+f. Fixed bugs that caused the shell to not react to a SIGINT sent while
+ waiting for a child process to exit.
+
+g. Bash doesn't try to run things in a signal handler context when it gets a
+ signal (SIGINT/SIGHUP/etc) while reading input using readline but still
+ be responsive to terminating signals.
+
+h. Fixed a bug that caused bash to go into an infinite loop if a filename
+ to be matched contained an invalid multibyte character.
+
+i. Fixed a bug that caused PS4 to end up being truncated if it is longer
+ than 128 bytes.
+
+j. Fixed a bug that caused brace expansion to not skip over double-quoted
+ command substitution.
+
+k. System-specific updates for: DJGPP, HP/UX, Mac OS X
+
+l. Fixed a bug in displaying commands that caused redirections to be associated
+ with the wrong part of the command.
+
+m. Fixed the coproc cleanup to unset the appropriate shell variables when a
+ coproc terminates.
+
+n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of
+ the last history entry.
+
+o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and
+ `test -x'.
+
+p. Fixed a bug that caused the shell to not match patterns containing
+ control-A.
+
+q. Fixed a bug that could result in doubled error messages when the `printf'
+ builtin got a write error.
+
+r. Fixed a bug that caused the shell to not correctly expand words containing
+ multiple consecutive quoted empty strings (""""""aa).
+
+s. Fixed a bug that caused the shell to not correctly parse multi-line
+ process substitutions containing comments and quoted strings.
+
+t. Fixed a problem with the bash malloc's internal idea of the top of the
+ memory heap that resulted in incorrect decisions to try to reduce the
+ break and give memory back to the kernel.
+
+u. There are changes to the expansions peformed on compound array assignments,
+ in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
+ foo[ind1]=bar foo[ind2]=baz.
+
+v. Bash now reports an error if `read -a name' is used when `name' is an
+ existing associative array.
+
+w. Fixed a bug that allowed an attempted assignment to a readonly variable
+ in an arithmetic expression to not return failure.
+
+x. Fixed several bugs that caused completion functions to be invoked even when
+ the cursor was before the first word in the command.
+
+y. Fixed a bug that caused parsing a command substitution to overwrite the
+ parsing state associated with the complete input line.
+
+z. Fixed several bugs with the built-in snprintf replacement and field widths
+ and floating point.
+
+aa. Fixed a bug that caused incorrect offset calculations and input buffer
+ corruption when reading files longer than 2^31 bytes.
+
+bb. Fixed several bugs where bash performed arithmetic evaluation in contexts
+ where evaluation is suppressed.
+
+cc. Fixed a bug that caused bash to close FIFOs used for process substitution
+ too early when a shell function was executing, but protect against using
+ all file descriptors when the shell functions are invoked inside loops.
+
+dd. Added checks for printable (and non-printable) multibyte characters for
+ use in error messages.
+
+ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly
+ at the end of the history list.
+
+ff. Fixed a bug that caused command-oriented history to incorrectly combine
+ here documents into one line.
+
+gg. Fixed a bug that caused importing SHELLOPTS from the environment into a
+ Posix-mode shell to print an error message and refuse to parse it.
+
+hh. Fixed a bug that caused the shell to delete an extra history entry when
+ using `history -s'.
+
+ii. Fixed a bug that caused floating-point exceptions and overflow errors
+ for the / and % arithmetic operators when using INTMAX_MIN and -1.
+
+jj. Fixed a bug that caused parsing errors when reading an arithmetic for
+ loop inside a command substitution.
+
+kk. Fixed a bug that caused a readonly function to be unset when unset was
+ called without the -f or -v option.
+
+ll. Fixed several bugs in the code that quotes characters special to regular
+ expressions when used in a quoted string on the RHS of the =~ operator
+ to the [[ command.
+
+mm. Fixed a bug that caused redirections to fail because the file descriptor
+ limit was set to a value less than 10.
+
+nn. Fixed a bug that caused the `read' builtin to execute code in a signal
+ handler context if read timed out.
+
+oo. Fixed a bug that caused extended globbing patterns to not match files
+ beginning with `.' correctly when a `.' was explicitly supplied in the
+ pattern.
+
+pp. Fixed a bug that caused key sequences longer than two characters to not
+ work when used with `bind -x'.
+
+qq. Fixed a bug that resulted in redefined functions having the wrong source
+ file names in BASH_SOURCE.
+
+rr. Fixed a bug that caused the read builtin to assign null strings to variables
+ when using `read -N', which caused core dumps when referenced
+
+ss. Fixed a bug that caused `bash -m script' to not enable job control while
+ running the script.
+
+tt. Fixed a bug that caused `printf -v var' to dump core when used with the
+ %b format code.
+
+uu. Fixed a bug that caused the shell to exit with the wrong status if -e was
+ active and the shell exited on a substitution error.
+
+vv. Fixed a bug that caused the shell to seg fault if an array variable with
+ the same name as an existing associative array was implicitly created by
+ an assignment (declare a[n]=b).
+
+ww. Fixed a bug that caused a redirection to misbehave if the number specified
+ for a file descriptor overflows an intmax_t.
+
+xx. Fixed several bugs with the handling of valid and invalid unicode character
+ values when used with the \u and \U escape sequences to printf and $'...'.
+
+yy. Fixed a bug that caused tildes to not be escaped in expanded filenames,
+ making them subject to later expansion.
+
+zz. When using the pattern substitution word expansion, bash now runs the
+ replacement string through quote removal, since it allows quotes in that
+ string to act as escape characters. This is not backwards compatible, so
+ it can be disabled by setting the bash compatibility mode to 4.2.
+
+aaa. Fixed the rest of the cases where the shell runs non-allowed code in a
+ signal handler context.
+
+bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in
+ double-quoted expansion where the RHS is evaluated to the empty string.
+
+ccc. Fixed a bug that caused the use of the shell's internal random number
+ generator for temporary file names to perturb the random number
+ sequence.
+
+ddd. Fixed several bugs that caused `declare -g' to not set the right global
+ variables or to misbehave when declaring global indexed arrays.
+
+eee. Fixed a logic bug that caused extended globbing in a multibyte locale to
+ cause failures when using the pattern substititution word expansions.
+
+fff. Fixed a bug that caused the `lastpipe' option to corrupt the file
+ descriptor used to read the script.
+
+ggg. Fixed a bug that causes the shell to delete DEL characters in the
+ expanded value of variables used in the same quoted string as variables
+ that expand to nothing.
+
+hhh. Fixed a bug that caused the shell to assign the wrong value from an
+ assignment like (( x=7 )) when `x' was an existing array variable.
+
+iii. Fixed a bug that caused the shell to misbehave when generating sequences
+ and the boundary values overflow an intmax_t.
+
+jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared
+ next to another expansion (e.g.. "${@}${x}").
+
+kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion.
+
+lll. Fixed a bug that resulted in an extra semicolon being added to compound
+ assignments when they were added to the history list.
+
+mmm. Fixed a bug that caused mapfile to read one extra line from the input.
+
+nnn. Fixed a bug that caused the mail checking code to use uninitialized
+ values.
+
+ooo. Fixed a bug that prevented history timestamps from being saved if the
+ history comment character is unset.
+
+ppp. Fixed a bug that caused the case-modifying expansions to not work with
+ multibyte characters.
+
+qqq. Fixed a bug that caused the edit-and-execute bindable readline command
+ to see the wrong data if invoked in the middle of a multi-line quoted
+ string.
+
+rrr. Fixed a bug that resulted in the shell returning the wrong exit status
+ for a background command on systems that recycle PIDs very quickly.
+
+sss. Fixed a bug that caused asynchronous group commands to not run any EXIT
+ trap defined in the body of the command.
+
+ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly.
+
+uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped
+ IFS whitespace character.
+
+vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when
+ executing a (...) subshell.
+
+www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic
+ evaluation.
+
+xxx. Fixed a bug with parsing multi-line command substitutions when reading
+ the `do' keyword followed by whitespace.
+
+yyy. Fixed a bug that caused the shell to seg fault if the time given to the
+ printf %(...)T format overflowed the value accepted by localtime(3).
+
+zzz. Fixed a problem with displaying help topics in two columns when the
+ translated text contained multibyte characters.
+
+aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was
+ followed by a negated extended glob pattern.
+
+bbbb. Fixed a race condition with short-lived coproc creation and reaping that
+ caused the child process to be reaped before the various coproc shell
+ variables were initialized.
+
+cccc. Fixed a bug where turning off `errexit' in command substitution subshells
+ was not reflected in $SHELLOPTS.
+
+dddd. Partially fixed an inconsistency in how the shell treated shell
+ functions run from an EXIT trap.
+
+eeee. Fixed a bug in how the shell invalidated FIFOs used for process
+ substitution when executing a pipeline (once rather than in every child).
+
+ffff. Fixed a bug that occurred when expanding a special variable ($@, $*)
+ within double quotes and the expansion resulted in an empty string.
+
+gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's
+ executed once per exited child.
+
+hhhh. Fixed a bug that caused `declare' and `test' to find variables that
+ had been given attributes but not assigned values. Such variables are
+ not set.
+
+iiii. Fixed a bug that caused commands in process substitutions to not look in
+ the local temporary environment when performing word expansions.
+
+jjjj. Fixed several problems with globstar expansions (**/**) returning null
+ filenames and multiple instances of the same pathname.
+
+kkkk. Fixed an oversight that did not allow the exit status of `coproc' to
+ be inverted using `!'.
+
+llll. Fixed a bug that caused the -e option to be re-enabled using `set -e'
+ even when executing in a context where -e is ignored.
+
+mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX.
+
+nnnn. Fixed a bug that could result in double evaluation of command
+ substitutions when they appear in failed redirections.
+
+oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if
+ the callback unsets the array variable mapfile is using.
+
+pppp. Fixed several problems with variable assignments using ${var:=value}
+ when the variable assignment is supposed to have side effects.
+
+qqqq. Fixed a bug that caused a failure of an assignment statement preceding a
+ builtin caused the next invocation of a special builtin to exit the shell.
+
+rrrr. Fixed several problems with IFS when it appears in the temporary environment
+ and is used in redirections.
+
+ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify
+ how preceding expansions were split.
+
+tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.
+
+uuuu. Fixed a problem that caused shells started in posix mode to attempt to
+ import shell functions with invalid names from the environment. We now
+ print a warning.
+
+vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2)
+ on a FIFO used for process substitution, even if the SIGCHLD handler was
+ installed with the SA_RESTART flag.
+
+wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}.
+
+xxxx. Fixed a problem that caused `read -t' to crash when interrupted by
+ SIGINT.
+
+yyyy. Fixed a problem that caused pattern removal to fail randomly because the
+ pattern matcher read beyond the end of a string.
+
+zzzz. Fixed a bug that caused core dumps when shell functions tried to create
+ local shadow copies of special variables like GROUPS.
+
+aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of
+ interactive shells when it arrived before the child process reset the
+ handler from SIG_DFL.
+
+bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor
+ n closed if executed with a builtin command.
+
+ccccc. Fixed a bug that caused incorrect completion quoting when completing a
+ word containing a globbing character with `show-all-if-ambiguous' set.
+
+ddddd. Fixed a bug that caused printf's %q format specifier not to quote a
+ tilde even if it appeared in a location where it would be subject to
+ tilde expansion.
+
+2. Changes to Readline
+
+a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
+ commands to work on the entire line.
+
+b. Fixed a bug that caused redisplay problems with prompts longer than 128
+ characters and history searches.
+
+c. Fixed a bug that caused readline to try and run code to modify its idea
+ of the screen size in a signal handler context upon receiving a SIGWINCH.
+
+d. Fixed a bug that caused the `meta' key to be enabled beyond the duration
+ of an individual call top readline().
+
+e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's
+ redisplay to mishandle zero-width combining characters.
+
+f. Fixed a bug that caused readline to `forget' part of a key sequence when
+ a multiple-key sequence caused it to break out of an incremental search.
+
+g. Fixed bugs that caused readline to execute code in a signal handler
+ context if interrupted while reading from the file system during completion.
+
+h. Fixed a bug that caused readline to `forget' part of a key sequence when
+ reading an unbound multi-character key sequence.
+
+i. Fixed a bug that caused Readline's signal handlers to be installed beyond
+ the bounds of a single call to readline().
+
+j. Fixed a bug that caused the `.' command to not redo the most recent `R'
+ command in vi mode.
+
+k. Fixed a bug that caused ignoring case in completion matches to result in
+ readline using the wrong match.
+
+l. Paren matching now works in vi insert mode.
+
+m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix
+ work together.
+
+n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
+ in vi editing mode.
+
+o. Fixed a bug that caused the filename comparison code to not compare
+ multibyte characters correctly when using case-sensitive or case-mapping
+ comparisons.
+
+p. Fixed the input reading loop to call the input hook function only when there
+ is no terminal input available.
+
+q. Fixed a bug that caused binding a macro to a multi-character key sequence
+ where the sequence and macro value share a common prefix to not perform
+ the macro replacement.
+
+r. Fixed several redisplay errors with multibyte characters and prompts
+ containing invisible characters when using horizontal scrolling.
+
+s. Fixed a bug that caused redisplay errors when trying to overwrite
+ existing characters using multibyte characters.
+
+3. New Features in Bash
+
+a. The `helptopic' completion action now maps to all the help topics, not just
+ the shell builtins.
+
+b. The `help' builtin no longer does prefix substring matching, so `help read'
+ does not match `readonly'.
+
+c. The shell can be compiled to not display a message about processes that
+ terminate due to SIGTERM.
+
+d. Non-interactive shells now react to the setting of checkwinsize and set
+ LINES and COLUMNS after a foreground job exits.
+
+e. There is a new shell option, `globasciiranges', which, when set to on,
+ forces globbing range comparisons to use character ordering as if they
+ were run in the C locale.
+
+f. There is a new shell option, `direxpand', which makes filename completion
+ expand variables in directory names in the way bash-4.1 did.
+
+g. In Posix mode, the `command' builtin does not change whether or not a
+ builtin it shadows is treated as an assignment builtin.
+
+h. The `return' and `exit' builtins accept negative exit status arguments.
+
+i. The word completion code checks whether or not a filename containing a
+ shell variable expands to a directory name and appends `/' to the word
+ as appropriate. The same code expands shell variables in command names
+ when performing command completion.
+
+j. In Posix mode, it is now an error to attempt to define a shell function
+ with the same name as a Posix special builtin.
+
+k. When compiled for strict Posix conformance, history expansion is disabled
+ by default.
+
+l. The history expansion character (!) does not cause history expansion when
+ followed by the closing quote in a double-quoted string.
+
+m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
+ option to inhibit quoting of the completions.
+
+n. Setting HISTSIZE to a value less than zero causes the history list to be
+ unlimited (setting it 0 zero disables the history list).
+
+o. Setting HISTFILESIZE to a value less than zero causes the history file size
+ to be unlimited (setting it to 0 causes the history file to be truncated
+ to zero size).
+
+p. The `read' builtin now skips NUL bytes in the input.
+
+q. There is a new `bind -X' option to print all key sequences bound to Unix
+ commands.
+
+r. When in Posix mode, `read' is interruptible by a trapped signal. After
+ running the trap handler, read returns 128+signal and throws away any
+ partially-read input.
+
+s. The command completion code skips whitespace and assignment statements
+ before looking for the command name word to be completed.
+
+t. The build process has a new mechanism for constructing separate help files
+ that better reflects the current set of compilation options.
+
+u. The -nt and -ot options to test now work with files with nanosecond
+ timestamp resolution.
+
+v. The shell saves the command history in any shell for which history is
+ enabled and HISTFILE is set, not just interactive shells.
+
+w. The shell has `nameref' variables and new -n(/+n) options to declare and
+ unset to use them, and a `test -R' option to test for them.
+
+x. The shell now allows assigning, referencing, and unsetting elements of
+ indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
+ count back from the last element of the array.
+
+y. The {x}<word redirection feature now allows words like {array[ind]} and
+ can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
+
+z. There is a new CHILD_MAX special shell variable; its value controls the
+ number of exited child statuses the shell remembers.
+
+aa. There is a new configuration option (--enable-direxpand-default) that
+ causes the `direxpand' shell option to be enabled by default.
+
+bb. Bash does not do anything special to ensure that the file descriptor
+ assigned to X in {x}<foo remains open after the block containing it
+ completes.
+
+cc. The `wait' builtin has a new `-n' option to wait for the next child to
+ change status.
+
+dd. The `printf' %(...)T format specifier now uses the current time if no
+ argument is supplied.
+
+ee. There is a new variable, BASH_COMPAT, that controls the current shell
+ compatibility level.
+
+ff. The `popd' builtin now treats additional arguments as errors.
+
+gg. The brace expansion code now treats a failed sequence expansion as a
+ simple string and will continue to expand brace terms in the remainder
+ of the word.
+
+4. New Features in Readline
+
+a. Readline is now more responsive to SIGHUP and other fatal signals when
+ reading input from the terminal or performing word completion but no
+ longer attempts to run any not-allowable functions from a signal handler
+ context.
+
+b. There are new bindable commands to search the history for the string of
+ characters between the beginning of the line and the point
+ (history-substring-search-forward, history-substring-search-backward)
+
+c. Readline allows quoted strings as the values of variables when setting
+ them with `set'. As a side effect, trailing spaces and tabs are ignored
+ when setting a string variable's value.
+
+d. The history library creates a backup of the history file when writing it
+ and restores the backup on a write error.
+
+e. New application-settable variable: rl_filename_stat_hook: a function called
+ with a filename before using it in a call to stat(2). Bash uses it to
+ expand shell variables so things like $HOME/Downloads have a slash
+ appended.
+
+f. New bindable function `print-last-kbd-macro', prints the most-recently-
+ defined keyboard macro in a reusable format.
+
+g. New user-settable variable `colored-stats', enables use of colored text
+ to denote file types when displaying possible completions (colored analog
+ of visible-stats).
+
+h. New user-settable variable `keyseq-timout', acts as an inter-character
+ timeout when reading input or incremental search strings.
+
+i. New application-callable function: rl_clear_history. Clears the history list
+ and frees all readline-associated private data.
+
+j. New user-settable variable, show-mode-in-prompt, adds a characters to the
+ beginning of the prompt indicating the current editing mode.
+
+k. New application-settable variable: rl_input_available_hook; function to be
+ called when readline needs to check whether there is data available on its
+ input source. The default hook checks rl_instream.
+
+l. Readline calls an application-set event hook (rl_signal_event_hook) after
+ it gets a signal while reading input (read returns -1/EINTR but readline
+ does not handle the signal immediately) to allow the application to handle
+ or otherwise note it. Not currently called for SIGHUP or SIGTERM.
+
+m. If the user-settable variable `history-size' is set to a value less than
+ 0, the history list size is unlimited.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-release,
+and the previous version, bash-4.2-rc2.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused some variables to be clobbered by a longjmp,
+ resulting in stack corruption.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-rc2,
+and the previous version, bash-4.2-rc1.
+
+1. Changes to Bash
+
+a. Changes to bash_directory_completion_hook so that it's assigned to the
+ readline rl_directory_rewrite_hook variable, which modifies the directory
+ name passed to opendir without modifying the directory name the user
+ typed.
+
+b. Fixed bug in select builtin that caused it to not terminate correctly if
+ the read timed out due to $TMOUT.
+
+c. Fixed a problem that resulted in non-repeatable sequences of random
+ numbers when RANDOM=0.
+
+------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-rc1,
and the previous version, bash-4.2-beta.
c. Fixed a bug that caused simple commands in a pipeline to affect the exit
status ($?) seen by subsequent pipeline commands.
+d. A number of cygwin-specific changes to avoid the use of text-mode files
+ and file access, and to make sure that \r is handled correctly.
+
+e. Fixed a bug that caused the read builtin to not return failure if an
+ attempt is made to assign to a readonly variable.
+
+f. Fixed a bug that caused some builtin usage messages to not be translated.
+
+g. Fixed a bug that caused the getopts builtin to not return failure if an
+ attempt is made to assign to a readonly variable. Now it returns 2.
+
+h. Fixed the cd and pwd builtins to return failure if PWD is readonly and
+ cannot be assigned to.
+
+i. Added code to check the return value of access(2) on Solaris systems,
+ since it returns success for executable tests (e.g., `test -x') when
+ run by root, even if the file permissions don't allow execution.
+
2. Changes to Readline
+a. Fixed a bug that caused directory names in words to be completed to not
+ be dequoted correctly.
+
3. New Features in Bash
4. New Features in Readline