]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - CHANGES
bash-4.3-beta overlay
[thirdparty/bash.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index b168b407a73ddf9eef90f3dd79973911c90eb0b6..3aaa81770c71633342323d9d6eee3a4237e42a7d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
+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 statues 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 detects there is data available on its input file
+    descriptor.
+
+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.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused parsing errors when a $()-style command
+    substitution was follwed immediately by a quoted newline.
+
+b.  Fixed a bug that caused extended shell globbing patterns beginning with
+    `*(' to not work when used with pattern substitution word expansions.
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.0-beta2,
+and the previous version, bash-4.0-beta.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused failed word expansions to set $? but not
+    PIPESTATUS.
+
+b.  Changed filename completion to quote the tilde in a filename with a
+    leading tilde that exists in the current directory.
+
+c.  Fixed a bug that caused a file descriptor leak when performing
+    redirections attached to a compound command.
+
+d.  Fixed a bug that caused expansions of $@ and $* to not exit the shell if
+    the -u option was enabled and there were no posititional parameters.
+
+e.  Fixed a bug that resulted in bash not terminating immediately if a
+    terminating signal was received while performing output.
+
+f.  Fixed a bug that caused the shell to crash after creating 256 process
+    substitutions during word completion.
+
+2.  Changes to Readline
+
+a.  Fixed a bug that caused redisplay errors when using prompts with invisible
+    characters and numeric arguments to a command in a multibyte locale.
+
+b.  Fixed a bug that caused redisplay errors when using prompts with invisible
+    characters spanning more than two physical screen lines.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.0-beta,
+and the previous version, bash-4.0-alpha.
+
+1.  Changes to Bash
+
+a.  Fixed a typo that caused a variable to be used before initialization
+    while parsing Posix-style command substitutions.
+
+b.  Fixed a bug that caused stray ^? when the expansion of a parameter used
+    as part of a pattern removal expansion is empty, but part of a non-
+    empty string.
+
+c.  Fixed a bug that could cause strings not converted to numbers by strtol
+    to be treated as if the conversion had been successful.
+
+d.  The `return' builtin now accepts no options and requires a `--' before
+    a negative return value, as Posix requires.
+
+e.  Fixed a bug that caused local variables to be created with the empty
+    string for a value rather than no value.
+
+f.  Changed behavior so the shell now acts as if it received an interrupt
+    when a pipeline is killed by SIGINT while executing a list.
+
+g.  Fixed a bug that caused `declare var' and `typeset var' to initialize
+    `var' to the empty string.
+
+h.  Changed `bind' builtin to print a warning but proceed if invoked when
+    line editing is not active.
+
+i.  Fixed a bug that caused the shell to exit when the `errexit' option is
+    set and a command in a pipeline returns a non-zero exit status.
+
+j.  Fixed a bug that caused the shell to not run the exit trap in a command
+    run with `bash -c' under some circumstances.
+
+k.  Fixed a bug that caused parser errors to occasionally not set $? when
+    running commands with `eval'.
+
+l.  Fixed a bug that caused stray control characters when evaluating compound
+    array assignments containing $'\x7f' escapes.
+
+m.  Fixed a bug that caused redirections involving file descriptor 10 as the
+    target to behave incorrectly.
+
+n.  Fixed a bug that could cause memory to be freed multiple times when
+    assigning to COMP_WORDBREAKS.
+
+o.  Fixed a bug that could cause NULL pointer dereferences when COMP_WORDBREAKS
+    was unset.
+
+2.  Changes to Readline
+
+3.  New Features in Bash
+
+a.  A value of 0 for the -t option to `read' now returns success if there is
+    input available to be read from the specified file descriptor.
+
+b.  CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
+    mode.
+
+c.  New bindable readline functions shell-forward-word and shell-backward-word,
+    which move forward and backward words delimited by shell metacharacters
+    and honor shell quoting.
+
+d.  New bindable readline functions shell-backward-kill-word and shell-kill-word
+    which kill words backward and forward, but use the same word boundaries
+    as shell-forward-word and shell-backward-word.
+
+4.  New Features in Readline
+
+a.  If the kernel supports it, readline displays special characters
+    corresponding to a keyboard-generated signal when the signal is received.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.0-alpha,
+and the previous version, bash-3.2-release.
+
+1.  Changes to Bash
+
+a.  Fixed several bugs in old-style `` command substitution parsing, including
+    comment parsing and quoted string handling.
+
+b.  Fixed problems parsing arguments to the [[ command's =~ regular expression
+    matching operator:  metacharacter and whitespace parsing.
+
+c.  Fixed a bug that caused the shell to inappropriately reuse high-numbered
+    file descriptors it used internally.
+
+d.  Fixed a bug in pattern replacement word expansions that caused a `/' as
+    the first character of an expanded pattern to be mistaken for a global
+    replacement specifier.
+
+e.  Fixed several problems with the asprintf and snprintf replacement functions
+    that caused hangs and crashes.
+
+f.  Fixed a bug in the calculation of the current and previous job that caused
+    it to refer to incorrect jobs.
+
+g.  Fixed a bug in the check for the validity of a hashed command pathname that
+    caused unnecessary hash table deletions and additions.
+
+h.  Fixed a bug that caused child processes to inherit the wrong value for $!.
+
+i.  Fixed a bug that caused `.' to fail to read and execute commands from non-
+    regular files such as devices or named pipes.
+
+j.  Fixed a bug in printf formatting for the %x and %X expansions that occurred
+    on some systems.
+
+k.  Fixed a bug that caused the shell to crash when creating temporary files if
+    $TMPDIR named a non-writable directory.
+
+l.  Fixed a bug that caused the shell to ignore $TMPDIR when creating temporary
+    files under some circumstances.
+
+m.  Fixed a bug that caused named pipes created by process substitution to not
+    be cleaned up.
+
+n.  Fixed a bug that caused HISTTIMEFORMAT to not be honored when it appeared
+    in the initial shell environment.
+
+o.  Fixed several bugs in the expansion of $* and $@ (quoted and unquoted)
+    when IFS is null or contains non-whitespace characters; the same changes
+    apply to arrays subscripted with * or @.
+
+p.  Fixed several problems with pattern substitution expansions on the
+    positional parameters and arrays subscripted with * or @ that occurred
+    when $IFS was set to the empty string.
+
+q.  Made a change to the default locale initialization code that should
+    result in better behavior from the locale-aware library functions.
+
+r.  Fixed a bug that caused compacting the jobs list to drop jobs.
+
+s.  Fixed a bug that caused jumps back to the top-level processing loop from
+    a builtin command to leave the shell in an inconsistent state.
+
+t.  Fixed a bug that caused characters that would be escaped internally to be
+    doubled when escaped with a backslash.
+
+u.  Fixed the initialization of mailboxes to not cause maildirs to be read
+    (and stat(2) called for every message file) at shell startup.
+
+v.  Fixed a bug that caused the shell to not display $PS2 when the read builtin
+    reads a line continued with a backslash.
+
+w.  Fixed a bug that caused errors in word splitting when $IFS contained
+    characters used for internal quoting.
+
+x.  Fixed bugs that caused problems with output from shell builtins not being
+    completely displayed on some systems.
+
+y.  Fixed a bug that caused output to be lost when a redirection is acting on
+    the shell's output file descriptor.
+
+z.  Fixed bugs caused by shell builtins not checking for all write errors.
+
+aa. Fixed a problem that caused the shell to dump core if expansions on the
+    pattern passed to the pattern removal word expansions resulted in expansion
+    errors.
+
+bb. Fixed a bug that caused bash to loop infinitely after creating and
+    waiting for 4096 jobs.
+
+cc. Fixed a bug that caused bash to lose the status of a background job under
+    certain circumstances.
+
+dd. Fixed a bug that caused bash to not look in the temporary environment
+    when performing variable lookup under certain circumstances.
+
+ee. Fixed a bug that caused bash to close file descriptors greater than 10
+    when they were used in redirections.
+
+ff. Fixed a problem that caused the shell to attempt to read from the standard
+    input when called as `bash -i script'.
+
+gg. Fixed a memory leak and variable initialization problems when the -v option
+    was supplied to `printf' that could cause incorrect results.
+
+hh. Fixed a bug that caused the `read' builtin to count bytes when the -n option
+    was supplied, rather than (possibly multibyte) characters.
+
+ii. Fixed a bug when displaying a function due to not converting the function
+    to an external form.
+
+jj. Changed job control initialization to ensure that the shell has a tty
+    as its controlling terminal before enabling job control.
+
+kk. Fixed a bug with the `test' builtin that caused it to misinterpret
+    arguments beginning with `-' but containing more than one character.
+
+ll. Fixed bug that could cause the shell to dump core in certain cases where
+    a command sets the SIGINT disposition to the default.
+
+mm. Fixed a bug in the pattern replacement (affecting both word expansion
+    and the `fc' builtin) that occurred when the pattern and replacement
+    strings were empty.
+
+nn. Fixed a bug that caused an arithmetic evaluation error to disable all
+    further evaluation.
+
+oo. Fixed a bug in pathname expansion that caused it to interpret backslashes
+    in the pathname as quoting characters.
+
+pp. Fixed a bug in the replacement getcwd() implementation that could cause
+    memory to be overwritten.
+
+qq. When in Posix mode, the `ulimit' builtin now uses a block size of 512 for
+    the `-c' and `-f' options.
+
+rr. Brace expansion now allows process substitutions to pass through unchanged.
+
+ss. Fixed a problem in the command name completion code to avoid quoting
+    escaped special characters twice when the command name begins with a tilde.
+
+tt. Fixed a problem in the printf builtin that resulted in single-byte
+    output for the "'" escape, even when using multibyte characters.
+
+uu. Fixed a bug that caused the failure exit status to be lost when redirections
+    attached to a compound command failed.
+
+vv. Fixed a bug that caused the internal random number generator to not be
+    re-seeded correctly when creating a subshell.
+
+ww. Fixed a bug that could cause the bash replacement getcwd to overwrite
+    memory.
+
+xx. Fixed a bug that caused the shell to not receive SIGINT if it was sent
+    while the shell was waiting for a command substitution to terminate, and
+    make sure the exit status is correct when it does.
+
+yy. Fixed a bug that resulted in the second and subsequent children spawned
+    by a shell begun to run a command substitution being placed into the
+    wrong process group.
+
+zz. Fixed a bug that caused the results of successful tilde expansion to be
+    subject to pathname expansion and word splitting.
+
+aaa. Fixed a bug that could cause the shell to hang if it encountered an
+     error that caused it to jump back to the top processing loop during a
+     command substitution or `eval' command.
+
+bbb. Fixed a bug that caused the `read' builtin to use the tty's attributes
+     instead of those of the file descriptor passed with the -u option when
+     processing the -n and -d options.
+
+ccc. Fixed a bug that caused incorrect expansion of ${array[@]:foo} if the
+     first character of $IFS was not whitespace.
+
+ddd. Fixed a bug that occurred when scanning for the ending delimiter of a
+     ${parameter/pat/sub} expansion.
+
+eee. Fixed a bug that caused the shell to inappropriately expand command
+     substitutions in words when expanding directory names for completion.
+
+fff. Fixed a bug that caused the `fc' builtin to look too far back in the
+     history list under certain circumstances.
+
+ggg. Fixed a bug that caused a shell running in Posix mode to search $PWD for
+     a file specified as an argument to source/. when the file was not found
+     in $PATH.
+
+hhh. Fixed a bug that caused the shell to modify the case of a command word
+     found via command completion when the shell was performing case-
+     insensitive completion.
+
+iii. Fixed a bug that caused the shell to search $PATH for an argument to
+     source/. even when it contained a `/'.
+
+jjj. Fixed a bug that caused brace expansion to misorder expansions when the
+     locale did not have a collating order like aAbBcC...zZ.
+
+kkk. Fixed a bug that did not allow `set +o history' to have any effect when
+     run in a startup file or from a sourced file.
+
+lll. Fixed a bug with the precedence of the ?: conditional arithmetic operator.
+
+mmm. Fixed a bug that caused side effects of temporary variable assignments
+     to persist in the shell environment.
+
+nnn. Fixed a bug that caused the terminal to be left in non-canonical mode
+     when using editing commands that invoke the an editor on the current
+     command line.
+
+ooo. Fixed a bug that caused globbing characters and characters in $IFS to not
+     be quoted appropriately when displaying assignment statements.
+
+ppp. Fixed a bug that caused the `-e' option to be inherited when sourcing a
+     file or evaluating a command with `eval' even if the return value of the
+     command was supposed to be ignored.
+
+qqq. Fixed a bug that caused the shell to attempt to created variables with
+     invalid names if such names appeared in the initial environment.
+
+rrr. Fixed a bug with quote removal in strings where the final character is a
+     backslash.
+
+sss. Fixed a bug that caused the effects of special variables to persist even
+     when the variables were unset as part of the shell reinitializing itself
+     to execute a shell script.
+
+ttt. Fixed a bug that caused the history to not be saved after `history -c' or
+     `history -d' was executed until a sufficient number of commands had been
+     saved to the history.
+
+uuu. Bash now parses command substitutions according to Posix rules: parsing
+     the command contained in $() to find the closing delimiter.
+
+vvv. Fixed a bug that caused traps on SIGCHLD set in a SIGCHLD handler to
+     not persist.
+
+www. Fixed a bug that didn't allow SIGCHLD to interrupt the `wait' builtin
+     as Posix specifies.
+
+xxx. Invalid numeric arguments to shell builtins no longer cause the shell to
+     short-circuit any executing compound command.
+
+yyy. Fixed a bug that caused the exit status to be lost when `break' was
+     used to short-circuit a loop's execution.
+
+zzz. Fixed a bug that caused stray ^? characters to be left in expansions of
+     "${array[*]}".
+
+aaaa. Bash now prints better error messages for here documents terminated by
+      EOF and for identifying the incorrect token in an invalid arithmetic
+      expression.
+
+bbbb. Fixed a bug in the variable length word expansion that caused it to
+      incorrectly calculate the number of multibyte characters.
+
+cccc. Fixed a race condition that could result in the top-level shell setting
+      the terminal's process group to an incorrect value if the process
+      group was changed by a child of a child of the shell.
+
+dddd. Fixed a bug that caused here documents belonging to commands within a
+      compound command to be displayed in a syntactially-incorrect form, which
+      prevented them from being re-read as input.
+
+eeee. The shell displays more warnings about failures to set the locale.
+
+ffff. Fixed a bug that caused the body of a here-document to not be saved to
+      the history list.
+
+gggg. Fixed a bug that caused configure to incorrectly conclude that FreeBSD
+      had /dev/fd available, resulting in problems with process substitution.
+
+2.  Changes to Readline
+
+a.  Fixed a number of redisplay errors in environments supporting multibyte 
+    characters.
+
+b.  Fixed bugs in vi command mode that caused motion commands to inappropriately
+    set the mark.
+
+c.  When using the arrow keys in vi insertion mode, readline allows movement
+    beyond the current end of the line (unlike command mode).
+
+d.  Fixed bugs that caused readline to loop when the terminal has been taken
+    away and reads return -1/EIO.
+
+e.  Fixed bugs in redisplay occurring when displaying prompts containing
+    invisible characters.
+
+f.  Fixed a bug that caused the completion append character to not be reset to
+    the default after an application-specified completion function changed it.
+
+g.  Fixed a problem that caused incorrect positioning of the cursor while in
+    emacs editing mode when moving forward at the end of a line while using
+    a locale supporting multibyte characters.
+
+h.  Fixed an off-by-one error that caused readline to drop every 511th
+    character of buffered input.
+
+i.  Fixed a bug that resulted in SIGTERM not being caught or cleaned up.
+
+j.  Fixed redisplay bugs caused by multiline prompts with invisible characters
+    or no characters following the final newline.
+
+k.  Fixed redisplay bug caused by prompts consisting solely of invisible
+    characters.
+
+l.  Fixed a bug in the code that buffers characters received very quickly in
+    succession which caused characters to be dropped.
+
+m.  Fixed a bug that caused readline to reference uninitialized data structures
+    if it received a SIGWINCH before completing initialzation.
+
+n.  Fixed a bug that caused the vi-mode `last command' to be set incorrectly
+    and therefore unrepeatable.
+
+o.  Fixed a bug that caused readline to disable echoing when it was being used
+    with an output file descriptor that was not a terminal.
+
+p.  Readline now blocks SIGINT while manipulating internal data structures
+    during redisplay.
+
+q.  Fixed a bug in redisplay that caused readline to segfault when pasting a
+    very long line (over 130,000 characters).
+
+r.  Fixed bugs in redisplay when using prompts with no visible printing
+    characters.
+
+3.  New Features in Bash
+
+a.  When using substring expansion on the positional parameters, a starting
+    index of 0 now causes $0 to be prefixed to the list.
+
+b.  The `help' builtin now prints its columns with entries sorted vertically
+    rather than horizontally.
+
+c.  There is a new variable, $BASHPID, which always returns the process id of
+    the current shell.
+
+d.  There is a new `autocd' option that, when enabled, causes bash to attempt
+    to `cd' to a directory name that is supplied as the first word of a
+    simple command.
+
+e.  There is a new `checkjobs' option that causes the shell to check for and
+    report any running or stopped jobs at exit.
+
+f.  The programmable completion code exports a new COMP_TYPE variable, set to
+    a character describing the type of completion being attempted.
+
+g.  The programmable completion code exports a new COMP_KEY variable, set to
+    the character that caused the completion to be invoked (e.g., TAB).
+
+h.  If creation of a child process fails due to insufficient resources, bash
+    will try again several times before reporting failure.
+
+i.  The programmable completion code now uses the same set of characters as
+    readline when breaking the command line into a list of words.
+
+j.  The block multiplier for the ulimit -c and -f options is now 512 when in
+    Posix mode, as Posix specifies.
+
+k.  Changed the behavior of the read builtin to save any partial input received
+    in the specified variable when the read builtin times out.  This also
+    results in variables specified as arguments to read to be set to the empty
+    string when there is no input available.  When the read builtin times out,
+    it returns an exit status greater than 128.
+
+l.  The shell now has the notion of a `compatibility level', controlled by
+    new variables settable by `shopt'.  Setting this variable currently
+    restores the bash-3.1 behavior when processing quoted strings on the rhs
+    of the `=~' operator to the `[[' command.
+
+m.  The `ulimit' builtin now has new -b (socket buffer size) and -T (number
+    of threads) options.
+
+n.  The -p option to `declare' now displays all variable values and attributes
+    (or function values and attributes if used with -f).
+
+o.  There is a new `compopt' builtin that allows completion functions to modify
+    completion options for existing completions or the completion currently
+    being executed.
+
+p.  The `read' builtin has a new -i option which inserts text into the reply
+    buffer when using readline.
+
+q.  A new `-E' option to the complete builtin allows control of the default
+    behavior for completion on an empty line.
+
+r.  There is now limited support for completing command name words containing
+    globbing characters.
+
+s.  Changed format of internal help documentation for all builtins to roughly
+    follow man page format.
+
+t.  The `help' builtin now has a new -d option, to display a short description,
+    and a -m option, to print help information in a man page-like format.
+
+u.  There is a new `mapfile' builtin to populate an array with lines from a
+    given file.
+
+v.  If a command is not found, the shell attempts to execute a shell function
+    named `command_not_found_handle', supplying the command words as the
+    function arguments.
+
+w.  There is a new shell option: `globstar'.  When enabled, the globbing code
+    treats `**' specially -- it matches all directories (and files within
+    them, when appropriate) recursively.
+
+x.  There is a new shell option: `dirspell'.  When enabled, the filename
+    completion code performs spelling correction on directory names during
+    completion.
+
+y.  The `-t' option to the `read' builtin now supports fractional timeout
+    values.
+
+z.  Brace expansion now allows zero-padding of expanded numeric values and
+    will add the proper number of zeroes to make sure all values contain the
+    same number of digits.
+
+aa. There is a new bash-specific bindable readline function: `dabbrev-expand'.
+    It uses menu completion on a set of words taken from the history list.
+
+bb. The command assigned to a key sequence with `bind -x' now sets two new
+    variables in the environment of the executed command:  READLINE_LINE_BUFFER
+    and READLINE_POINT.  The command can change the current readline line
+    and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
+    respectively.
+
+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
+    the standard error for a command through a pipe.
+
+ee. The new `;&' case statement action list terminator causes execution to
+    continue with the action associated with the next pattern in the
+    statement rather than terminating the command.
+
+ff. The new `;;&' case statement action list terminator causes the shell to
+    test the next set of patterns after completing execution of the current
+    action, rather than terminating the command.
+
+gg. The shell understands a new variable: PROMPT_DIRTRIM.  When set to an
+    integer value greater than zero, prompt expansion of \w and \W  will
+    retain only that number of trailing pathname components and replace
+    the intervening characters with `...'.
+
+hh. There are new case-modifying word expansions: uppercase (^[^]) and
+    lowercase (,[,]).  They can work on either the first character or
+    array element, or globally.  They accept an optional shell pattern
+    that determines which characters to modify.  There is an optionally-
+    configured feature to include capitalization operators.
+
+ii. The shell provides associative array variables, with the appropriate
+    support to create, delete, assign values to, and expand them.
+
+jj. The `declare' builtin now has new -l (convert value to lowercase upon
+    assignment) and -u (convert value to uppercase upon assignment) options.
+    There is an optionally-configurable -c option to capitalize a value at
+    assignment.
+
+kk. There is a new `coproc' reserved word that specifies a coprocess: an
+    asynchronous command run with two pipes connected to the creating shell.
+    Coprocs can be named.  The input and output file descriptors and the
+    PID of the coprocess are available to the calling shell in variables
+    with coproc-specific names.
+
+4.  New Features in Readline
+
+a.  A new variable, rl_sort_completion_matches; allows applications to inhibit
+    match list sorting (but beware: some things don't work right if
+    applications do this).
+
+b.  A new variable, rl_completion_invoking_key; allows applications to discover
+    the key that invoked rl_complete or rl_menu_complete.
+
+c.  The functions rl_block_sigint and rl_release_sigint are now public and
+    available to calling applications who want to protect critical sections
+    (like redisplay).
+
+d.  The functions rl_save_state and rl_restore_state are now public and
+    available to calling applications; documented rest of readline's state
+    flag values.
+
+e.  A new user-settable variable, `history-size', allows setting the maximum
+    number of entries in the history list.
+
+f.  There is a new implementation of menu completion, with several improvements
+    over the old; the most notable improvement is a better `completions
+    browsing' mode.
+
+g.  The menu completion code now uses the rl_menu_completion_entry_function
+    variable, allowing applications to provide their own menu completion
+    generators.
+
+h.  There is support for replacing a prefix  of a pathname with a `...' when
+    displaying possible completions.  This is controllable by setting the
+    `completion-prefix-display-length' variable.  Matches with a common prefix
+    longer than this value have the common prefix replaced with `...'.
+
+i.  There is a new `revert-all-at-newline' variable.  If enabled, readline will
+    undo all outstanding changes to all history lines when `accept-line' is
+    executed.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-3.2-release,
+and the previous version, bash-3.2-beta.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that caused the temporary environment passed to a command to
+    affect the shell's environment under certain circumstances.
+
+b.  Fixed a bug in the printf builtin that caused the %q format specifier to
+    ignore empty string arguments.
+
+c.  Improved multibyte character environment detection at configuration time.
+
+d.  Fixed a bug in the read builtin that left spurious escape characters in the
+    input after processing backslashes when assigning to an array variable.
+
+2.  Changes to Readline
+
+a.  Fixed a redisplay bug that occurred in multibyte-capable locales when the
+    prompt was one character longer than the screen width.
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-3.2-beta,
+and the previous version, bash-3.2-alpha.
+
+1.  Changes to Bash
+
+a.  Changed the lexical analyzer to treat locale-specific blank characters as
+    white space.
+
+b.  Fixed a bug in command printing to avoid confusion between redirections and
+    process substitution.
+
+c.  Fixed problems with cross-compiling originating from inherited environment
+    variables.
+
+d.  Added write error reporting to printf builtin.
+
+e.  Fixed a bug in the variable expansion code that could cause a core dump in
+    a multi-byte locale.
+
+f.  Fixed a bug that caused substring expansion of a null string to return
+    incorrect results.
+
+g.  BASH_COMMAND now retains its previous value while executing commands as the
+    result of a trap, as the documentation states.
+
+2.  Changes to Readline
+
+a.  Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing
+    the prompt and input line multiple times.
+
+b.  Fixed history expansion to not be confused by here-string redirection.
+
+c.  Readline no longer treats read errors by converting them to newlines, as
+    it does with EOF.  This caused partial lines to be returned from readline().
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-3.2-alpha,
 and the previous version, bash-3.1-release.
 
@@ -114,6 +2254,12 @@ ii. Fixed a bug that could cause file descriptors > 10 to not be closed even
 jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting
     inside double-quoted command substitutions.
 
+kk. Fixed a bug that could cause core dumps when `return' was executed as the
+    last element of a pipeline inside a shell function.
+
+ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in
+    the jobs list.
+
 2.  Changes to Readline
 
 a.  Fixed a problem that caused segmentation faults when using readline in