]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - CHANGES
Bash-5.0 patch 4: the wait builtin without arguments only waits for known children...
[thirdparty/bash.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 62e8677539f03831a2953051332e31df06c411ec..262fd6568add843b7dffbd461e3166e4e7278090 100644 (file)
--- a/CHANGES
+++ b/CHANGES
+This document details the changes between this version, bash-5.0-release, and
+the previous version, bash-5.0-rc1.
+
+1. Changes to Bash
+
+a. Tilde expansion isn't performed on indexed array subscripts, even for
+   backwards compatibility.
+
+b. The shell doesn't exit in posix mode if the eval builtin gets a parse
+   error when run by the command builtin.
+
+c. Fixed a bug that caused a shell comment in an alias to not find the end
+   of the alias properly.
+
+d. Reverted a change from April, 2018 that caused strings containing
+   backslashes to be flagged as glob patterns.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-rc1, and
+the previous version, bash-5.0-beta2.
+
+1. Changes to Bash
+
+a. Fix to initial word completion detection code.
+
+b. Fixed a bug that caused issues with assignment statements containing ^A in
+   the value assigned when IFS contains ^A.
+
+c. Added a fallback to fnmatch() when strcoll can't correctly deal with
+   bracket expression character equivalence classes.
+
+d. Fixed a bug that caused $BASH_COMMAND to contain the trap handler command
+   when running a trap handler containing [[ or (( commands.
+
+e. Fixed a bug that caused nameref assignments in the temporary environment
+   to potentially create variables with invalid names.
+
+f. Fixed a bug that caused `local -' to turn off alias expansion in scripts.
+
+g. Fixed a parser issue with a command string containing EOF after an invalid
+   command as an argument to a special builtin not causing a posix-mode shell
+   to exit.
+
+h. Made a slight change to the FNV-1 string hash algorithm used for associative
+   arrays (corrected the initial seed).
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+a. The `select' command now supports command forms without a word list
+   following `in'.
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-beta2, and
+the previous version, bash-5.0-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug that could cause a seg fault while parsing a subshell command
+   inside a command substitution.
+
+b. Fixed several small memory leaks uncovered by coverity.
+
+c. Fixed a problem with command substitution inside an interactive shell that
+   could cause the parent to receive a SIGHUP.
+
+d. Fixed a problem with using `*' and `@' as subscripts when assigning values
+   to an associative array with assoc_expand_once enabled.
+
+e. Fixed a bug that could cause a huge memory allocation when completing a
+   word beginning with an invalid tilde expansion.
+
+f. Cleaned up some incompatiblities with bash-4.4 when expanding indexed array
+   subscripts used in arithmetic expansions when assoc_expand_once is enabled.
+
+g. The ${parameter@a} expansion will display attributes even if `parameter' is
+   unset.
+
+h. Fixed a bug that caused the output of `set' to cut off some variables before
+   printing the value.
+
+i. Treat a failure to assign a variable when using the ${x:=value} expansion
+   as an expansion error, so non-interactive posix-mode shells exit
+
+j. Fixed a problem when expanding $* in a context where word splitting is not
+   performed when IFS is NULL.
+
+k. Temp files used to store here documents are forced readable, no matter what
+   the user's umask says.
+
+l. Fixed a problem where an interrupted brace expansion could cause the shell
+   to attempt to free an invalid memory location.
+
+m. Make sure to check for any terminating signals after running a trap
+   handler; don't wait until the next time we process traps.
+
+n. Fixed a bug that caused "return" to act like a special builtin with respect
+   to variable assignments even when preceded by "command".
+
+o. POSIX-mode shells now return failure if the cd builtin fails due to the
+   absolute directory name being longer than PATH_MAX, instead of trying
+   again with a relative pathname.
+
+p. Fixed a problem with FUNCNAME occasionally being visible when not executing
+   a shell function.
+
+q. Fixed a problem with the expansions performed on the WORD in the case
+   command.
+
+r. Fixed a slight POSIX compatibility when removing "IFS whitespace" during
+   word splitting and the read builtin.
+
+s. Fixed a problem with expanding an array with subscript `*' when all the
+   elements expand to the empty string, and making sure the expansion honors
+   the `:' specifier.
+
+2. Changes to Readline
+
+a. Fixed a bug with adding multibyte characters to an incremental search string.
+
+b. Fixed a bug with redoing text insertions in vi mode.
+
+c. Fixed a bug with pasting text into an incremental search string if bracketed
+   paste mode is enabled. ESC cannot be one of the incremental search
+   terminator characters for this to work.
+
+d. Fixed a bug with anchored search patterns when performing searches in vi
+   mode.
+
+3. New Features in Bash
+
+a. Associative and indexed arrays now allow subscripts consisting solely of
+   whitespace.
+
+b. `checkwinsize' is now enabled by default.
+
+c. The `localvar_unset' shopt option is now visible and documented.
+
+d. The `progcomp_alias' shopt option is now visible and documented.
+
+e. The signal name processing code now understands `SIGRTMIN+n' all the way
+   up to SIGRTMAX.
+
+f. There is a new `seq' loadable builtin.
+
+g. Trap execution now honors the (internal) max invocations of `eval', since
+   traps are supposed to be executed as if using `eval'.
+
+h. The $_ variable doesn't change when the shell executes a command that forks.
+
+i. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though
+   conforming applications aren't supposed to use them.
+
+j. POSIX mode now enables the `shift_verbose' option.
+
+4. New Features in Readline
+
+a. Readline now allows application-defined keymap names; there is a new public
+   function, rl_set_keymap_name(), to do that.
+
+b. The "Insert" keypad key, if available, now puts readline into overwrite
+   mode.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-beta, and
+the previous version, bash-5.0-alpha.
+
+1.  Changes to Bash
+
+a. Fixed a bug that allowed subshells to "inherit" enclosing loops -- this
+   is where POSIX says the subshell is not "enclosed" by the loop.
+
+b. Added more UTF-8-specific versions of multibyte functions, and optimized
+   existing functions if the current locale uses UTF-8 encoding.
+
+c. In POSIX mode, assignments preceding regular builtins should not persist
+   when the builtin completes.
+
+d. Added additional checks to special array assignment (e.g., BASH_ALIASES)
+   so it can't be used to bypass validity checks performed in other places.
+
+e. The `!!' history expansion now refers to the previous history entry as
+   expected, even if used on the second or subsequent line of a multi-line
+   history entry.
+
+f. Fixed a bug that could cause the shell to dereference a NULL pointer if
+   the environment (`environ') is set to NULL.
+
+g. Bash uses slightly better integer overflow handling for brace sequence
+   expansion on systems where ints are 32 bits and intmax_t is 64 bits.
+
+h. Fixed a bug setting attributes for a variable named as an argument to
+   `declare' that also appears as a nameref in the temporary environment.
+
+i. Fixed several bugs that could cause assignments to namerefs to create
+   variables with invalid names.
+
+j. Fixed a bug that could result in the SIGINT handler being set incorrectly
+   in asynchronous subshells.
+
+k. Fixed a bug that could cause `bash -t' to not execute the specified command.
+
+l. Fixed several bugs that caused the shell to operate on the wrong variable
+   when using namerefs with the same name as a global variable in shell
+   functions.
+
+m. Internal changes to how the shell handles variables with invalid names in
+   the initial environment and to prevent variables with invalid names from
+   being added to the environment instead of passing them on to children.
+
+n. Changes to make sure that an expansion that results in a quoted null string
+   is reflected in the expansion, even if the word expands to nothing.
+
+o. Changes to make sure that $* and ${array[*]} (and $@/${array[@]}) expand
+   the same way after the recent changes for POSIX interpretation 888.
+
+p. Saving and restoring the positional parameters at function entry and exit
+   is considerably more efficient; noticeably so when there are large numbers
+   of positional parameters.
+
+q. Fixed a bug that caused `lastpipe' and `pipefail' to return an incorrect
+   status for the pipeline if there was more than one external command in a
+   loop body appearing in the last pipeline element.
+
+r. Fixed a bug that caused value conversion errors with the printf builtin's
+   %u and %f conversion specifications and invalid constants.
+
+2.  Changes to Readline
+
+a. Added more UTF-8-specific versions of multibyte functions, and optimized
+   existing functions if the current locale uses UTF-8 encoding.
+
+b. Fixed a problem with bracketed-paste inserting more than one character and
+   interacting with other readline functions.
+
+c. Fixed a bug that caused the history library to attempt to append a history
+   line to a non-existent history entry.
+
+d. If using bracketed paste mode, output a newline after the \r that is the
+   last character of the mode disable string to avoid overwriting output.
+
+e. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better
+   handle multibyte characters.
+
+f. Fixed a redisplay problem that caused an extra newline to be generated on
+   accept-line when the line length is exactly the screenwidth.
+
+3.  New Features in Bash
+
+a. Bash no longer allows variable assignments preceding a special builtin that
+   changes variable attributes to propagate back to the calling environment
+   unless the compatibility level is 44 or lower.
+
+b. You can set the default value for $HISTSIZE at build time in config-top.h.
+
+c. The `complete' builtin now accepts a -I option that applies the completion
+   to the initial word on the line.
+
+d. The internal bash malloc now uses mmap (if available) to satisfy requests
+   greater than 128K bytes, so free can use mfree to return the pages to the
+   kernel.
+
+e. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup
+   unless it's in debugging mode, as the documentation has always said, but
+   will dynamically create them if a script references them at the top level
+   without having enabled debugging mode.
+
+f. The localvar_inherit option will not attempt to inherit a value from a
+   variable of an incompatible type (indexed vs. associative arrays, for
+   example).
+
+g. The `globasciiranges' option is now enabled by default; it can be set to
+   off by default at configuration time.
+
+4.  New Features in Readline
+
+a. The history expansion library now understands command and process
+   substitution and extended globbing and allows them to appear anywhere in a
+   word.
+
+b. The history library has a new variable that allows applications to set the
+   initial quoting state, so quoting state can be inherited from a previous
+   line.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-alpha, and
+the previous version, bash-4.4-release.
+
+1.  Changes to Bash
+
+a. Fixed a bug that could cause traps in background jobs to give the terminal
+   to the wrong process group.
+
+b. Fixed a bug that caused `kill -l 0' to print an out-of-range error.
+
+c. Fixed a problem that could result in here-documents being displayed in
+   the wrong order.
+
+d. Fixed a number of out-of-bounds and free memory read errors found via
+   fuzzing.
+
+e. Fixed a subshell inheritance problem that could cause a subshell to wait for
+   the wrong process.
+
+f. Fixed a bug that caused SHLVL to be incremented one too many times when
+   creating subshells.
+
+g. A job dying due to SIGINT can now interrupt sourcing a file in a shell with
+   job control enabled.
+
+h. Fixed a spurious warning about unterminated ${ or $( constructs during
+   word completion.
+
+i. The shell no longer runs traps if a signal arrives while reading command
+   substitution output.
+
+j. Fixed an arithmetic expansion error that could allow ++var++ as valid
+   syntax.
+
+k. Fixed an error that allowed out-of-bounds references to the directory stack.
+
+l. The shell does a better job of saving multi-line history entries with
+   embedded comments.
+
+m. Fixed a bug that could cause quoted bracket expressions in regular expression
+   arguments to `[[' to not match correctly.
+
+n. Fixed a bug that could cause an IFS character in a word to result in an
+   extra '\001' character in the expansion.
+
+o. A trailing backslash in a glob pattern can match a trailing backslash in the
+   string.
+
+p. Fixed a memory leak in the process creation code path when job control is
+   enabled.
+
+q. Fixed a bug that caused `printf' to output broken surrogate pairs for
+   Japanese locales.
+
+r. Fixed a bug that caused a SIGINT generated from `kill' in a dot script to
+   kill an interactive shell.
+
+s. Fixed a bug that could cause the `read' builtin to not fully read a
+   multibyte character.
+
+t. Fixed a bug that could cause identifiers to be evaluated in conditional
+   arithmetic expressions even when evaluation is suppressed.
+
+u. Fixed a bug that could result in command substitution, when executed in a
+   context where word splitting is not performed, to leave a stray '\001'
+   character in the string.
+
+v. Fixed a bug that could cause history expansion to be disabled in a non-
+   interactive shell even if `-o histexpand' is supplied at startup.
+
+w. Fixed a bug that caused `read -N' to strip leading whitespace IFS characters.
+
+x. Fixed a bug that caused spurious tilde expansion in arithmetic expressions.
+
+y. If indirect expansion attempts to indirectly reference through an unset
+   variable, report an error.
+
+z. Added a guard to prevent the shell from looping while receiving an endless
+   stream of SIGTTIN at shell startup.
+
+aa. Fixed a bug with parsing here documents inside a command substitution when
+    looking for the closing delimiter.
+
+bb. Fixed a bug that caused printf to not quote all <blank> characters in the
+    current locale when using the `%q' format specifier.
+
+cc. Fixed a bug with bash's internal buffered I/O system that caused the input
+    pointer to not be reset when read(2) returned an EOF.
+
+dd. Bash now installs its SIGWINCH signal handler with SA_RESTART, so it will
+    not interrupt open/read/write system calls.
+
+ee. The ERR trap now reports line numbers more reliably.
+
+ff. The shell no longer tries to manipulate the terminal process group if a
+    command or process substitution is killed by SIGTERM when job control is
+    enabled.
+
+gg. Fixed a bug that caused extglob patterns to match filenames beginning with
+    a period.
+
+hh. File descriptors open for writing to here documents are no longer available
+    to subshells.
+
+ii. Make sure word completion doesn't perform command or process substitution.
+
+jj. Fixed a bug with parsing $$'...' inside a command substitution.
+
+kk. Fixed a bug that caused bash to remove backslash-newline pairs from the
+    body of a here-document with a quoted delimiter inside a command
+    substitution.
+
+ll. Fixed a bug that could cause the shell to hang when adding a pid to the
+    table of background process exit statuses.
+
+mm. Fixed a bug that could cause 0x01 characters to be doubled in the output
+    of process substitution.
+
+nn. Restricted shells now clear the hash table before making the PATH variable
+    read-only.
+
+oo. There are a number of changes to the expansion of $* and $@ in contexts
+    where word splitting does not occur (quoted and unquoted), with IFS set
+    to NULL or a non-standard value, mostly to deal with the consequences of
+    the behavior defined in Posix interpretation 888.
+
+pp. There are a number of changes to nameref variable handling to avoid
+    creating variables with invalid names.
+
+qq. A non-interactive posix mode shell no longer exits when an assignment
+    statement fails if the assignment is utimately being performed by the
+    `command' builtin.
+
+rr. When using character class names for globbing, don't allow case
+    insensitivity, even if nocaseglob is enabled.
+
+ss. Fixed a bug that allowed some redirections to stay in place if a later
+    redirection failed.
+
+tt. Fixed a bug in how command and process substitutions are recognized within
+    other parameter expansions.
+
+uu. Fixed a bug that caused bash to loop under certain circumstances when
+    performing arithmetic expansion on a variable whose value is an invalid
+    expression.
+
+vv. Fixed a bug that could cause bash to expand aliases inappropriately while
+    parsing compound commands like `case'.
+
+ww. Fixed a bug that could cause `read -N' to fail to read complete multibyte
+    characters, even when the sequences are incomplete or invalid, with or
+    without readline.
+
+xx. Fixed a bug that could cause `case' to fail to match patterns containing
+    0x01 characters.
+
+yy. Fixed a bug that caused exported functions to contain stray 0x01 characters.
+
+zz. Fixed some inconsistencies with how the history number is handled in the
+    various prompt strings.
+
+aaa. Fixed a bug that could cause a core dump if READLINE_LINE was unset
+     inside a shell function bound to a key sequence with `bind -x'.
+
+bbb. Fixed a bug that could cause bash to not read a token terminator correctly
+     if a command substitution was used inside an arithmetic `for' command.
+
+ccc. Fixed problems that could occur with a fatal arithmetic expansion error
+     in a context (like prompt expansion) where you can't jump back to the
+     top level.
+
+ddd. Expression errors in arithmetic `for' commands are treated more like
+     shell syntax errors.
+
+eee. Fixed a parser synchronization error resulting from a syntax error
+     followed immediately by an EOF.
+
+fff. When executing a shell function, the first line in the function ($LINENO)
+     is line 1 instead of line 0, as Posix requires.
+
+ggg. In Posix mode, bash will canonicalize the value of PWD it inherits from
+     the environment and use that to set its idea of the current directory.
+
+hhh. If LINENO is exported, bash needs to regenerate its value each time it
+     constructs the environment.
+
+iii. Fixed a bug with restoring the SIGINT handler when using `wait -n'.
+
+jjj. Make sure the `coproc' command returns an appropriate status if the NAME
+     argument is invalid.
+
+kkk. Fixed a problem with arithmetic expressions containing array references
+     that contain arithmetic expressions with syntax errors.
+
+lll. The `select' command and help builtin will use $COLUMNS before the window
+     size returned from the kernel as the terminal width.
+
+mmm. `read -n 0' and `read -N 0' now try a zero-length read in an attempt to
+     detect file descriptor errors.
+
+nnn. The `read' builtin now does a better job of acting on signals that don't
+     interrupt read(2).
+
+ooo. Fixed some cases where `printf -v' did not return failure status on a
+     variable assignment error.
+
+ppp. Fixed temporary environment propagation back to the current environment
+     so that it doesn't happen for special builtins run by the `command'
+     builtin.
+
+qqq. Fixed a bug when searching for the end of a here-document delimiter in a
+     command substitution.
+
+rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail.
+
+sss. Fixed a bug that could cause reserved words to not be recognized in a
+     for statement without the `in' inside a command substitution.
+
+ttt. Fixed a bug that could cause a double-free in a timed command with an
+     expansion error.
+
+uuu. Fixed a bug that could cause a core dump if a script switches from a UTF-8
+     locale to a different locale after displaying a lone surrogate character.
+
+vvv. Fixed cases where bash prematurely removed FIFOs attached to process
+     substitutions.
+
+www. Fixed a problem with calculating the size of the table that stores exit
+     statuses from background processes when the child process resource limit
+     is very large.
+
+xxx. Fixed a memory leak with functions using `return' when using FIFOs for
+     standard input.
+
+yyy. `wait' without arguments attempts to wait for all active process
+     substitution processes.
+
+zzz. Fixed a bug where an indirect parameter was subjected to word splitting
+     when trying to find the indirected variable name.
+
+aaaa. Fixed a bug that could allow restricted shell users to add commands to
+      the hash table.
+
+bbbb. When using the `!(patlist)' extended globbing operator, a filename
+      beginning with a `.' that doesn't match any of the patterns is not
+      returned as a match if leading dots must be matched explicitly.
+
+cccc. Fixed a bug that could cause line number and source file information for
+      a function definition to be incorrect if there are multiple definitions.
+
+dddd. Fixed a bug that could cause builtins like `readonly' to behave
+      differently when applied to arrays and scalar variables within functions.
+
+eeee. Fixed a bug that could cause alias expansion to add an extra space to
+      a quoted string that begins outside the alias expansion.
+
+ffff. Fixed a bug that could result in unwanted alias expansion after timing
+      the null command.
+
+gggg. Fixed a bug that could cause a core dump if a timestamp in a history
+      file overflowed a time_t.
+
+hhhh. Restricted shells can no longer redirect from /dev/tcp or /dev/udp, since
+      the kernel calls make those file descriptors read-write.
+
+iiii. Fixed a problem with splitting double-quoted words for programmable
+      completion when the double quote immediately follows another word
+      delimiter.
+
+jjjj. Fixed a bug resulting in a use-after-free if two file descriptors share
+      the same input buffer.
+
+kkkk. The error message resulting from ${x:?} and ${x?} now differs depending
+      on whether the variable is null or unset.
+
+llll. In Posix mode, the shell exits if a variable assignment fails and precedes
+      an empty simple command (after expansion).
+
+mmmm. Fixed a timing problem with SIGALRM that could cause the read builtin to
+      drop characters.
+
+nnnn. Added code to deal with kill(2) failing to send the shell a fatal signal
+      due to Linux pid namespace peculiarities.
+
+oooo. Fixed a bug that made \C-@ (NUL) unusable in key sequences used for
+      `bind -x' commands.
+
+pppp. Fixed a bug that could cause SIGINT recursion when running an external
+      command in a trap the shell takes after a command exits due to SIGINT.
+
+qqqq. Make sure the shell turns off job control before running the command-
+      not-found handle, so the command doesn't try to manipulate process
+      groups.
+
+rrrr. Fixed a problem with timing process substitutions that caused the shell
+      to print timing information for the calling command.
+
+ssss. Fixed a bug that caused backquotes in a here-document delimiter to mark
+      the delimiter as quoted (inhibiting expansion of the here-document
+      contents).
+
+tttt. Fixed several problems with 0x01 and 0x177 in case pattern lists and
+      conditional command pattern matches.
+
+uuuu. Fixed a bug that could cause the pattern matching engine to not recognize
+      locale-specific character classes.
+
+vvvv. The auto-configuration now tests for /dev/stdin and /dev/fd independently.
+
+wwww. The `globstar' code now skips over symbolic links to directories,
+      preventing them from being scanned twice.
+
+xxxx. When running `bind -x' commands, bash now sets READLINE_POINT based on
+      the number of characters in the readline line buffer, not the number of
+      bytes.
+
+yyyy. Fixed a problem that could cause recursive trap evaluation of the RETURN
+      trap when using `eval return'.
+
+zzzz. Fixed a bug with expanding 0x01 in an unquoted here-document.
+
+aaaaa. The process substitution code now closes and unlinks FIFOs when the
+       process on the other side exits, in order to prevent SIGPIPE or
+       waiting until a FIFO opened for read has a writer.
+
+bbbbb. Fixed a bug with recursive calls to the parser overwriting the token in
+       an {id}>foo construct.
+
+ccccc. After a Posix discussion, the pattern matching engine just skips over
+       invalid character classes in bracket expressions, instead of matching
+       them like individual characters in the expression.
+
+ddddd. Fixed a posix-mode problem with variable scoping when creating variables
+       from assignment statements preceding special builtins.
+
+eeeee. Fixed a bug that could cause patterns containing backslashes to not be
+       run through the pattern matching engine.
+
+fffff. Fixed a bug that could cause redirections to compound commands to not
+       be `undone' if the file descriptor in the redirection was closed when
+       the redirection was initially processed.
+
+ggggg. Fixed a bug that could cause buffer corruption when using `bind -x' in
+       a command execute as a result of a key binding installed by `bind -x'.
+
+2.  Changes to Readline
+
+a. Added a guard to prevent nested macros from causing an infinite expansion
+   loop.
+
+b. Instead of allocating enough history list entries to hold the maximum list
+   size, cap the number allocated initially.
+
+c. Added a strategy to avoid allocating huge amounts of memory if a block of
+   history entries without timestamps occurs after a block with timestamps.
+
+d. Added support for keyboard timeouts when an ESC character is the last
+   character in a macro.
+
+e. There are several performance improvements when in a UTF-8 locale.
+
+f. Readline does a better job of preserving the original set of blocked
+   signals when using pselect() to wait for input.
+
+g. Fixed a bug that caused multibyte characters in macros to be mishandled.
+
+h. Fixed several bugs in the code that calculates line breaks when expanding
+   prompts that span several lines, contain multibyte characters, and contain
+   invisible character seqeuences.
+
+i. Fixed several bugs in cursor positioning when displaying lines with prompts
+   containing invisible characters and multibyte characters.
+
+j. When performing case-insensitive completion, Readline no longer sorts the
+   list of matches unless directed to do so.
+
+k. Fixed a problem with key sequences ending with a backslash.
+
+l. Fixed out-of-bounds and free memory read errors found via fuzzing.
+
+m. Fixed several cases where the mark was set to an invalid value.
+
+n. Fixed a problem with the case-changing operators in the case where the
+   lower and upper case versions of a character do not have the same number
+   of bytes.
+
+o. Handle incremental and non-incremental search character reads returning EOF.
+
+p. Handle the case where a failing readline command at the end of a multi-key
+   sequence could be misinterpreted.
+
+q. The history library now prints a meaningful error message if the history
+   file isn't a regular file.
+
+r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace
+   a multibyte character.
+
+s. The key binding code now attempts to remove a keymap if a key unbinding
+   leaves it empty.
+
+t. Fixed a line-wrapping issue that caused problems for some terminal
+   emulators.
+
+u. If there is a key bound to the tty's VDISCARD special character, readline
+   disables VDISCARD while it is active.
+
+v. Fixed a problem with exiting bracketed paste mode on terminals that assume
+   the bracketed paste mode character sequence contains visible characters.
+
+w. Fixed a bug that could cause a key binding command to refer to an
+   uninitialized variable.
+
+3.  New Features in Bash
+
+a. The `wait' builtin can now wait for the last process substitution created.
+
+b. There is an EPOCHSECONDS variable, which expands to the time in seconds
+   since the Unix epoch.
+
+c. There is an EPOCHREALTIME variable, which expands to the time in seconds
+   since the Unix epoch with microsecond granularity.
+
+d. New loadable builtins: rm, stat, fdflags.
+
+e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment.
+
+f. When supplied a numeric argument, the shell-expand-line bindable readline
+   command does not perform quote removal and suppresses command and process
+   substitution.
+
+g. `history -d' understands negative arguments: negative arguments offset from
+   the end of the history list.
+
+h. The `name' argument to the `coproc' reserved word now undergoes word
+   expansion, so unique coprocs can be created in loops.
+
+i. A nameref name resolution loop in a function now resolves to a variable by
+   that name in the global scope.
+
+j. The `wait' builtin now has a `-f' option, which signfies to wait until the
+   specified job or process terminates, instead of waiting until it changes
+   state.
+
+k. There is a define in config-top.h that allows the shell to use a static
+   value for $PATH, overriding whatever is in the environment at startup, for
+   use by the restricted shell.
+
+l. Process substitution does not inherit the `v' option, like command
+   substitution.
+
+m. If a non-interactive shell with job control enabled detects that a foreground
+   job died due to SIGINT, it acts as if it received the SIGINT.
+
+n. The SIGCHLD trap is run once for each exiting child process even if job
+   control is not enabled when the shell is in Posix mode.
+
+o. A new shopt option: localvar_inherit; if set, a local variable inherits the
+   value of a variable with the same name at the nearest preceding scope.
+
+p. `bind -r' now checks whether a key sequence is bound before binding it to
+   NULL, to avoid creating keymaps for a multi-key sequence.
+
+q. A numeric argument to the line editing `operate-and-get-next' command
+   specifies which history entry to use.
+
+r. The positional parameters are now assigned before running the shell startup
+   files, so startup files can use $@.
+
+s. There is a compile-time option that forces the shell to disable the check
+   for an inherited OLDPWD being a directory.
+
+t. The `history' builtin can now delete ranges of history entries using
+   `-d start-end'.
+
+u. The `vi-edit-and-execute-command' bindable readline command now puts readline
+   back in vi insertion mode after executing commands from the edited file.
+
+v. The command completion code now matches aliases and shell function names
+   case-insensitively if the readline completion-ignore-case variable is set.
+
+w. There is a new `assoc_expand_once' shell option that attempts to expand
+   associative array subscripts only once.
+
+x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended
+   debugging mode is active. The old behavior of unconditionally setting them
+   is available as part of the shell compatibility options.
+
+y. The `umask' builtin now allows modes and masks greater than octal 777.
+
+z. The `times' builtin now honors the current locale when printing a decimal
+   point.
+
+aa. There is a new (disabled by default, undocumented) shell option to enable
+    and disable sending history to syslog at runtime.
+
+4.  New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+   Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+   commands, which move the cursor to the same column in the next, or previous,
+   physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+   characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+   respond to signals that readline catches while waiting for input using
+   a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+   inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+   inputrc file. Allowable operators are equality and inequality; string
+   variables may be compared to a value; boolean variables must be compared to
+   either `on' or `off'; variable names are separated from the operator by
+   whitespace.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.4-release, and
+the previous version, bash-4.4-rc2.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that could potentially result in a crash due to an integer
+    overflow.
+
+b.  Fixed a bug in where commands printed due to `set -x' could be incorrectly
+    quoted if being printed in contexts where they haven't yet been expanded.
+
+c.  Fixed several memory leaks.
+
+d.  Fixed a bug that could potentially cause the terminal attributes to be
+    set incorrectly by a command run from a programmable completion.
+
+e.  Fixed several potential buffer overflow issues in the word expansion code.
+
+2.  Changes to Readline
+
+3.  New Features in Bash
+
+4.  New Features in Readline
+------------------------------------------------------------------------------
+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
+    like 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.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused some redirection errors to leak file descriptors.
+
+b.  Fixed a bug that caused unary `+' and `-' arithmetic operators to have a
+    higher precedence than unary `!' and `~'.
+
+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
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-beta,
+and the previous version, bash-4.2-alpha.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused the \W prompt string escape to not add a closing
+    NULL.
+
+b.  Fixed a bug that caused partially-quoted words that were not subject to
+    word splitting to retained quoted NULLs.
+
+c.  Added considerable efficiency speedups when pattern matching in multibyte
+    locales by skipping multibyte character functions where possible.
+
+d.  Added considerable speedups to variable expansion when in multibyte locales.
+
+e.  Fixed a bug that caused the expansion of $* when there are no positional
+    parameters to cause the shell to dump core when used in a pattern
+    matching context.
+
+f.  Fixed a bug that caused variable expansions preceding regular builtins to
+    not change the shell environment during their execution.
+
+2.  Changes to Readline
+
+a.  Fixed a bug that made an explicit argument of 0 to yank-last-arg behave
+    as if it were a negative argument.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-alpha,
+and the previous version, bash-4.1-release.
+
+1.  Changes to Bash
+
+a.  Fixed a bug in the parser when processing alias expansions containing
+    quoted newlines.
+
+b.  Fixed a memory leak in associative array expansion.
+
+c.  Fixed a bug that caused quoted here-strings to be requoted when printed.
+
+d.  Fixed a bug in arithmetic expansion that caused the index in an array
+    expansion to be evaluated twice under certain circumstances.
+
+e.  Fixed several bugs with the expansion and display of variables that have
+    been given attributes but not values and are technically unset.
+
+f.  Fixed a bug that caused core dumps when using filename completion that
+    expands to a filename containing a globbing character.
+
+g.  Fixed a bug that caused assignment statements preceding a special builtin
+    when running in Posix mode to not persist after the builtin completed
+    when the special builtin was executed in a shell function without any
+    local variables.
+
+h.  Fixed a bug that caused a command to remain in the hash table even after
+    `hash command' did not find anything if there was already an existing
+    hashed pathname.
+
+i.  Fixed several bugs caused by executing unsafe functions from a signal
+    handler in the cases where a signal handler is executed immediately
+    rather than setting a flag for later execution.
+
+j.  Fixed a bug that caused some internal flag variables to be set
+    incorrectly if `read -t' timed out.
+
+k.  Fixed a Posix compatibility issue by making sure that a backslash escaping
+    a `}' within a double-quoted ${...} parameter expansion is removed as part
+    of the parameter expansion.
+
+l.  Fixed a bug that caused execution of a trap to overwrite PIPESTATUS.
+
+m.  Fixed a bug that caused here documents to not be displayed correctly
+    when attached to commands inside compound commands.
+
+n.  Fixed a bug that caused the printf builtin to use the wrong precision
+    when using the `*' modifier.
+
+o.  Fixed a bug that caused an arriving SIGCHLD to interrupt output functions
+    like those invoked by echo or printf.
+
+p.  Changed to use a more robust mechanism than eaccess(2) when test is
+    checking filenames for execution permission.
+
+q.  Fixed a bug that caused spurious semicolons to be added into the command
+    history in certain cases.
+
+r.  Fixed a bug that caused the shell to free non-allocated memory when
+    unsetting element 0 of an associative array after it was assigned
+    implicitly.
+
+s.  Fixed a bug that could cause the shell to dump core if using the `v'
+    vi editing command on a multi-line command.
+
+t.  Fixed a bug that left FIFOs opened by process substitutions open long
+    enough to potentially cause file descriptor exhaustion when running a
+    shell function or shell builtin.
+
+u.  Fixed a bug that caused the history expansion functions to not recognize
+    process substitution or extended glob patterns as single words.
+
+v.  Fixed a bug that caused restricted shells to set a restricted command's
+    exit status incorrectly.
+
+w.  Fixed a bug that caused bash to ignore the wrong set of filenames when
+    completing a command using the `complete-filename' readline command.
+
+x.  Fixed a bug that caused a -PID argument following a -s sig or -n sig to
+    not be interpreted as a signal specification.
+
+y.  Changed posix-mode behavior of a parse error in a `.' script or `eval'
+    command to exit the shell under Posix-specified conditions.  Previous
+    versions printed a warning.
+
+z.  Fixed a bug in \W prompt expansion that resulted in incorrect expansion
+    in the event of overlapping strings.
+
+aa. Fixed a bug that caused the := parameter expansion operator to return the
+    wrong value as the result of the expansion.
+
+bb. When in Posix mode, a single quote is not treated specially in a
+    double-quoted ${...} expansion, unless the expansion operator is
+    # or % or the non-Posix `//', `^', and `,'.  In particular, it does
+    not define a new quoting context.  This is from Posix interpretation 221.
+
+cc. Fixed a bug that inadvertently allowed program names containing slashes
+    to be entered into the command hash table.
+
+dd. Fixed a bug that caused the select builtin to incorrectly compute the
+    display width of the arguments in the presence of multibyte characters.
+
+ee. Fixed a bug that caused bash to not change the xtrace file descriptor if
+    BASH_XTRACEFD was found in the shell environment at startup.
+
+ff. Fixed a memory leak in the pattern removal parameter expansion.
+
+gg. Fixed a bug that caused SIGINT to fail to interrupt a nested loop if the
+    loop was in a pipeline.
+
+hh. Fixed a problem in $(...) parsing that caused the parser to add an extra
+    space to a here-document delimiter if the first word contained a `/'.
+
+ii. Fixed a bug that caused functions defined with the `function' reserved
+    word to require braces around the function body.
+
+jj. Fixed a bug that caused bash to dump core when a variable expansion being
+    used as an array subscript failed.
+
+kk. Fixed a bug that caused bash to dump core if the case-modification
+    expansions were used on a variable with a null value.
+
+ll. Fixed a bug that caused partially-quoted strings to be split incorrectly
+    if a variable with a null value was expanded within double quotes.
+
+mm. The pattern substitution word expansion has been sped up dramatically
+    when running in a locale with multibyte characters.
+
+nn. Fixed a bug that caused history -a to not write the correct lines to
+    the history file if all the new lines in the history list were added
+    since the last time the history file was read or written.
+
+oo. Fixed a bug that caused completion of a word with an unclosed `` command
+    substitution to set the prompt incorrectly.
+
+pp. Fixed a bug that caused extended globbing patterns in $HISTIGNORE or
+    $GLOBIGNORE to be incorrectly scanned.
+
+qq. Fixed a bug caused by closing file descriptors 3-20 on shell startup.  The
+    shell now sets them to close-on-exec.
+
+rr. Fixed a bug that caused the exit status of `exec file' to be set incorrectly
+    if `file' was a directory.
+
+ss. Fixed a bug in the `.' builtin to make a non-interactive posix-mode shell
+    exit if the file argument to `.' is not found.  Prefixing exec with 
+    `command' makes the shell not exit. Posix requires this behavior.
+
+tt. Fixed a bug that caused `sh -c 'command exec; exit 1' to hang.
+
+uu. Fixed a bug in $(...) command substitution parsing that caused the shell
+    to treat backslash-newline incorrectly when parsing a comment.
+
+vv. Fixed bug that caused brace expansion sequence generation to misbehave
+    when supplied integers greater than 2**31 - 1.
+
+ww. Fixed a bug that caused failure to save file descriptors for redirections
+    to corrupt shell file descriptors.
+
+xx. Fixed a bug that caused bash-forward-shellword to not correctly handle
+    quoted strings.
+
+2.  Changes to Readline
+
+a.  Fixed a bug that caused the unconverted filename to be added to the list of
+    completions when the application specified filename conversion functions.
+
+b.  Fixed a bug that caused the wrong filename to be passed to opendir when the
+    application has specified a filename dequoting function.
+
+c.  Fixed a bug when repeating a character search in vi mode in the case where
+    there was no search to repeat.
+
+d.  When show-all-if-ambiguous is set, the completion routines no longer insert
+    a common match prefix that is shorter than the text being completed.
+
+e.  The full set of vi editing commands may now be used in callback mode.
+
+f.  Fixed a bug that caused readline to not update its idea of the terminal
+    dimensions while running in `no-echo' mode.
+
+h.  Fixed a bug that caused readline to dump core if an application called
+    rl_prep_terminal without setting rl_instream.
+
+i.  Fixed a bug that caused meta-prefixed characters bound to incremental
+    search forward or backward to not be recognized if they were typed
+    subsequently.
+
+j.  The incremental search code treats key sequences that map to the same
+    functions as (default) ^G, ^W, and ^Y as equivalent to those characters.
+
+k.  Fixed a bug in menu-complete that caused it to misbehave with large
+    negative argument.
+
+l.  Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked
+    at the end of the line.
+
+3.  New Features in Bash
+
+a.  `exec -a foo' now sets $0 to `foo' in an executable shell script without a
+    leading #!.
+
+b.  Subshells begun to execute command substitutions or run shell functions or
+    builtins in subshells do not reset trap strings until a new trap is
+    specified.  This allows $(trap) to display the caller's traps and the
+    trap strings to persist until a new trap is set.
+
+c.  `trap -p' will now show signals ignored at shell startup, though their
+    disposition still cannot be modified.
+
+d.  $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
+
+e.  declare/typeset has a new `-g' option, which creates variables in the
+    global scope even when run in a shell function.
+
+f.  test/[/[[ have a new -v variable unary operator, which returns success if
+    `variable' has been set.
+
+g.  Posix parsing changes to allow `! time command' and multiple consecutive
+    instances of `!' (which toggle) and `time' (which have no cumulative
+    effect).
+
+h.  Posix change to allow `time' as a command by itself to print the elapsed
+    user, system, and real times for the shell and its children.
+
+j.  $((...)) is always parsed as an arithmetic expansion first, instead of as
+    a potential nested command substitution, as Posix requires.
+
+k.  A new FUNCNEST variable to allow the user to control the maximum shell
+    function nesting (recursive execution) level.
+
+l.  The mapfile builtin now supplies a third argument to the callback command:
+    the line about to be assigned to the supplied array index.
+
+m.  The printf builtin has a new %(fmt)T specifier, which allows time values
+    to use strftime-like formatting.
+
+n.  There is a new `compat41' shell option.
+
+o.  The cd builtin has a new Posix-mandated `-e' option.
+
+p.  Negative subscripts to indexed arrays, previously errors, now are treated
+    as offsets from the maximum assigned index + 1.
+
+q.  Negative length specifications in the ${var:offset:length} expansion,
+    previously errors, are now treated as offsets from the end of the variable.
+
+r.  Parsing change to allow `time -p --'.
+
+s.  Posix-mode parsing change to not recognize `time' as a keyword if the
+    following token begins with a `-'.  This means no more Posix-mode
+    `time -p'.  Posix interpretation 267.
+
+t.  There is a new `lastpipe' shell option that runs the last command of a
+    pipeline in the current shell context.  The lastpipe option has no
+    effect if job control is enabled.
+
+u.  History expansion no longer expands the `$!' variable expansion.
+
+v.  Posix mode shells no longer exit if a variable assignment error occurs
+    with an assignment preceding a command that is not a special builtin.
+
+w.  Non-interactive mode shells exit if -u is enabled and an attempt is made
+    to use an unset variable with the % or # expansions, the `//', `^', or
+    `,' expansions, or the parameter length expansion.
+
+x.  Posix-mode shells use the argument passed to `.' as-is if a $PATH search
+    fails, effectively searching the current directory.  Posix-2008 change.
+
+4.  New Features in Readline
+
+a.  The history library does not try to write the history filename in the
+    current directory if $HOME is unset.  This closes a potential security
+    problem if the application does not specify a history filename.
+
+b.  New bindable variable `completion-display-width' to set the number of
+    columns used when displaying completions.
+
+c.  New bindable variable `completion-case-map' to cause case-insensitive
+    completion to treat `-' and `_' as identical.
+
+d.  There are new bindable vi-mode command names to avoid readline's case-
+    insensitive matching not allowing them to be bound separately.
+
+e.  New bindable variable `menu-complete-display-prefix' causes the menu
+    completion code to display the common prefix of the possible completions
+    before cycling through the list, instead of after.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-rc,
+and the previous version, bash-4.1-beta.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused printf to not return a partial value when it
+    encountered an error while converting an integer argument.
+
+b.  Fixed a bug that caused setting one of the compatNN options to not
+    turn off the others.
+
+c.  The (undocumented) --wordexp option is no longer included by default.
+
+d.  Fixed a bug in conditional command execution that caused it to not
+    correctly ignore the exit status under certain circumstances.
+
+e.  Added a configure-time check for correctly-working asprintf/snprintf.
+
+f.  Fixed some problems with line number calculation and display when sourcing
+    a file in an interactive shell.
+
+g.  Fixed a bug that caused the shell to crash when using `declare -A foo=bar'.
+
+h.  Fixed a bug that caused an off-by-one error when calculating the directories
+    to display with the PROMPT_DIRTRIM option.
+
+2.  Changes to Readline
+
+a.  Fixed a bug that caused applications using the callback interface to not
+    react to SIGINT (or other signals) until another character arrived.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-beta,
+and the previous version, bash-4.1-alpha.
+
+1.  Changes to Bash
+
+a.  Fixed a bug in mapfile that caused the shell to crash if it was passed the
+    name of an associative array.
+
+b.  Fixed a bug that caused the shell to incorrectly split case patterns if
+    they contained characters in $IFS.
+
+c.  Fixed a bug that caused the shell to set $? to the wrong value when using
+    a construct ending with a variable assignment with set -x enabled and PS4
+    containing a command substitution.
+
+d.  Fixed a bug that caused the shell to read commands incorrectly if an
+    expansion error occurred under certain conditions in a user-specified
+    subshell.
+
+e.  Fixed a bug that caused the shell to set $? incorrectly if a parse error
+    occurred in an evaluation context ("eval", trap command, dot script, etc.)
+
+f.  Fixed a bug that caused the shell to attempt command substitution
+    completion within a single-quoted string.
+
+g.  Fixed a bug that caused the shell to insert an extra single quote during
+    word completion.
+
+h.  Fixed a bug that caused the shell to crash if invoked with the environment
+    variable EMACS having a null value.
+
+i.  Fixed a bug that caused bash to incorrectly report the presence of new
+    mail in a `maildir' environment.
+
+j.  Fixed a bug that caused the shell to not recognize a here-document ending
+    delimiter inside a command substitution.
+
+k.  Fixed a bug that caused the shell to crash when a a dynamic array variable
+    was assigned a scalar value.
+
+2.  Changes to Readline
+
+3.  New Features in Bash
+
+a.  The mapfile/readarray builtin no longer stores the commands it invokes via
+    callbacks in the history list.
+
+b.  There is a new `compat40' shopt option.
+
+c.  The < and > operators to [[ do string comparisons using the current locale
+    only if the compatibility level is greater than 40 (set to 41 by default).
+
+4.  New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-alpha,
+and the previous version, bash-4.0-release.
+
+1.  Changes to Bash
+
+a.  Fixed bugs in the parser involving new parsing of the commands contained
+    in command substitution when the substitution is read.
+
+b.  Fixed a bug that caused the shell to dump core when performing programmable
+    completion using a shell function.
+
+c.  Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong
+    time.
+
+d.  Fixed a bug that caused the shell to dump core when listing jobs in the
+    `exit' builtin.
+
+e.  Fixed several bugs encountered when reading subscripts in associative
+    array assignments and expansions.
+
+f.  Fixed a bug that under some circumstances caused an associative array to
+    be converted to an indexed array.
+
+g.  Fixed a bug that caused syntax errors and SIGINT interrupts to not set
+    $? to a value > 128.
+
+h.  Fixed a bug that caused the shell to remove FIFOs associated with process
+    substitution inside shell functions.
+
+i.  Fixed a bug that caused terminal attributes to not be reset when the
+    `read' builtin timed out.
+
+j.  Fixed a bug in brace expansion that caused unwanted zero padding of the
+    expanded terms.
+
+k.  Fixed a bug that prevented the |& construct from working as intended when
+    used with a simple command with additional redirections.
+
+l.  Fixed a bug with the case statment ;& terminator that caused the shell to
+    dereference a NULL pointer.
+
+m.  Fixed a bug that caused assignment statements or redirections preceding
+    a simple command name to inhibit alias expansion.
+
+n.  Fixed the behavior of `set -u' to conform to the latest Posix interpretation:
+    every expansion of an unset variable except $@ and $* will cause the
+    shell to exit.
+
+o.  Fixed a bug that caused double-quoted expansions of $* inside word
+    expansions like ${x#$*} to not expand properly when $IFS is empty.
+
+p.  Fixed a bug that caused traps to set $LINENO to the wrong value when they
+    execute.
+
+q.  Fixed a bug that caused off-by-one errors when computing history lines in
+    the `fc' builtin.
+
+r.  Fixed a bug that caused some terminating signals to not exit the shell
+    quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV)
+    multiple times.
+
+s.  Fixed a bug that caused the shell to attempt to add empty lines to the
+    history list when reading here documents.
+
+t.  Made some internal changes that dramatically speeds up sequential indexed
+    array access.
+
+u.  Fixed a bug that caused the shell to write past the end of a string when
+    completing a double-quoted string ending in a backslash.
+
+v.  Fixed a bug that caused the shell to replace too many characters when a
+    pattern match was null in a ${foo//bar} expansion.
+
+w.  Fixed bugs in the expansion of ** that caused duplicate directory names
+    and the contents of the current directory to be omitted.
+
+x.  Fixed a bug that caused $? to not be set correctly when referencing an
+    unset variable with set -u and set -e enabled.
+
+y.  Fixed a bug caused by executing an external program from the DEBUG trap
+    while a pipeline was running.  The effect was to disturb the pipeline
+    state, occasionally causing it to hang.
+
+z.  Fixed a bug that caused the ** glob expansion to dump core if it
+    encountered an unsearchable directory.
+
+aa. Fixed a bug that caused `command -v' and `command -V' to not honor the
+    path set by the -p option.
+
+bb. Fixed a bug that caused brace expansion to take place too soon in some
+    compound array assignments.
+
+cc. Fixed a bug that caused programmable completion functions' changes to
+    READLINE_POINT to not be reflected back to readline.
+
+dd. Fixed a bug that caused the shell to dump core if a trap was executed
+    during a shell assignment statement.
+
+ee. Fixed an off-by-one error when computing the number of positional
+    parameters for the ${@:0:n} expansion.
+
+ff. Fixed a problem with setting COMP_CWORD for programmable completion
+    functions that could leave it set to -1.
+
+gg. Fixed a bug that caused the ERR trap to be triggered in some cases where
+    `set -e' would not have caused the shell to exit.
+
+hh. Fixed a bug that caused changes made by `compopt' to not persist past the
+    completion function in which compopt was executed.
+
+ii. Fixed a bug that caused the list of hostname completions to not be cleared
+    when HOSTNAME was unset.
+
+jj. Fixed a bug that caused variable expansion in here documents to look in
+    any temporary environment.
+
+kk. Bash and readline can now convert file names between precomposed and
+    decomposed Unicode on Mac OS X ("keyboard" and file system forms,
+    respectively).  This affects filename completion (using new
+    rl_filename_rewrite_hook), globbing, and readline redisplay.
+
+ll. The ERR and EXIT traps now see a non-zero value for $? when a parser
+    error after set -e has been enabled causes the shell to exit.
+
+mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to
+    not contain the correct number of digits.
+
+nn. Fixed a bug that caused the shell to free non-allocated memory when
+    unsetting an associative array which had had a value implicitly assigned
+    to index "0".
+
+oo. Fixed a memory leak in the ${!prefix@} expansion.
+
+pp. Fixed a bug that caused printf to not correctly report all write errors.
+
+qq. Fixed a bug that caused single and double quotes to act as delimiters
+    when splitting a command line into words for programmable completion.
+
+rr. Fixed a bug that caused ** globbing that caused **/path/* to match every
+    directory, not just those matching `path'.
+
+ss. Fixed a bug that caused the shell to dump core when running `help' without
+    arguments if the terminal width was fewer than 7 characters.
+
+2.  Changes to Readline
+
+a.  The SIGWINCH signal handler now avoids calling the redisplay code if
+    one arrives while in the middle of redisplay.
+
+b.  Changes to the timeout code to make sure that timeout values greater
+    than one second are handled better.
+
+c.  Fixed a bug in the redisplay code that was triggered by a prompt
+    containing invisible characters exactly the width of the screen.
+
+d.  Fixed a bug in the redisplay code encountered when running in horizontal
+    scroll mode.
+
+e.  Fixed a bug that prevented menu completion from properly completing
+    filenames.
+
+f.  Fixed a redisplay bug caused by a multibyte character causing a line to
+    wrap.
+
+g.  Fixed a bug that caused key sequences of two characters to not be
+    recognized when a longer sequence identical in the first two characters
+    was bound.
+
+h.  Fixed a bug that caused history expansion to be attempted on $'...'
+    single-quoted strings.
+
+i.  Fixed a bug that caused incorrect redisplay when the prompt contained
+    multibyte characters in an `invisible' sequence bracketed by \[ and
+    \].
+
+j.  Fixed a bug that caused history expansion to short-circuit after
+    encountering a multibyte character.
+
+3.  New Features in Bash
+
+a.  Here-documents within $(...) command substitutions may once more be
+    delimited by the closing right paren, instead of requiring a newline.
+
+b.  Bash's file status checks (executable, readable, etc.) now take file
+    system ACLs into account on file systems that support them.
+
+c.  Bash now passes environment variables with names that are not valid
+    shell variable names through into the environment passed to child
+    processes.
+
+d.  The `execute-unix-command' readline function now attempts to clear and
+    reuse the current line rather than move to a new one after the command
+    executes.
+
+e.  `printf -v' can now assign values to array indices.
+
+f.  New `complete -E' and `compopt -E' options that work on the "empty"
+    completion: completion attempted on an empty command line.
+
+g.  New complete/compgen/compopt -D option to define a `default' completion:
+    a completion to be invoked on command for which no completion has been
+    defined.  If this function returns 124, programmable completion is
+    attempted again, allowing a user to dynamically build a set of completions
+    as completion is attempted by having the default completion function
+    install individual completion functions each time it is invoked.
+
+h.  When displaying associative arrays, subscripts are now quoted.
+
+i.  Changes to dabbrev-expand to make it more `emacs-like': no space appended
+    after matches, completions are not sorted, and most recent history entries
+    are presented first.
+
+j.  The [[ and (( commands are now subject to the setting of `set -e' and the
+    ERR trap.
+
+k.  The source/. builtin now removes NUL bytes from the file before attempting
+    to parse commands.
+
+l.  There is a new configuration option (in config-top.h) that forces bash to
+    forward all history entries to syslog.
+
+m.  A new variable $BASHOPTS to export shell options settable using `shopt' to
+    child processes.
+
+n.  There is a new confgure option that forces the extglob option to be
+    enabled by default.
+
+o.  New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
+    output to that file descriptor.
+
+p.  If the optional left-hand-side of a redirection is of the form {var}, the
+    shell assigns the file descriptor used to $var or uses $var as the file
+    descriptor to move or close, depending on the redirection operator.
+
+q.  The < and > operators to the [[ conditional command now do string
+    comparison according to the current locale.
+
+r.  Programmable completion now uses the completion for `b' instead of `a'
+    when completion is attempted on a line like: a $(b c.
+
+s.  Force extglob on temporarily when parsing the pattern argument to
+    the == and != operators to the [[ command, for compatibility.
+
+t.  Changed the behavior of interrupting the wait builtin when a SIGCHLD is
+    received and a trap on SIGCHLD is set to be Posix-mode only.
+
+u.  The read builtin has a new `-N nchars' option, which reads exactly NCHARS
+    characters, ignoring delimiters like newline.
+
+4.  New Features in Readline
+
+a.  New bindable function: menu-complete-backward.
+
+b.  In the vi insertion keymap, C-n is now bound to menu-complete by default,
+    and C-p to menu-complete-backward.
+
+c.  When in vi command mode, repeatedly hitting ESC now does nothing, even
+    when ESC introduces a bound key sequence.  This is closer to how
+    historical vi behaves.
+
+d.  New bindable function: skip-csi-sequence.  Can be used as a default to
+    consume key sequences generated by keys like Home and End without having
+    to bind all keys.
+
+e.  New application-settable function: rl_filename_rewrite_hook.  Can be used
+    to rewite or modify filenames read from the file system before they are
+    compared to the word to be completed.
+
+f.  New bindable variable: skip-completed-text, active when completing in the
+    middle of a word.  If enabled, it means that characters in the completion
+    that match characters in the remainder of the word are "skipped" rather
+    than inserted into the line.
+
+g.  The pre-readline-6.0 version of menu completion is available as
+    "old-menu-complete" for users who do not like the readline-6.0 version.
+
+h.  New bindable variable: echo-control-characters.  If enabled, and the
+    tty ECHOCTL bit is set, controls the echoing of characters corresponding
+    to keyboard-generated signals.
+
+i.  New bindable variable: enable-meta-key.  Controls whether or not readline
+    sends the smm/rmm sequences if the terminal indicates it has a meta key
+    that enables eight-bit characters.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.0-release,
+and the previous version, bash-4.0-rc1.
+
+1.  Changes to Bash
+
+a.  Changed the message printed when setlocale(3) fails to only include the
+    strerror error text if the call changes errno.
+
+b.  Changed trap command execution to reset the line number before running a
+    trap (except DEBUG and RETURN traps).
+
+c.  Fixed behavior of case-modifiying word expansions to not work on
+    individual words within a variable's value.
+
+d.  Fixed a bug that caused mapfile to not be interruptible when run in an
+    interactive shell.
+
+e.  Fixed a bug that caused mapfile to not run callbacks for the first line
+    read.
+
+f.  Fixed a bug that caused mapfile to not honor EOF typed in an interactive
+    shell.
+
+g.  Fixed the coprocess reaping code to not run straight from a signal handler.
+
+h.  Fixed a bug that caused printf -b to ignore the first % conversion specifier
+    in the format string on 64-bit systems.
+
+i.  Fixed a bug that caused incorrect word splitting when `:', `=', or `~'
+    appeared in $IFS.
+
+j.  Fixed a bug that caused data corruption in the programmable completion code
+    when a shell function called from a completion aborted execution.
+
+k.  Fixed a bug that caused the CPU usage reported by the `time' builtin to be
+    capped at 100%.
+
+l.  Changed behavior of shell when -e option is in effect to reflect consensus
+    of Posix shell standardization working group.
+
+m.  Fixed a bug introduced in bash-4.0-alpha that caused redirections to not
+    be displayed by `type' or `declare' when appearing in functions under
+    certain circumstances.
+
+2.  Changes to Readline
+
+a.  Fixed a bug that caused !(...) extended glob patterns to inhibit later
+    history expansion.
+
+b.  Reworked the signal handling to avoid calling disallowed functions from a
+    signal handler.
+
+3.  New Features in Bash
+
+a.  `readarray' is now a synonym for `mapfile'.
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-4.0-rc1,
 and the previous version, bash-4.0-beta2.
 
@@ -43,7 +3552,7 @@ b.  Fixed a bug that caused redisplay errors when using prompts with invisible
 
 ------------------------------------------------------------------------------
 This document details the changes between this version, bash-4.0-beta,
-and the previous version, bash-4.0-beta.
+and the previous version, bash-4.0-alpha.
 
 1.  Changes to Bash
 
@@ -545,7 +4054,7 @@ bb. The command assigned to a key sequence with `bind -x' now sets two new
     and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
     respectively.
 
-cc. There is a new >>& redirection operator, which appends the standard output
+cc. There is a new &>> redirection operator, which appends the standard output
     and standard error to the named file.
 
 dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects