Imported from ../bash-2.05a.tar.gz.
[platform/upstream/bash.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 830dafe..0f2d4a5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
+This document details the changes between this version, bash-2.05a-release,
+and the previous version, bash-2.05a-rc1.
+
+1.  Changes to Bash
+
+a.  Fixed the `printf' builtin so that the variable name supplied as an
+    argument to a %n conversion must be a valid shell identifier.
+
+b.  Improved the random number generator slightly.
+
+c.  Changes to configuration to not put -I/usr/include into $CFLAGS, since
+    it messes up some includes.
+
+d.  Corrected description of POSIXLY_CORRECT in man page and info manual.
+
+e.  Fixed a couple of cases of incorrect function prototypes that sneaked
+    through and caused compilation problems.
+
+f.  A few changes to avoid potential core dumps in the programmable completion
+    code.
+
+g.  Fixed a configure problem that could cause a non-existent file to show
+    up in LIBOBJS.
+
+h.  Fixed a configure problem that could cause siglist.o to not be built when
+    required.
+
+i.  Changes to the strtoimax and strtoumax replacement functions to work
+    around buggy compilers.
+
+j.  Fixed a problem with the snprintf replacement function that could
+    potentially cause a core dump.
+
+2.  Changes to Readline
+
+a.  Fixed a locale-specific problem in the vi-mode `goto mark' command.
+
+b.  Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
+    include file problems.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05a-rc1,
+and the previous version, bash-2.05a-beta1.
+
+1.  Changes to Bash
+
+a.  Fixed the snprintf replacement to correctly implement the `alternate form'
+    of the %g and %G conversions.
+
+b.  Fixed snprintf to correctly handle the optional precision with the %g and
+    %G conversions.
+
+c.  Fixed the arithmetic evaluation code to correct the values of `@' and `_'
+    when translating base-64 constants (they were backwards).
+
+d.  New library functions for formatting long and long long ints.
+
+e.  Fixed a few places where negative array subscripts could have occurred,
+    mostly as the result of systems using signed characters.
+
+f.  Fixed a few places that assumed a pid_t was no wider than an int.
+
+g.  Fixed the `maildir' mail checking code to work on systems where a
+    `struct stat' doesn't include an `st_blocks' member.
+
+h.  Fixed snprintf to make `unsigned long long' conversion formats (%llu)
+    work better.
+
+i.  Fixed snprintf to not print a sign when asked to do an unsigned conversion.
+
+j.  Made configure changes to avoid compiling empty source files in lib/sh.
+
+k.  New replacement functions (if necessary) for strtoull, strtoll, strtoimax,
+    strtoumax.
+
+l.  The `printf' builtin now handles the `ll' and `j' length modifiers
+    directly, since they can affect the type and width of the argument
+    passed to printf(3).
+
+m.  Renamed a number of the bash-specific autoconf macros in aclocal.m4 to
+    have more sytematic naming, with accompanying changes to configure.in.
+
+n.  Fixed snprintf to handle long doubles and the %a/%A conversions by
+    falling back to sprintf, as long as sprintf supports them.
+
+o.  Fixed return value from vsnprintf/snprintf to be the number of characters
+    that would have been printed, even if that number exceeds the buffer
+    size passed as an argument.
+
+p.  Bash no longer attempts to define its own versions of some ctype macros
+    if they are implemented as functions in libc but not as macros in
+    <ctype.h>.
+
+q.  Changed the variable printing code (used by `set', `export', etc.) to
+    not use the $'...' syntax when in posix mode, since that caused
+    interoperability problems with other shells (most notably with autoconf).
+    When not in posix mode, it uses $'...' if the string to be printed
+    contains non-printing characters and regular single quotes otherwise.
+
+r.  snprintf now recognizes the %F conversion.
+
+s.  Fixed a bug that could cause the wrong status to be returned by a shell
+    function when the shell is compiled without job control and a null
+    command containing a command substutition was executed in the function.
+
+t.  When in posix mode, the default value for MAILCHECK is 600.
+
+u.  Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables
+    if they're not in the initial environment.
+
+v.  If SECONDS appears in the initial environment with a valid integer value,
+    bash uses that as the starting value, as if an assignment had been
+    performed.
+
+w.  Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it
+    gives them default values if they don't appear in the initial environment.
+
+x.  Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE,
+    even if it assigns them default values.
+
+y.  Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT
+    if they appear in the initial environment.
+
+z.  Bash no longer attempts to discover if it's being run by sshd in order to
+    run the startup files.  If the SSH_SOURCE_BASHRC is uncommented in
+    config-top.h it will attempt to do so as previously, but that's commented
+    out in the distributed version.
+
+aa. Fixed a typo in the code that tests for LC_NUMERIC.
+
+bb. The POSIXLY_CORRECT shell variable and its effects are now documented.
+
+cc. Some changes to several of the support shell scripts included in the
+    definitions to try to avoid race conditions and attacks.
+
+dd. Several changes to avoid warnings from `gcc -Wall'.
+
+ee. Fixed a problem with the `unset' builtin that could cause incorrect
+    results if asked to unset a variable and an array subscript in the
+    same command.
+
+ff. A few changes to the shell's temporary file creation code to avoid
+    potential file descriptor leaks and to prefer the system's idea of
+    the temporary directory to use.
+
+gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system
+    requires it but the shell has been configured --without-bash-malloc.
+
+hh. Updated the documentation to note that only interactive shells resend
+    SIGHUP to all jobs before exiting.
+
+ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than
+    rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x
+    will remove backslashes in any login name passed to getpwnam(3)).
+
+jj. Small change from Paul Eggert to make LINENO right in commands run with
+    `bash -c'.
+
+2.  New Features in Bash
+
+a.  The `printf' builtin now handles the %a and %A conversions if they're
+    implemented by printf(3).
+
+b.  The `printf' builtin now handles the %F conversion (just about like %f).
+
+c.  The `printf' builtin now handles the %n conversion like printf(3).  The
+    corresponding argument is the name of a shell variable to which the
+    value is assigned.
+
+3.  Changes to Readline
+
+a.  Fixed a few places where negative array subscripts could have occurred.
+
+b.  Fixed the vi-mode code to use a better method to determine the bounds of
+    the array used to hold the marks.
+
+c.  Fixed the defines in chardefs.h to work better when chars are signed.
+
+d.  Fixed configure.in to use the new names for bash autoconf macros.
+
+e.  Readline no longer attempts to define its own versions of some ctype
+    macros if they are implemented as functions in libc but not as macros in
+    <ctype.h>.
+
+f.  Fixed a problem where rl_backward could possibly set point to before
+    the beginning of the line.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05a-beta1,
+and the previous version, bash-2.05a-alpha1.
+
+1.  Changes to Bash
+
+a.  Fixed a bug in the evalution of arithmetic `for' statements when the
+    expanded expression is NULL.
+
+b.  Fixed an unassigned variable problem in the redirection printing code.
+
+c.  Added more prototypes to extern function declarations in the header
+    files and to static function declarations in C source files.
+
+d.  Make sure called functions have a prototype in scope, to get the arguments
+    and return values right instead of casting.  Removed extern function
+    declarations from C source files that were already included in header
+    files.
+
+e.  Changed some function arguments to use function typedefs in general.h so
+    the prototypes can be checked.  The only use of Function and VFunction
+    now is for unwind-protects.
+
+f.  More const changes to function arguments and appropriate variables.
+
+g.  Changed the mail checking support to handle `maildir'-style mail
+    directories.
+
+h.  Augmented the bash malloc to pass in the file and line number information
+    for each malloc, realloc, and free.  This should result in better error
+    messages.
+
+i.  The `old' gnu malloc is no longer a configuration option.
+
+j.  Augmented the bash malloc with optional tracing and registering allocated
+    and freed memory.
+
+k.  Prompt string decoding now saves and restores the value of $? when it
+    expands the prompt string, so command substitutions don't change $?.
+
+i.  Array indices are now `long', since shell arithmetic is performed as long,
+    and the internal arrayind_t type is used consistently.
+
+j.  Some more `unsigned char *' fixes from Paul Eggert.
+
+k.  Fixed a bad call to builtin_error that could cause core dumps when making
+    local variables.
+
+l.  `return' may no longer be used to terminate a `select' command, for
+    compatibility with ksh.
+
+m.  Changed code that reads octal numbers to do a better job of detecting
+    overflows.
+
+n.  The time formatting code no longer uses absolute indices into a buffer,
+    because the buffer size changes depending on the size of a `time_t'.
+
+o.  `umask' now prints four digits when printing in octal mode, for
+    compatibility with other shells.
+
+p.  Lots of changes to the `printf' builtin from Paul Eggert:  it handles `L'
+    formats and long doubles better, and internal functions have been
+    simpified where appropriate.
+
+q.  Some `time_t' fixes for machines were a time_t is bigger than a long.
+
+r.  Replaced some bash-specific autoconf macros with standard equivalents.
+
+s.  Improvmed the code that constructs temporary filenames to make the
+    generated names a bit more random.
+
+t.  Added code that checks for ascii before calling any of the is* ctype
+    functions.
+
+u.  Changed some places where a `char' was used as an array subscript to use
+    `unsigned char', since a `char' can be negative if it's signed by default.
+
+v.  Lots of changes to the `ulimit' builtin from Paul Eggert to add support
+    for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and
+    simplify the code.
+
+w.  `ulimit' now prints the description of a resource in any error message
+    relating to fetching or setting that resource's limits.
+
+x.  The `snprintf' replacement now computes maximum values at compile
+    time rather than using huge constants for things like long long.
+
+y.  Interactive shells now ignore `set -n'.
+
+z.  Changed the malloc bookkeeping information so that it's now 8 bytes
+    instead of 12 on most 32-bit machines (saving 4 bytes per allocation),
+    restoring 8-byte alignment.
+
+aa. The malloc error reporting code now attempts to print the file and line
+    number of the call that caused the error.
+
+bb. Changed the redirection error reporting code to catch EBADF errors and
+    report the file descriptor number rather than the file being redirected
+    to or from (e.g., things like `exec 4242<x' where 4242 is an out-of-range
+    file descriptor).
+
+cc. `printf', `echo -e', and the $'...' code now process only two hex digits
+    after a `\x' escape sequence for compatibility with other shells, and
+    the documentation was changed to note that the octal and hex escape
+    sequences result in an eight-bit value rather than strict ASCII.
+
+2.  Changes to Readline
+
+a.  The completion code now attempts to do a better job of preserving the
+    case of the word the user typed if ignoring case in completions.
+
+b.  Readline defaults to not echoing the input and lets the terminal
+    initialization code enable echoing if there is a controlling terminal.
+
+c.  The key binding code now processes only two hex digits after a `\x'
+    escape sequence, and the documentation was changed to note that the
+    octal and hex escape sequences result in an eight-bit value rather
+    than strict ASCII.
+
+3.  New Features in Bash
+
+a.  The builtin `ulimit' now takes two new non-numeric arguments:  `hard',
+    meaning the current hard limit, and `soft', meaning the current soft
+    limit, in addition to `unlimited'
+
+b.  `ulimit' now prints the option letter associated with a particular
+    resource when printing more than one limit.
+
+c.  `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is
+    one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively.
+
+4.  New Features in Readline
+
+a.  New bindable variable `history-preserve-point'.  If set, the history
+    code attempts to place the user at the same location on each history
+    line retrived with previous-history or next-history.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05a-alpha1,
+and the previous version, bash-2.05-release.
+
+1.  Changes to Bash
+
+a.  Better checks in the redirection code for write errors.
+
+b.  bashbug now uses $TMPDIR, defaulting to /tmp, and uses mktemp(1) more
+    portably.
+
+c.  System-specific configuration changes for:  Interix, OpenBSD, FreeBSD,
+    MacOS X.
+
+d.  Some more `const' cleanups through the code.
+
+e.  Fixed a typo in the /dev/fd redirection code, better checks for valid
+    numeric fds in /dev/fd.
+
+f.  Fixed many parts of the shell to handle integer overflow more gracefully
+    and to do more stringent checks for valid numbers.
+
+g.  Fixed mksignames to include config.h.
+
+h.  Fixed an uninitialized variable problem that could cause the shell to core
+    dump when replacing characters in a string.
+
+i.  New mechanism for updating the patch level when official patches are
+    released (patchlevel.h).
+
+j.  configure.in changed to no longer require external files _distribution and
+    _patchlevel.
+
+k.  Fixed non-interactive shell initialization problem when bash started as
+    `bash -i filename'.
+
+l.  Fixed printf builtin conversion error handling to be POSIX.2-conformant.
+
+m.  autoconf-2.52 is now used to build configure; autoconf-2.50 or newer is
+    required.  Some of the bash-specific macros were removed, since they are
+    now standard.
+
+n.  Startup files and files read with source or `.' are no longer required to
+    be regular files.
+
+o.  Fixed core dump in builtin printf when user-supplied precision or field
+    width is 0.
+
+p.  Fixed builtin printf to treat a negative field width as a positive field
+    width with left-justification.
+
+r.  New unwind-protect implementation from Paul Eggert.
+
+s.  Fixed an inadvertently-unclosed comment in the bash completion code that
+    caused programmable completions to not add trailing slashes or spaces to
+    completions.
+
+t.  Fixed the process substitution code to cope better when stdin is closed.
+
+v.  Fixes, mostly from Paul Eggert, for a few possible buffer overflows in
+    the shell.
+
+w.  Fixes from Paul Eggert to avoid most of the type casts in the shell code,
+    and use more appropriate types for a number of variables.
+
+x.  Command substition no longer inherits the DEBUG trap.
+
+y.  Some fixes to the process substition code on machines without /dev/fd so
+    that named pipes are not removed inappropriately.
+
+z.  The loadable `getconf' builtin is now much more complete, and will become
+    part of the shell in the future.
+
+aa. The select command no longer terminates on a `return', so it can be used
+    to return from an enclosing function (as ksh does it).
+
+bb. Fixed the extended pattern matching code to behave better when presented
+    with incorrectly-formed patterns.
+
+cc. Some changes were made with the intent of making cross-compilation easier.
+
+dd. The network code (/dev/tcp and /dev/udp redirections) uses getaddrinfo(3)
+    if it's available, which adds support for IPv6.
+
+ee. Subshells of login shells no longer source ~/.bash_logout when they exit.
+
+ff. Fixes so that subshells don't exit inappropriately if the -e option has
+    been set.
+
+gg. Restricted shells no longer allow functions to be exported.
+
+hh. Changes to the pattern matching code so extended pattern matching works
+    on systems with deficient shared library implementations, like MacOS X.
+
+ii. Better error messages when a script with a leading `#!interp' fails
+    to execute because of problems with `interp'.
+
+jj. Fixed `compgen' to handle the `-o default' option better.
+
+kk. Fixed the job control code to force an asynchronous process's standard
+    input to /dev/null only if job control is not active.
+
+ll. Fixed a possible infinite recursion problem when `fc ""=abc' (a null
+    pattern) is used to re-execute a previous command.
+
+mm. Fixed `declare [-a] var=value' to assign VALUE to element 0 if VAR is an
+    array variable.  Similarly for `declare [-a] var[N]=value'.  This is like
+    ksh93.
+
+nn. Fixed a bug that caused `read -a aname' to work even if ANAME had been
+    declared readonly.
+
+oo. Fixed a possible integer overflow problem when constructing names for
+    temporary files.
+
+2.  New Features in Bash
+
+a.  Added support for DESTDIR installation root prefix, so you can do a
+    `make install DESTDIR=bash-root' and do easier binary packaging.
+
+b.  Added support for builtin printf "'" flag character as per latest POSIX
+    drafts.
+
+c.  Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
+    ISO C99).
+
+d.  New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
+    (bash doesn't use very much of what it returns).
+
+e.  `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
+    but ignored.
+
+f.  New read-only `shopt' option:  login_shell.  Set to non-zero value if the
+    shell is a login shell.
+
+g.  New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
+
+h.  New `-A group/-g' option to complete and compgen; does group name
+    completion.
+
+i.  New `-t' option to `hash' to list hash values for each filename argument.
+
+j.  New [-+]O invocation option to set and unset `shopt' options at startup.
+
+k.  configure's `--with-installed-readline' option now takes an optional
+    `=PATH' suffix to set the root of the tree where readline is installed
+    to PATH.
+
+l.  The ksh-like `ERR' trap has been added.  The `ERR' trap will be run
+    whenever the shell would have exited if the -e option were enabled.
+    It is not inherited by shell functions.
+
+m.  `readonly', `export', and `declare' now print variables which have been
+    given attributes but not set by assigning a value as just a command and
+    a variable name (like `export foo') when listing, as the latest POSIX
+    drafts require.
+
+n.  `bashbug' now requires that the subject be changed from the default.
+
+o.  configure has a new `--enable-largefile' option, like other GNU utilities.
+
+p.  `for' loops now allow empty word lists after `in', like the latest POSIX
+    drafts require.
+
+3.  Changes to Readline
+
+a.  More `const' and type casting fixes.
+
+b.  Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
+    overflow problems.
+
+c.  The completion code no longer appends a `/' or ` ' to a match when
+    completing a symbolic link that resolves to a directory name, unless
+    the match does not add anything to the word being completed.  This
+    means that a tab will complete the word up to the full name, but not
+    add anything, and a subsequent tab will add a slash.
+
+d.  Fixed a trivial typo that made the vi-mode `dT' command not work.
+
+e.  Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
+
+f.  Fixed the tty code so that ^V works more than once.
+
+g.  Changed the use of __P((...)) for function prototypes to PARAMS((...))
+    because the use of __P in typedefs conflicted g++ and glibc.
+
+4.  New Features in Readline
+
+a.  Added extern declaration for rl_get_termcap to readline.h, making it a
+    public function (it was always there, just not in readline.h).
+
+b.  New #defines in readline.h:  RL_READLINE_VERSION, currently 0x0402,
+    RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
+
+c.  New readline variable:  rl_readline_version, mirrors RL_READLINE_VERSION.
+
+d.  New bindable boolean readline variable:  match-hidden-files.  Controls
+    completion of files beginning with a `.' (on Unix).  Enabled by default.
+
+e.  The history expansion code now allows any character to terminate a
+    `:first-' modifier, like csh.
+
+f.  The incremental search code remembers the last search string and uses
+    it if ^R^R is typed without a search string.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05-release,
+and the previous version, bash-2.05-beta2.
+
+1.  Changes to Bash
+
+a.  Make sure we note that the first line of a multi-line command was not
+    saved in the history if the tests for HISTCONTROL succeed, but the
+    HISTIGNORE check fails.
+
+b.  Fixed a bug in the pattern matching code that caused `[' to be treated
+    as a special character inside a `[...]' bracket expression.
+
+c.  Fixed a bug in the pattern matching code that caused `]' to terminate
+    a bracket expression even if it was the first character after the `['
+    (or a leading `!' or `^').
+
+d.  Made a small change to report a more user-friendly error message if
+    execve(2) fails because of an error with the interpreter in a script
+    with a leading `#! interpreter'.
+
+e.  If the OS does not support an exec(2) magic number of `#!', make sure we
+    have a non-null interpreter name before attempting to execute it.
+
+f.  Fixed a bug that caused the shell process to end up in a different
+    process group than the controlling terminal if a job-control shell was
+    run with `exec' in the startup files.
+
+g.  When started in POSIX mode, either by `bash --posix', `bash -o posix', or
+    `sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set.
+
+h.  Fixed a problem that caused the `\W' prompt string escape sequence to
+    expand to nothing when $PWD was `//'.
+
+i.  The `bashbug' shell script no longer uses $(...) command substitution.
+
+j.  When `set' is invoked without options in POSIX mode, it no longer prints
+    the names and definitions of shell functions.
+
+2.  Changes to Readline
+
+a.  rl_set_paren_blink_timeout() is now documented.
+
+b.  Corrected history.3 man page: `$' is not in the default value of
+    history_word_delimiters.
+
+c.  If a hook function assigned to rl_event_hook sets rl_done to a non-zero
+    value, rl_read_key() now immediately returns '\n' (which is assumed to
+    be bound to accept-line).
+
+3.  New Features in Bash
+
+a.  The `>&word' redirection now works in POSIX mode as it does by default,
+    since POSIX.2 leaves it unspecified.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05-beta2,
+and the previous version, bash-2.05-beta1.
+
+1.  Changes to Bash
+
+a.  Fixed a bug in the arithmetic evaluation code so that a^=b is supported.
+
+b.  Fixed startup so posixly_correct is retained across subshells begun to
+    execute scripts without a leading `#!'.
+
+c.  Fixed a bug that caused $(< file) to not work in a (...) subshell.
+
+d.  Added config support for Linux running on the IBM S390.
+
+e.  Fixed a bug that caused bash to get its input pointer out of sync when
+    reading commands through a pipe and running a command with standard
+    input redirected from a file.
+
+f.  Made a change so that command completion now makes about half as many
+    stat(2) calls when searching the $PATH.
+
+g.  Fixed a bug that caused variable assignments preceding `return' to not
+    be propagated to the shell environment in POSIX mode.
+
+h.  Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed
+    on `word'.
+
+i.  In POSIX mode, `break' and `continue' do not complain and return success
+    if called when the shell is not executing a loop.
+
+j.  Fixed `bash -o posix' to work the same as `bash --posix'.
+
+k.  Fixed a bug where variable assignments preceding `eval' or `source/.'
+    would not show up in the environment exported to subshells run by the
+    commands.
+
+l.  In POSIX mode, shells started to execute command substitutions inherit
+    the value of the `-e' option from their parent shell.
+
+m.  In POSIX mode, aliases are expanded even in non-interactive shells.
+
+n.  Changed some of the job control messages to display the text required by
+    POSIX.2 when the shell is in POSIX mode.
+
+o.  Fixed a bug in `test' that caused it to occasionally return incorrect
+    results when non-numeric arguments were supplied to `-t'.
+
+2.  Changes to Readline
+
+a.  Some changes were made to avoid gcc warnings with -Wall.
+
+b.  rl_get_keymap_by_name now finds keymaps case-insensitively, so
+    `set keymap EMACS' works.
+
+c.  The history file writing and truncation functions now return a useful
+    status on error.
+
+d.  Fixed a bug that could cause applications to dereference a NULL pointer
+    if a NULL second argument was passed to history_expand().
+
+3.  New Features in Bash
+
+a.  doc/readline.3 has been moved to the readline distribution.
+
+4.  New Features in Readline
+
+a.  New function, rl_get_screen_size (int *rows, int *columns), returns
+    readline's idea of the screen dimensions.
+
+b.  The timeout in rl_gather_tyi (readline keyboard input polling function)
+    is now settable via a function (rl_set_keyboard_input_timeout()).
+
+c.  Renamed the max_input_history variable to history_max_entries; the old
+    variable is maintained for backwards compatibility.
+
+d.  The list of characters that separate words for the history tokenizer is
+    now settable with a variable:  history_word_delimiters.  The default
+    value is as before.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05-beta1,
+and the previous version, bash-2.05-alpha1.
+
+1.  Changes to Bash
+
+a.  Changes to allow shared library and object building on the GNU Hurd.
+
+b.  Fixes to the way exported functions are placed into the environment and
+    cached.
+
+c.  The globbing library once again respects locales when processing ranges
+    in bracket expressions while doing pattern matching.
+
+d.  System-specific configuration changes for:  Tru 64, Interix
+
+e.  Bashbug now uses /usr/bin/editor as one of the editing alternatives, and
+    will use mktemp(1) or tempfile(1), if present, for temporary file creation.
+
+f.  Bash no longer performs a binary file check on a script argument that's
+    really a tty (like /dev/fd/0 or /dev/stdin).
+
+g.  Fixed a bug in the execution of shell scripts that caused the effects of
+    $BASH_ENV to be undone in some cases.
+
+h.  Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly.
+
+i.  Several changes to the job control code to avoid some signal state
+    manipulation.
+
+j.  The Bash malloc no longer blocks signals as often, which should make it
+    faster.
+
+k.  Fixed a parsing bug that did not allow backslash to escape a single quote
+    inside a $'...' construct.
+
+l.  Fixed a bug that caused things like ${var:=$'value'} to be parsed
+    incorrectly.  This showed up in newer versions of autoconf.
+
+m.  Fixed a bug in the bash-specific readline initialization that caused
+    key bindings to bash-specific function names appearing in .inputrc to
+    not be honored.
+
+n.  Bash now sets the file descriptor it uses to save the file descriptor
+    opened on a shell script to close on exec.
+
+o.  Fixed a bug in the prompt string decoding that caused it to misbehave
+    when presented an octal sequence of fewer than three characters.
+
+p.  Fixed the `test' builtin to return an error if `[' is supplied a single
+    argument that is not `]'.
+
+q.  Fixed a bug that caused subshells started to run executable shell scripts
+    without a leading `#!' to incorrectly inherit an argument list preceding
+    a shell builtin (like such a script called from a script sourced with `.',
+    where there were variable assignments preceding the `.' command)
+
+r.  Fixed a bug that caused changes to variables supplied in an assignment
+    statement preceding a shell builtin to not be honored (like a script
+    run with `.').
+
+s.  HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values
+    when the shell is started.
+
+t.  Fixed a bug that caused SIGINT to kill shell scripts after the script
+    called `wait'.
+
+u.  The `fc' builtin now tries to create its temporary files in the directory
+    named by $TMPDIR.
+
+v.  Bash no longer calls any Readline functions or uses any Readline variables
+    not declared in readline.h.
+
+w.  Fixed a bug that caused some substitutions involving $@ to not be split
+    correctly, especially expansions of the form ${paramterOPword}.
+
+x.  SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it
+    appears in the initial environment.
+
+y.  Fixed a couple of problems with shell scripts without a leading `#!'
+    being executed out of shell functions that could cause core dumps if
+    such a script attempted to execute `return'.
+
+z.  Fixed a problem with the `-nt' and `-ot' binary operators for the
+    `test/[' builtin and the `[[' conditional command that caused wrong
+    return values if one of the file arguments did not exist.
+
+aa. Fixed a bug that caused non-interactive shells which had previously
+    executed `shopt -s expand_aliases' to fail to expand aliases in a
+    command like `(command) &'.
+2.  Changes to Readline
+
+a.  Changes to make most (but not yet all -- there is still crlf()) of the
+    exported readline functions declared in readline.h have an rl_ prefix.
+
+b.  More `const' changes in function arguments, mostly for completion
+    functions.
+
+c.  Fixed a bug in rl_forward that could cause the point to be set to before
+    the beginning of the line in vi mode.
+
+d.  Fixed a bug in the callback read-char interface to make it work when a
+    readline function pushes some input onto the input stream with
+    rl_execute_next (like the incremental search functions).
+
+e.  Fixed a file descriptor leak in the history file manipulation code that
+    was tripped when attempting to truncate a non-regular file (like
+    /dev/null).
+
+f.  Some existing variables are now documented and part of the public
+    interface (declared in readline.h):  rl_explict_arg, rl_numeric_arg,
+    rl_editing_mode, rl_last_func.
+
+g.  Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and
+    crlf to rl_crlf, so there are no public functions declared in readline.h
+    without an `rl_' prefix.  The old functions still exist for backwards
+    compatibility.
+
+3.  New Features in Bash
+
+a.  A new loadable builtin, realpath, which canonicalizes and expands symlinks
+    in pathname arguments.
+
+b.  When `set' is called without options, it prints function defintions in a
+    way that allows them to be reused as input.  This affects `declare' and
+    `declare -p' as well.
+
+4.  New Features in Readline
+
+a.  New application-callable function rl_set_prompt(const char *prompt):
+    expands its prompt string argument and sets rl_prompt to the result.
+
+b.  New application-callable function rl_set_screen_size(int rows, int cols):
+    public method for applications to set readline's idea of the screen
+    dimensions.
+
+c.  The history example program (examples/histexamp.c) is now built as one
+    of the examples.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.05-alpha1,
+and the previous version, bash-2.04-release.
+
+1.  Changes to Bash
+
+a.  A fix was made to allow newlines in compond array assignments.
+
+b.  configure now checks for real-time signals with unusable values.
+
+c.  Interactive shells no longer exit if a substitution fails because of an
+    unset variable within a sourced file.
+
+d.  Fixed a problem with incorrect matching of extended glob patterns when
+    doing pattern substitution.
+
+e.  `{' is now quoted by the completion code when it appears in a filename.
+
+f.  Fixed an error in pattern matching that caused the matcher to not
+    correctly skip the rest of a bracket expression after a character
+    matched.
+
+g.  Fixed a bug in the IFS word splitting code to make a non-whitespace IFS
+    character preceded by IFS whitespace part of the current delimiter rather
+    than generating a separate field.
+
+h.  The {!prefix@} expansion now generates separate words, analogous to $@,
+    when double-quoted.
+
+i.  Command substitution now ignores NUL bytes in the command output, and the
+    parser ignores them on input.
+
+j.  A fix was made to the job control code to prevent hanging processes when
+    the shell thinks background processes are running but the kernel returns
+    -1/ECHILD from waitpid().
+
+k.  `pwd' now prints an error message if the write fails when displaying the
+    current directory.
+
+l.  When in POSIX mode, the shell prints trap dispostions without a leading
+    `SIG' in the signal specification.
+
+m.  Fixed a parser bug that caused the current command's line count to be
+    messed up by a compound array assignment.
+
+n.  Fixed a bug in the unwind-protect code that caused bad behavior on machines
+    where ints and pointers are not the same size.
+
+o.  System-specific configure changes for:  MacOS X.
+
+p.  Changes for Cygwin to translate \r\n and \r to \n and to set file
+    descriptors used for reading input to text mode in various places.
+
+q.  Fixed a bug that caused `!' to occasionally not be honored when in
+    a (...) subshell.
+
+r.  Bash no longer assumes that getcwd() will return any useful error message
+    in the buffer passed as an argument if the call fails.
+
+s.  The `source', `.', and `fc' builtins no longer check whether a file is
+    binary before reading commands from it.
+
+t.  Subshells no longer turn off job control when they exit, since that
+    sometimes resulted in the terminal being reset to the wrong process
+    group.
+
+u.  The history code no longer tries to save the second and subsequent lines
+    of a multi-line command if the first line was not saved.
+
+v.  The history saving code now does a better job of saving blank lines in a
+    multi-line command.
+
+w.  Removed a `feature' that made `ulimit' silently translate `unlimited' to
+    the current hard limit, which obscured some kernel error returns.
+
+x.  Fixed the grammar so that `}' is recognized as a reserved word after
+    another reserved word, rather than requiring a `;' or newline.  This
+    means that constructs like
+
+       { { echo a b c ; } }
+
+    work as expected.
+
+y.  Conditional commands ([[...]]) now perform tilde expansion on their
+    arguments.
+
+z.  Noted in the documentation that `set -a' will cause functions to be
+    exported if they are defined after `set -a' is executed.
+
+aa. When an interactive login shell starts, if $PWD and $HOME refer to the
+    same directory but are not the same string, $PWD is set to $HOME.
+
+bb. Fixed `printf' to handle invalid floating point numbers better.
+
+cc. Temporary files are now created with random filenames, to improve security.
+
+dd. The readline initialization code now binds the custom bash functions and
+    key bindings after the readline defaults are set up.
+
+ee. Fixed the `source' builtin to no longer overwrite a shell function's
+    argument list, even if the sourced file changes the positional parameters.
+
+ff. A bug fix was made in the expansion of `$*' in contexts where it should
+    not be split, like assignment statements.
+
+gg. Fixed a bug in the parameter substring expansion to handle conditional
+    arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression
+    off at the wrong `:'.
+
+hh. The `<>' redirection is no longer subject to the current setting of
+    `noclobber', as POSIX.2 specifies.
+
+ii. Fixed a bug in the conditional command parsing code that caused expressions
+    in parentheses to occasionally be parsed incorrectly.
+
+jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or
+    {...} to follow the )) without an intervening list terminator.
+
+kk. `printf' now treats `\E' the same as `\e' when performing backslash escape
+    expansion for the `%b' format specifier.
+
+ll. When in POSIX mode, the shell no longer searches the current directory for
+    a file to be sourced with `.' or `source' if `.' is not in $PATH.
+
+mm. Interactive comments are no longer turned off when POSIX mode is disabled.
+
+nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's
+    environment when it starts up.
+
+oo. Fixed a bug in the `command' builtin so the effect of a command like
+    `command exec 4<file' is as if the `command' had been omitted.
+
+pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array
+    variable.
+
+qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not
+    an array variable.
+
+rr. The shell's idea of an absolute pathname now takes into account a
+    possible drive specification on Cygwin and other Windows systems.
+
+ss. Fixed a bug which caused incorrect parsing of some multi-character
+    constructs if they were split across input lines with backslash-newline
+    line continuation.
+
+tt. Fixed a bug that caused restricted shell mode to be set inappropriately
+    when trying to execute a shell script without a leading `#!'.
+
+uu. Shell function definitions no longer require that the body be a group
+    command ( {...} ), as POSIX.2 requires.
+
+vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally
+    and should require many fewer calls to getcwd().
+
+ww. Fixed a bug that caused a pipeline's process group to be set incorrectly
+    if one of the pipeline elements contained a command substitution.
+
+xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE.
+
+yy. The output of `set' is now quoted using $'...' so invisible characters are
+    displayed as escape sequences.
+
+zz. Fixed the help text for `unset', since PATH and IFS may both be unset.
+
+aaa. The shell no longer puts directory names into the command hash table.
+
+bbb. Fixed a bug in `read' that caused it to occasionally free memory twice if
+     it was interrupted after reading a large amount of data.
+
+ccc. Assignment statements that attempt to assign values to readonly variables
+     now cause the command to return an error status.
+
+ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was
+     interrupted.
+
+eee. GROUPS and FUNCNAME now return an error status when assignment is
+     attempted, but may be unset (in which case they lose their special
+     properties).  In all respects except unsetting, they are readonly.
+
+fff. The string-to-integer conversion code now ignores trailing whitespace in
+     the string, even if strtol(3) does not.
+
+ggg. The tcsh magic-space function now does a better job of inserting the
+     space close to where the point was before the history expansion, rather
+     than just appending it.
+
+hhh. Fixed a bug which caused a file sourced from an interactive shell to
+     fill up the jobs table if it ran lots of jobs.
+
+iii. Fixed a bug in the parameter pattern substitution code to avoid infinite
+     recursion on zero-length matches.
+
+2.  Changes to Readline
+
+a.  When setting the terminal attributes on systems using `struct termio',
+    readline waits for output to drain before changing the attributes.
+
+b.  A fix was made to the history word tokenization code to avoid attempts to
+    dereference a null pointer.
+
+c.  Readline now defaults rl_terminal_name to $TERM if the calling application
+    has left it unset, and tries to initialize with the resultant value.
+
+d.  Instead of calling (*rl_getc_function)() directly to get input in certain
+    places, readline now calls rl_read_key() consistently.
+
+e.  Fixed a bug in the completion code that allowed a backslash to quote a
+    single quote inside a single-quoted string.
+
+f.  rl_prompt is no longer assigned directly from the argument to readline(),
+    but uses memory allocated by readline.  This allows constant strings to
+    be passed to readline without problems arising when the prompt processing
+    code wants to modify the string.
+
+g.  Fixed a bug that caused non-interactive history searches to return the
+    wrong line when performing multiple searches backward for the same string.
+
+h.  Many variables, function arguments, and function return values are now
+    declared `const' where appropriate, to improve behavior when linking with
+    C++ code.
+
+i.  The control character detection code now works better on systems where
+    `char' is unsigned by default.
+
+j.  The vi-mode numeric argument is now capped at 999999, just like emacs mode.
+
+k.  The Function, CPFunction, CPPFunction, and VFunction typedefs have been
+    replaced with a set of specific prototyped typedefs, though they are
+    still in the readline header files for backwards compatibility.
+
+m.  Nearly all of the (undocumented) internal global variables in the library
+    now have an _rl_ prefix -- there were a number that did not, like
+    screenheight, screenwidth, alphabetic, etc.
+
+n.  The ding() convenience function has been renamed to rl_ding(), though the
+    old function is still defined for backwards compatibility.
+
+o.  The completion convenience functions filename_completion_function,
+    username_completion_function, and completion_matches now have an rl_
+    prefix, though the old names are still defined for backwards compatibility.
+
+p.  The functions shared by readline and bash (linkage is satisfied from bash
+    when compiling with bash, and internally otherwise) now have an sh_ prefix.
+
+q.  Changed the shared library creation procedure on Linux and BSD/OS 4.x so
+    that the `soname' contains only the major version number rather than the
+    major and minor numbers.
+
+r.  Fixed a redisplay bug that occurred when the prompt spanned more than one
+    physical line and contained invisible characters.
+
+3.  New Features in Bash
+
+a.  Added a new `--init-file' invocation argument as a synonym for `--rcfile',
+    per the new GNU coding standards.
+
+b.  The /dev/tcp and /dev/udp redirections now accept service names as well as
+    port numbers.
+
+c.  `complete' and `compgen' now take a `-o value' option, which controls some
+    of the aspects of that compspec.  Valid values are:
+
+       default - perform bash default completion if programmable
+                 completion produces no matches
+       dirnames - perform directory name completion if programmable
+                  completion produces no matches
+       filenames - tell readline that the compspec produces filenames,
+                   so it can do things like append slashes to
+                   directory names and suppress trailing spaces
+
+4.  New Features in Readline
+
+a.  The blink timeout for paren matching is now settable by applications.
+
+b.  _rl_executing_macro has been renamed to rl_executing_macro, which means
+    it's now part of the public interface.
+
+c.  Readline has a new variable, rl_readline_state, which is a bitmap that
+    encapsulates the current state of the library; intended for use by
+    callbacks and hook functions.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-release,
+and the previous version, bash-2.04-beta5.
+
+1.  Changes to Bash
+
+a.  Better compile-time and configure-time checks for the necessity of
+    inet_aton().
+
+b.  A bug was fixed in the expansion of "${@:-}" when there are positional
+    parameters.
+
+c.  A typo was fixed in the output of `complete'.
+
+d.  The matches generated for a word by the `-W' argument to complete and
+    compgen are now matched against the word being completed, and only
+    matches are returned as the result.
+
+e.  Some fixes were made for systems which do not restart read(2) when a
+    signal caught by bash is received.
+
+f.  A bug was fixed which caused the umask to be set to 0 when an invalid
+    symbolic mode mask was parsed.
+
+g.  Fixed a bug that could cause a core dump if a SIGCHLD was received while
+    performing an assignment statement using command substitution.
+
+h.  Changed the word splitting function for programmable completion so cases
+    in which the cursor is between words are handled a bit better.
+
+2.  Changes to Readline
+
+a.  rl_funmap_names() is now documented.
+
+3.  New Features in Bash
+
+a.  The LC_NUMERIC variable is now treated specially, and used to set the
+    LC_NUMERIC locale category for number formatting, e.g., when `printf'
+    displays floating-point numbers.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-beta5,
+and the previous version, bash-2.04-beta4.
+
+1.  Changes to Bash
+
+a.  A couple of changes were made to the Makefiles for easier building on
+    non-Unix systems.
+
+b.  Fixed a bug where the current prompt would be set to $PS2 at startup.
+
+c.  The shell script that tests an already-installed version was changed to
+    remove the directory it created its test programs in at exit.
+
+d.  Several changes were made to the code that tokenizes an input line for
+    the programmable completion code.  Shell metacharacters will now appear
+    as individual words in the word list passed to the completion functions.
+    Some of the example completion shell functions were changed to understand
+    redirection operators.
+
+e.  A bug was fixed that, under obscure circumstances, could confuse the
+    parser when a shell function was run by the programmable completion code.
+
+f.  A bug was fixed in the ulimit builtin for systems not using getrlimit().
+
+g.  The execution code now propagates the correct exit status back to the rest
+    of the code if the return value of a subshell command was being inverted.
+    Some new test cases for inverting return values with the `!' reserved
+    word have been added.
+
+h.  Negative exponents in the arithmetic evaluation of v**e now return an
+    evaluation error.
+
+i.  A bug that caused bash to check the wrong process in a pipeline for
+    abnormal termination (and consequently resetting the terminal attributes)
+    was fixed.
+
+j.  Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was
+    executed.
+
+2.  Changes to Readline
+
+1.  Fixed a bug in a C preprocessor define that caused the keypad control
+    functions to be compiled out for all platforms except DJGPP.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-beta4,
+and the previous version, bash-2.04-beta3.
+
+1.  Changes to Bash
+
+a.  A couple of changes were made to the redirection to attempt to avoid
+    race conditions and malicious file replacement.
+
+2.  A change was made to the string evaluation code (used for command 
+    substitution, `eval', and the `.' builtin) to fix an obscure core
+    dump on alpha machines.
+
+3.  A bug that caused $LINENO to be wrong when executing arithmetic for
+    commands was fixed.
+
+4.  A couple of memory leaks in the programmable completion code were fixed.
+
+5.  A bug that could cause a core dump by freeing memory twice during a call
+    to `eval' if `set -u' had been enabled and an undefined variable was
+    referenced was fixed.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-beta3,
+and the previous version, bash-2.04-beta2.
+
+1.  Changes to Bash
+
+a.  Bash should run the appropriate startup files when invoked by ssh2.
+
+b.  Fixed a bug in the parsing of conditional commands that could cause a
+    core dump.
+
+c.  Fixed a bug in parsing job specifications that occasionally caused
+    core dumps when an out-of-range job was referenced.
+
+d.  Fixed the `type' and `command' builtins to do better reporting of
+    commands that are not found in $PATH or the hash table.
+
+e.  Fixed a POSIX.2 compliance problem in the command builtin -- commands
+    are supposed to be reported as full pathnames.
+
+f.  The `echo' builtin now returns failure if a write error occurs.
+
+g.  Fixed a bug which caused the locale to not be reset correctly when
+    LC_ALL was unset.
+
+h.  Changed description of `getopts' in man page and reference manual to make
+    it clear that option characters may be characters other than letters.
+
+i.  If the shell exits while in a function, make sure that any trap on EXIT
+    doesn't think the function is still executing.
+
+j.  Bashbug now tries harder to find a usable editor if $EDITOR is not set,
+    rather than simply defaulting to `emacs'.
+
+k.  Changes to the scripts that guess and canonicalize the system type, from
+    the latest `automake' distribution via Debian.
+
+l.  When using named pipes for process substitution, make sure the file
+    descriptors opened for reading are set to non-blocking mode.
+
+m.  Fixed a bug that caused termination of pipelines that are killed by a
+    signal to not be reported in some cases.
+
+n.  When not in literal-history mode, shell comment lines are not added to
+    the history list.
+
+o.  When running in POSIX.2 mode, bash no longer performs word splitting on
+    the expanded value of the word supplied as the filename argument to
+    redirection operators.
+
+p.  The prompt string decoding code now backslash-quotes only characters that
+    are special within double quotes when expanding the \w and \W escape
+    sequences.
+
+q.  Fixed a bug in the prompt decoding code that could cause a non-interactive
+    shell to seg fault if `\u' was used in PS4 and the shell was in xtrace
+    mode.
+
+r.  Fixed a bug that caused function definitions to be printed with any
+    redirections that should be attached to the entire function before the
+    closing brace.
+
+s.  Changed the tilde expansion code for Cygwin systems to avoid creating
+    pathnames beginning with `//' if $HOME == `/'.
+
+t.  Fixed a couple of autoconf tests to avoid creating files with fixed names
+    in /tmp.
+
+u.  The `trap' and `kill' builtins now know the names of the POSIX.1b real-
+    time signals on systems which support them.
+
+2.  Changes to Readline
+
+a.  Fixed a problem with the single-quote quoting function that could cause
+    buffer overflows.
+
+b.  Fixed a bug that caused incorrect `stat characters' to be printed if
+    the files being completed were in the root directory and visible-stats
+    was enabled.
+
+3.  New Features in Bash
+
+a.  There is a new `rbash.1' manual page, from the Debian release.
+
+b.  The `--enable-usg-echo-default' option to `configure' has been renamed to
+    `--enable-xpg-echo-default'.  The old option is still there for backwards
+    compatibility.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-beta2,
+and the previous version, bash-2.04-beta1.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that could cause pipes to be closed inappropriately in
+    some obscure cases.
+
+b.  Fixed a bug that caused creation of the exported environment to clobber
+    the current command string if there were any exported shell functions.
+
+c.  Some changes were made to reduce bash's memory usage.
+
+d.  Fixed a problem with programmable completion and filenames to be
+    completed containing quote characters.
+
+e.  Changed the code the removes named pipes created for the <(...) and >(...)
+    expansions to defer removal until after any current shell function has
+    finished executing.
+
+f.  Fixed a bug in `select' which caused it to not handle the `continue'
+    builtin correctly.
+
+g.  Autoconf tests added for cygwin32 and mingw32.
+
+2.  New Features in Bash
+
+a.  The `--with-bash-malloc' configure option replaces `--with-gnu-malloc'
+    (which is still there for backwards compatibility).
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-beta1,
+and the previous version, bash-2.04-alpha1.
+
+1.  Changes to Bash
+
+a.  Fixed a bug in the programmable completion code that occurred when
+    trying to complete command lines containing a `;' or `@'.
+
+b.  The file descriptor from which the shell is reading a script is now
+    moved to a file descriptor above the user-addressible range.
+
+c.  Changes to `printf' so that it can handle integers beginning with 0
+    or 0x as octal and hex, respectively.
+
+d.  Fixes to the programmable completion code so it handles nonsense like
+    `compgen -C xyz' gracefully.
+
+e.  The shell no longer modifies the signal handler for SIGPROF, allowing
+    profiling again on certain systems.
+
+f.  The shell checks for a new window size, if the user has requested it,
+    after a process exits due to a signal.
+
+g.  Fixed a bug with variables with null values in a program's temporary
+    environment and the bash getenv() replacement.
+
+h.  `declare' and the other builtins that take variable assignments as
+    arguments now honor `set -a' and mark modified variables for export.
+
+i.  Some changes were made for --dump-po-strings mode when writing strings
+    with embedded newlines.
+
+j.  The code that caches export strings from the initial environment now
+    duplicates the string rather than just pointing into the environment.
+
+k.  The filename completion quoting code now uses single quotes by default
+    if the filename being completed contains newlines, since \<newline>
+    has a special meaning to the parser.
+
+l.  Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and
+    u_int32_t, respectively to avoid conflicts on certain Unix versions.
+
+m.  Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x.
+
+n.  Fixed a problem with hostname-to-ip-address translation in the
+    /dev/(tcp|udp)/hostname/port redirection code.
+
+o.  The texinfo manual has been reorganized slightly.
+
+p.  Filename generation (globbing) range comparisons in bracket expressions
+    no longer use strcoll(3) even if it is available, since it has unwanted
+    effects in certain locales.
+
+q.  Fixed a cosmetic problem in the source that caused the shell to not
+    compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was.
+
+r.  Fixed a bug in the here-document code tripped when the file descriptor
+    opened to the file containing the text of the here document was the
+    same as a redirector specified by the user.
+
+s.  Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline'
+    in `time ! pipeline'.
+
+t.  Fixed a bug with the `wait' builtin which manifested itself when an
+    interrupt was received while the shell was waiting for asynchronous
+    processes in a shell script.
+
+u.  Fixed the DEBUG trap code so that it has the correct value of $?.
+
+v.  Fixed a bug in the parameter pattern substitution code that could cause
+    the shell to attempt to free unallocated memory if the pattern started
+    with `/' and an expansion error occurs.
+
+w.  Fixed a bug in the positional parameter substring code that could
+    cause the shell to loop freeing freed memory.
+
+x.  Fixed a bug in the positional parameter pattern substitution code so
+    that it correctly handles null replacement strings with a pattern
+    string prefixed with `%' or `#'.
+
+y.  The shell no longer attempts to import functions from the environment if
+    started with `-n'.
+
+z.  Fixed a bug that caused `return' in a command substitution executed in
+    a shell function to return from the function in a subshell and continue
+    execution.
+
+aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell
+    is restricted.
+
+bb. The wait* job control functions now behave better if called when there
+    are no unwaited-for children.
+
+cc. Command substitution no longer unconditionally disables job control in
+    the subshell started to run the command.
+
+dd. A bug was fixed that occasionally caused traps to mess up the parser
+    state.
+
+ee. `bashbug' now honors user headers in the mail message it sends.
+
+ff. A bug was fixed that caused the `:p' history modifier to not print the
+    history expansion if the `histverify' option was set.
+
+2.  Changes to Readline
+
+a.  Fixed a bug in the redisplay code for lines with more than 256 line
+    breaks.
+
+b.  A bug was fixed which caused invisible character markers to not be
+    stripped from the prompt string if the terminal was in no-echo mode.
+
+c.  Readline no longer tries to get the variables it needs for redisplay
+    from the termcap entry if the calling application has specified its
+    own redisplay function.  Readline treats the terminal as `dumb' in
+    this case.
+
+d.  Fixes to the SIGWINCH code so that a multiple-line prompt with escape
+    sequences is redrawn correctly.
+
+3.  New Features in Bash
+
+a.  `bashbug' now accepts `--help' and `--version' options.
+
+b.  There is a new `xpg_echo' option to `shopt' that controls the behavior
+    of echo with respect to backslash-escaped characters at runtime.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-alpha1,
+and the previous version, bash-2.04-devel.
+
+1.  Changes to Bash
+
+a.  Fixed a bug that could cause core dumps when performing substring
+    expansion.
+
+b.  Shared object configuration changes for:  Solaris, OSF/1
+
+c.  The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities
+    for pathname expansion now understands GLOBIGNORE.
+
+d.  The code that implements `eval' was changed to save the value of the
+    current prompt, so an eval in a shell function called by the programmable
+    completion code will not change the prompt to $PS2.
+
+e.  Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to
+    config-top.h.  If this is defined, all login shells will read the
+    startup files, not just interactive and non-interactive started with
+    the `--login' option.
+
+f.  Fixed a bug that caused the expansion code to occasionally dump core if
+    IFS contained characters > 128.
+
+g.  Fixed a problem with the grammar so that a newline is not required
+    after the `))' in the new-style arithmetic for statement; a semicolon
+    may be used as expected.
+
+h.  Variable indirection may now reference the shell's special variables.
+
+i.  The $'...' and $"..." constructs are now added to the history correctly
+    if they contain newlines and command-oriented history is enabled.
+
+j.  It is now an error to try to assign a value to a function-local copy
+    of a readonly shell variable (declared with the `local' builtin).
+
+2.  Changes to Readline
+
+a.  The history file code now uses O_BINARY mode when reading and writing
+    the history file on cygwin32.
+
+3.  New Features in Bash
+
+a.  A new programmable completion facility, with two new builtin commands:
+    complete and compgen.
+
+b.  configure has a new option, `--enable-progcomp', to compile in the
+    programmable completion features (enabled by default).
+
+c.  `shopt' has a new option, `progcomp', to enable and disable programmable
+    completion at runtime.
+
+d.  Unsetting HOSTFILE now clears the list of hostnames used for completion.
+
+4.  New Features in Readline
+
+a.  A new variable, rl_gnu_readline_p, always 1.  The intent is that an
+    application can verify whether or not it is linked with the `real'
+    readline library or some substitute.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.04-devel,
+and the previous version, bash-2.03-release.
+
+1.  Changes to Bash
+
+a.  System-specific configuration and source changes for:  Interix, Rhapsody
+
+b.  Fixed a bug in execute_cmd.c that resulted in a compile-time error if
+    JOB_CONTROL was not defined.
+
+c.  An obscure race condition in the trap code was fixed.
+
+d.  The string resulting from $'...' is now requoted to avoid any further
+    expansion.
+
+e.  The $'...' quoting syntax now allows backslash to escape a single quote,
+    for ksh-93 compatibility.
+
+f.  The $"..." quoting syntax now escapes backslashes and double quotes in
+    the translated string when displaying them with the --dump-po-strings
+    option.
+
+g.  `echo -e' no longer converts \' to '.
+
+h.  Fixes were made to the extended globbing code to handle embedded (...)
+    patterns better.
+
+i.  Some improvements were made to the code that unsets `nodelay' mode on
+    the file descriptor from which bash is reading input.
+
+j.  Some changes were made to the replacement termcap library for better
+    operation on MS-DOS.
+
+k.  Some changes were made to the tilde expansion code to handle backslash
+    as a pathname separator on MS-DOS.
+
+l.  The source has been reorganized a little bit -- there is now an `include'
+    subdirectory, and lib/posixheaders has been removed.
+
+m.  Improvements were made to the `read' builtin so that it makes many
+    fewer read(2) system calls.
+
+n.  The expansion of $- will include `c' and `s' when those options are
+    supplied at shell invocation.
+
+o.  Several improvments were made to the completion code:  variable completion
+    now works better when there are unterminated expansions, command
+    completion understands quotes better, and completion now works in certain
+    unclosed $(... constructs.
+
+p.  The arithmetic expansion code was fixed to not need the value of a
+    variable being assigned a value (fixes the "ss=09; let ss=10" bug).
+
+q.  Some changes were made to make exported environment creation faster.
+
+r.  The html documentation will be installed into $(htmldir) if that variable
+    has a value when `make install' is run.
+
+s.  Fixed a bug that would cause the bashrc file to be sourced inappropriately
+    when bash is started by sshd.
+
+t.  The SSH_CLIENT environment variable is no longer auto-exported.
+
+u.  A bug that caused redirections with (...) subshells to be performed in
+    the wrong order was fixed.
+
+v.  A bug that occasionally caused inappropriate expansion of assignment
+    statements in compound array assignments was fixed.
+
+w.  The code that parses the words in a compound array assignment was
+    simplified considerably and should work better now.
+
+x.  Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant
+    when a user attempts to retrieve the status of a terminated background
+    process.
+
+y.  Fixes to the `printf' builtin so that it doesn't try to expand all
+    backslash escape sequences in the format string before parsing it for
+    % format specifiers.
+
+2.  Changes to Readline
+
+a.  The history library tries to truncate the history file only if it is a
+    regular file.
+
+b.  A bug that caused _rl_dispatch to address negative array indices on
+    systems with signed chars was fixed.
+
+c.  rl-yank-nth-arg now leaves the history position the same as when it was
+    called.
+
+d.  Changes to the completion code to handle MS-DOS drive-letter:pathname
+    filenames.
+
+e.  Completion is now case-insensitive by default on MS-DOS.
+
+f.  Fixes to the history file manipulation code for MS-DOS.
+
+g.  Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
+
+h.  Some fixes were made to the redisplay code for better operation on MS-DOS.
+
+i.  The quoted-insert code will now insert tty special chars like ^C.
+
+j.  A bug was fixed that caused the display code to reference memory before
+    the start of the prompt string.
+
+k.  More support for __EMX__ (OS/2).
+
+l.  A bug was fixed in readline's signal handling that could cause infinite
+    recursion in signal handlers.
+
+m.  A bug was fixed that caused the point to be less than zero when rl_forward
+    was given a very large numeric argument.
+
+n.  The vi-mode code now gets characters via the application-settable value
+    of rl_getc_function rather than calling rl_getc directly.
+
+3.  New Features in Bash
+
+a.  The history builtin has a `-d offset' option to delete the history entry
+    at position `offset'.
+
+b.  The prompt expansion code has two new escape sequences: \j, the number of
+    active jobs; and \l, the basename of the shell's tty device name.
+
+c.  The `bind' builtin has a new `-x' option to bind key sequences to shell
+    commands.
+
+d.  There is a new shell option, no_empty_command_completion, which, when
+    enabled, disables command completion when TAB is typed on an empty line.
+
+e.  The `help' builtin has a `-s' option to just print a builtin's usage
+    synopsys.
+
+f.  There are several new arithmetic operators:  id++, id-- (variable
+    post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
+    expr1 , expr2 (comma operator).
+
+g.  There is a new ksh-93 style arithmetic for command:
+       for ((expr1 ; expr2; expr3 )); do list; done
+
+h.  The `read' builtin has a number of new options:
+       -t timeout      only wait timeout seconds for input
+       -n nchars       only read nchars from input instead of a full line
+       -d delim        read until delim rather than newline
+       -s              don't echo input chars as they are read
+
+i.  The redirection code now handles several filenames specially:
+    /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
+    not they are present in the file system.
+
+j.  The redirection code now recognizes pathnames of the form
+    /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
+    of the appropriate type to the specified port on the specified host.
+
+k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all
+    shell variables whose names start with prefix, has been implemented.
+
+l.  There is a new dynamic variable, FUNCNAME, which expands to the name of
+    a currently-executing function.  Assignments to FUNCNAME have no effect.
+
+m.  The GROUPS variable is no longer readonly; assignments to it are silently
+    discarded.  This means it can be unset.
+
+4.  New Features in Readline
+
+a.  Parentheses matching is now always compiled into readline, and enabled
+    or disabled when the value of the `blink-matching-paren' variable is
+    changed.
+
+b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
+
+c.  MS-DOS systems now use ~/_history as the default history file.
+
+d.  history-search-{forward,backward} now leave the point at the end of the
+    line when the string to search for is empty, like
+    {reverse,forward}-search-history.
+
+e.  history-search-{forward,backward} now leave the last history line found
+    in the readline buffer if the second or subsequent search fails.
+
+f.  New function for use by applications:  rl_on_new_line_with_prompt, used
+    when an application displays the prompt itself before calling readline().
+
+g.  New variable for use by applications:  rl_already_prompted.  An application
+    that displays the prompt itself before calling readline() must set this to
+    a non-zero value.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.03-release,
+and the previous version, bash-2.03-beta2.
+
+1.  Changes to Bash
+
+a.  A file descriptor leak in the `fc' builtin was fixed.
+
+b.  A bug was fixed in the `read' builtin that caused occasional spurious
+    failures when using `read -e'.
+
+c.  The version code needed to use the value of the cpp variable
+    CONF_MACHTYPE rather than MACHTYPE.
+
+d.  A new test was added to exercise the command printing and copying code.
+
+e.  A bug was fixed that caused `time' to be recognized as a reserved word
+    if it was the first pattern in a `case' statement pattern list.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.03-beta2,
+and the previous version, bash-2.03-beta1.
+
+1.  Changes to Bash
+
+a.  Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2.
+
+b.  config.{guess,sub} support added for the NEC SX4.
+
+c.  Changed some of the cross-compiling sections of the configure macros in
+    aclocal.m4 so that configure won't abort.
+
+d.  Slight changes to how the HTML versions of the bash and readline manuals
+    are generated.
+
+e.  Fixed conditional command printing to avoid interpreting printf `%'-escapes
+    in arguments to [[.
+
+f.  Don't include the bash malloc on all variants of the alpha processor.
+
+g.  Changes to configure to make --enable-profiling work on Solaris 2.x.
+
+h.  Fixed a bug that manifested itself when shell functions were called
+    between calls to `getopts'.
+
+i.  Fixed pattern substitution so that a bare `#'as a pattern causes the
+    replacement string to be prefixed to the search string, and a bare
+    `%' causes the replacement string to be appended to the search string.
+
+j.  Fixed a bug in the command execution code that caused child processes
+    to occasionally have the wrong value for $!.
+
+2.  Changes to Readline
+
+a.  Added code to the history library to catch history substitutions using
+    `&' without a previous history substitution or search having been
+    performed.
+
+3.  New Features in Bash
+
+4.  New Features in Readline
+
+a.  New bindable variable: `isearch-terminators'.
+
+b.  New bindable function: `forward-backward-delete-char' (unbound by default).
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.03-beta1,
+and the previous version, bash-2.03-alpha.
+    
+1.  Changes to Bash
+
+a.  A change was made to the help text for `{...}' to make it clear that a
+    semicolon is required before the closing brace.
+
+b.  A fix was made to the `test' builtin so that syntax errors cause test
+    to return an exit status > 1.
+
+c.  Globbing is no longer performed on assignment statements that appear as
+    arguments to `assignment builtins' such as `export'.
+
+d.  System-specific configuration changes were made for:  Rhapsody,
+    AIX 4.2/gcc, BSD/OS 4.0.
+
+e.  New loadable builtins: ln, unlink.
+
+f.  Some fixes were made to the globbing code to handle extended glob patterns
+    which immediately follow a `*'.
+
+g.  A fix was made to the command printing code to ensure that redirections
+    following compound commands have a space separating them from the rest
+    of the command.
+
+h.  The pathname canonicalization code was changed to produce fewer leading
+    `//' sequences, since those are interpreted as network file system
+    pathnames on some systems.
+
+i.  A fix was made so that loops containing `eval' commands in commands passed
+    to `bash -c' would not exit prematurely.
+
+j.  Some changes were made to the job reaping code when the shell is not
+    interactive, so the shell will retain exit statuses longer for examination
+    by `wait'.
+
+k.  A fix was made so that `jobs | command' works again.
+
+l.  The erroneous compound array assignment var=((...)) is now a syntax error.
+
+m.  A change was made to the dynamic loading code in `enable' to support
+    Tenon's MachTen.
+
+n.  A fix was made to the globbing code so that extended globbing patterns
+    will correctly match `.' in a bracket expression.
+
+2.  Changes to Readline
+
+a.  A fix was made to the completion code in which a typo caused the wrong
+    value to be passed to the function that computed the longest common
+    prefix of the list of matches.
+
+b.  The completion code now checks the value of rl_filename_completion_desired,
+    which is set by application-supplied completion functions to indicate
+    that filename completion is being performed, to decide whether or not to
+    call an application-supplied `ignore completions' function.
+
+3.  New Features in Bash
+
+a.  A change was made to the startup file code so that any shell begun with
+    the `--login' option, even non-interactive shells, will source the login
+    shell startup files.
+
+4.  New Features in Readline
+
+a.  A new variable, rl_erase_empty_line, which, if set by an application using
+    readline, will cause readline to erase, prompt and all, lines on which the
+    only thing typed was a newline.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.03-alpha,
+and the previous version, bash-2.02.1-release.
+
+1.  Changes to Bash
+
+a.  System-specific configuration changes were made for: Irix 6.x, Unixware 7.
+
+b.  The texi2dvi and texi2html scripts were updated to the latest versions
+    from the net.
+
+c.  The configure tests that determine which native type is 32 bits were
+    changed to not require a compiled program.
+
+d.  Fixed a bug in shell_execve that could cause memory to be freed twice
+    after a failed exec.
+
+e.  The `printf' test uses `diff -a' if it's available to prevent confusion
+    due to the non-ascii output.
+
+f.  Shared object configuration is now performed by a shell script,
+    support/shobj-conf, which generates values to be substituted into
+    makefiles by configure.
+
+g.  Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a
+    return value.
+
+h.  Changes were made to `ulimit' to work around HPUX 9.x's peculiar
+    handling of RLIMIT_FILESIZE.
+
+i.  Some new loadable builtins were added: id, printenv, sync, whoami, push,
+    mkdir.  `pushd', `popd', and `dirs' can now be built as regular or
+    loadable builtins from the same source file.
+
+j.  Changes were made to `printf' to handle NUL bytes in the expanded format
+    string.
+
+k.  The various `make clean' Makefile targets now descend into lib/sh.
+
+l.  The `type' builtin was changed to use the internal `getopt' so that things
+    like `type -ap' work as expected.
+
+m.  There is a new configuration option, --with-installed-readline, to link
+    bash with a locally-installed version of readline.  Only readline version
+    4.0 and later releases can support this.  Shared and static libraries
+    are supported.  The installed include files are used.
+
+n.  There is a new autoconf macro used to find which basic type is 64 bits.
+
+o.  Dynamic linking and loadable builtins should now work on SCO 3.2v5*,
+    AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where
+    the `-shared' options works correctly.
+
+p.  A bug was fixed in the bash filename completion code that caused memory to
+    be freed twice if a directory name containing an unset variable was
+    completed and the -u option was set.
+
+q.  The prompt expansion code now quotes the `$' in the `\$' expansion so it
+    is not processed by subsequent parameter expansion.
+
+r.  Fixed a parsing bug that caused a single or double quote after a `$$' to
+    trigger ANSI C expansion or locale translation.
+
+s.  Fixed a bug in the globbing code that caused quoted filenames containing
+    no globbing characters to sometimes be incorrectly expanded.
+
+t.  Changes to the default prompt strings if prompt string decoding is not
+    compiled into the shell.
+
+u.  Added `do', `then', `else', `{', and `(' to the list of keywords that may
+    precede the `time' reserved word.
+
+v.  The shell may now be cross-built for BeOS as well as cygwin32.
+
+w.  The conditional command execution code now treats `=' the same as `=='
+    for deciding when to perform pattern matching.
+
+x.  The `-e' option no longer causes the shell to exit if a command exits
+    with a non-zero status while running the startup files.
+
+y.  The `printf' builtin no longer dumps core if a modifier is supplied in
+    the format string without a conversion character (e.g. `%h').
+
+z.  Array assignments of the form a=(...) no longer show up in the history
+    list.
+
+aa. The parser was fixed to obey the POSIX.2 rules for finding the closing
+    `}' in a ${...} expression.
+
+bb. The history file is now opened with mode 0600 rather than 0666, so bash
+    no longer relies on the user's umask being set appropriately.
+
+cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now
+    relies on proper behavior from the C library.
+
+dd. Minor changes were made to allow quoted variable expansions using
+    ${...} to be completed correctly if there is no closing `"'.
+
+ee. Changes were made to builtins/Makefile.in so that configuring the shell
+    with `--enable-profiling' works right and builtins/mkbuiltins is
+    generated.
+
+2.  Changes to Readline
+
+a.  The version number is now 4.0.
+
+b.  There is no longer any #ifdef SHELL code in the source files.
+
+c.  Some changes were made to the key binding code to fix memory leaks and
+    better support Win32 systems.
+
+d.  Fixed a silly typo in the paren matching code -- it's microseconds, not
+    milliseconds.
+
+e.  The readline library should be compilable by C++ compilers.
+
+f.  The readline.h public header file now includes function prototypes for
+    all readline functions, and some changes were made to fix errors in the
+    source files uncovered by the use of prototypes.
+
+g.  The maximum numeric argument is now clamped at 1000000.
+
+h.  Fixes to rl_yank_last_arg to make it behave better.
+
+i.  Fixed a bug in the display code that caused core dumps if the prompt
+    string length exceeded 1024 characters.
+
+j.  The menu completion code was fixed to properly insert a single completion
+    if there is only one match.
+
+k.  A bug was fixed that caused the display code to improperly display tabs
+    after newlines.
+
+3.  New Features in Bash
+
+a.  New `shopt' option, `restricted_shell', indicating whether or not the
+    shell was started in restricted mode, for use in startup files.
+
+b.  Filename generation is now performed on the words between ( and ) in
+    array assignments (which it probably should have done all along).
+
+c.  OLDPWD is now auto-exported, as POSIX.2 seems to require.
+
+d.  ENV and BASH_ENV are read-only variables in a restricted shell.
+
+4.  New Features in Readline
+
+a.  Many changes to the signal handling:
+       o Readline now catches SIGQUIT and cleans up the tty before returning;
+       o A new variable, rl_catch_signals, is available to application writers 
+         to indicate to readline whether or not it should install its own
+         signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
+         SIGTTIN, and SIGTTOU;
+       o A new variable, rl_catch_sigwinch, is available to application
+         writers to indicate to readline whether or not it should install its
+         own signal handler for SIGWINCH, which will chain to the calling
+         applications's SIGWINCH handler, if one is installed;
+       o There is a new function, rl_free_line_state, for application signal
+         handlers to call to free up the state associated with the current
+         line after receiving a signal;
+       o There is a new function, rl_cleanup_after_signal, to clean up the
+         display and terminal state after receiving a signal;
+       o There is a new function, rl_reset_after_signal, to reinitialize the
+         terminal and display state after an application signal handler
+         returns and readline continues
+
+b.  There is a new function, rl_resize_terminal, to reset readline's idea of
+    the screen size after a SIGWINCH.
+
+c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were
+    previously private functions with a `_' prefix.
+
+d.  New function hook: rl_pre_input_hook, called just before readline starts
+    reading input, after initialization.
+
+e.  New function hook: rl_display_matches_hook, called when readline would
+    display the list of completion matches.  The new function
+    rl_display_match_list is what readline uses internally, and is available
+    for use by application functions called via this hook.
+
+f.  New bindable function, delete-char-or-list, like tcsh.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02.1-release,
+and the previous version, bash-2.02-release.
+
+1.  Changes to Bash
+
+a.  A bug that caused the bash readline support to not compile unless aliases
+    and csh-style history were configured into the shell was fixed.
+
+b.  Fixed a bug that could cause a core dump when here documents contained
+    more than 1000 characters.
+
+c.  Fixed a bug that caused a CDPATH entry of "" to not be treated the same
+    as the current directory when in POSIX mode.
+
+d.  Fixed an alignment problem with the memory returned by the bash malloc,
+    so returned memory is now 64-bit aligned.
+
+e.  Fixed a bug that caused command substitutions executed within pipelines
+    to put the terminal in the wrong process group.
+
+f.  Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
+    Unixware 2, and Unixware 7.
+
+g.  Fixes to the pattern matching code to make it work correctly for eight-bit
+    characters.
+
+h.  Fixed a problem that occasionally caused the shell to display the wrong
+    value for the new working directory when changing to a directory found
+    in $CDPATH when in physical mode.
+
+i.  Fixed a bug that caused core dumps when using conditional commands in
+    shell functions.
+
+j.  Fixed a bug that caused the printf builtin to loop forever if the format
+    string did not consume any of the arguments.
+
+k.  Fixed a bug in the parameter expansion code that caused "$@" to be
+    incorrectly split if $IFS did not contain a space character.
+
+l.  Fixed a bug that could cause a core dump when completing hostnames if
+    the number of matching hostnames was an exact multiple of 16.
+
+m.  Fixed a bug that caused the shell to fork too early when a command
+    such as `%2 &' was given.
+
+2.  Changes to Readline
+
+a.  Fixed a problem with redisplay that showed up when the prompt string was
+    longer than the screen width and the prompt contained invisible characters.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02-release,
+and the previous version, bash-2.02-beta2.
+
+1.  Changes to Bash
+
+a.  A bug was fixed that caused the terminal process group to be set
+    incorrectly when performing command substitution of builtins in a
+    pipeline.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02-beta2,
+and the previous version, bash-2.02-beta1.
+
+1.  Changes to Bash
+
+a.  Attempting to `wait' for stopped jobs now generates a warning message.
+
+b.  Pipelines which exit due to SIGPIPE in non-interactive shells are now
+    not reported if the shell is compiled -DDONT_REPORT_SIGPIPE.
+
+c.  Some changes were made to builtins/psize.sh and support/bashbug.sh to
+    attempt to avoid some /tmp file races and surreptitious file
+    substitutions.
+
+d.  Fixed a bug that caused the shell not to compile if configured with
+    dparen arithmetic but without aliases.
+
+e.  Fixed a bug that caused the input stream to be switched when assigning
+    empty arrays with `bash -c'.
+
+f.  A bug was fixed in the readline expansion glue code that caused bash to
+    dump core when expanding lines with an unclosed single quote.
+
+g.  A fix was made to the `cd' builtin so that using a non-empty directory
+    from $CDPATH results in an absolute pathname of the new current working
+    directory to be displayed after the current directory is changed.
+
+h.  Fixed a bug in the variable assignment code that caused the shell to
+    dump core when referencing an unset variable with `set -u' enabled in
+    an assignment statement preceding a command.
+
+i.  Fixed a bug in the exit trap code that caused reserved words to not be
+    recognized under certain circumstances.
+
+j.  Fixed a bug in the parameter pattern substitution code so that quote
+    removal is performed.
+
+k.  The shell should now configure correctly on Apple Rhapsody systems.
+
+l.  The `kill' builtin now prints a usage message if it is not passed any
+    arguments.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02-beta1,
+and the previous version, bash-2.02-alpha1.
+
+1.  Changes to Bash
+
+a.  A few compilation bugs were fixed in the new extended globbing code.
+
+b.  Executing arithmetic commands now sets the command name to `((' so
+    error messages look right.
+
+c.  Fixed some build problems with various configuration options.
+
+d.  The `printf' builtin now aborts immediately if an illegal format
+    character is encountered.
+
+e.  The code that creates here-documents now behaves better if the file it's
+    trying to create already exists for some reason.
+
+f.  Fixed a problem with the extended globbing code that made patterns like
+    `x+*' expand incorrectly.
+
+g.  The prompt string expansion code no longer quotes tildes with backslashes.
+
+h.  The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in
+    the presence of lstat(2) failures.
+
+i.  Fixed a bug with strsub() that caused core dumps when executing `fc -s'.
+
+j.  The mail checking code now ensures that it has a valid default mailpath.
+
+k.  A bug was fixed that caused local variables to be unset inappropriately
+    when sourcing a script from within another sourced script.
+
+l.  A bug was fixed in the history saving code so that functions are saved
+    in the history list correctly if `cmdhist' is enabled, but `lithist'
+    is not.
+
+m.  A bug was fixed that caused printf overflows when displaying error
+    messages.
+
+n.  It should be easier to build the loadble builtins in examples/loadables,
+    though some manual editing of the generated Makefile is still required.
+
+o.  The user's primary group is now always ${GROUPS[0]}.
+
+p.  Some updates were made to support/config.guess from the GNU master copy.
+
+q.  Some changes were made to the autoconf support for Solaris 2.6 large
+    files.
+
+r.  The `command' builtins now does the right thing when confstr(3) cannot
+    find a value for _CS_PATH.
+
+s.  Extended globbing expressions like `*.!(c)' are not history expanded if
+    `extglob' is enabled.
+
+t.  Using the `-P' option to `cd' will force the value that is assigned to
+    PWD to not contain any symbolic links.
+
+2.  Changes to Readline
+
+a.  The code that prints completion listings now behaves better if one or
+    more of the filenames contains non-printable characters.
+
+b.  The time delay when showing matching parentheses is now 0.5 seconds.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-2.02-alpha1,
+and the previous version, bash-2.01.1-release.
+
+1.  Changes to Bash
+
+a.  OS-specific configuration changes for:  BSD/OS 3.x, Minix 2.x,
+    Solaris 2.6, SINIX SVR4.
+
+b.  Changes were made to the generated `info' files so that `install-info'
+    works correctly.
+
+c.  PWD is now auto-exported.
+
+d.  A fix was made to the pipeline code to make sure that the shell forks
+    to execute simple commands consisting solely of assignment statements.
+
+e.  Changes to the test suite for systems with 14-character filenames.
+
+f.  The default sizes of some internal hash tables have been made smaller
+    to reduce the shell's memory footprint.
+
+g.  The `((...))' arithmetic command is now executed directly instead of
+    being translated into `let "..."'.
+
+h.  Fixes were made to the expansion code so that "$*", "$@", "${array[@]}",
+    and "${array[@]}" expand correctly when IFS does not contain a space
+    character, is unset, or is set to NULL.
+
+i.  The indirect expansion code (${!var}) was changed so that the only
+    valid values of `var' are variable names, positional parameters, `#',
+    `@', and `*'.
+
+j.  An arithmetic expression error in a $((...)) expansion now causes a
+    non-interactive shell running in posix mode to exit.
+
+k.  Compound array assignment now splits the words within the parentheses
+    on shell metacharacters like the parser would before expansing them
+    and performing the assignment.  This is for compatibility with ksh-93.
+
+l.  The internal shell backslash-quoting code (used in the output of `set'
+    and completion) now quotes tildes if they appear at the start of the
+    string or after a `=' or `:'.
+
+m.  A couple of bugs with `shopt -o' were fixed.
+
+n.  `bash +o' now displays the same output as `set +o' before starting an
+    interactive shell.
+
+o.  A bug that caused command substitution and the `eval' builtin to
+    occasionally free memory twice when an error was encountered was fixed.
+
+p.  The filename globbing code no longer requires read permission for a
+    directory when the filename to be matched does not contain any globbing
+    characters, as POSIX.2 specifies.
+
+q.  A bug was fixed so that the job containing the last asynchronous
+    process is not removed from the job table until a `wait' is executed
+    for that process or another asynchronous process is started.  This
+    satisfies a POSIX.2 requirement.
+
+r.  A `select' bug was fixed so that a non-numeric user response is treated
+    the same as a numeric response that is out of range.
+
+s.  The shell no longer parses the value of SHELLOPTS from the environment
+    if it is restricted, running setuid, or running in `privileged mode'.
+
+t.  Fixes were made to enable large file support on systems such as
+    Solaris 2.6, where the size of a file may be larger than can be held
+    in an `int'.
+
+u.  The filename hashing code was fixed to not add `./' to the beginning of
+    filenames which already begin with `./'.
+
+v.  The configure script was changed so that the GNU termcap library is not
+    compiled in if `prefer-curses' has been specified.
+
+w.  HISTCONTROL and HISTIGNORE are no longer applied to the second and
+    subsequent lines of a multi-line command.
+
+x.  A fix was made to `disown' so that it does a better job of catching
+    out-of-range jobs.
+
+y.  Non-interactive shells no longer report the status of processes terminated
+    due to SIGINT, even if the standard output is a terminal.
+
+z.  A bug that caused the output of `jobs' to have extra carriage returns
+    was fixed.
+
+aa. A bug that caused PIPESTATUS to not be set when builtins or shell
+    functions were executed in the foreground was fixed.
+
+bb. Bash now attempts to detect when it is being run by sshd, and treats
+    that case identically to being run by rshd.
+
+cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell
+    options was changed was fixed.
+
+dd. The `kill' builtin now disallows empty or missing process id arguments
+    instead of treating them as identical to `0', which means the current
+    process.
+
+ee. `var=value declare -x var' now behaves identically to
+    `var=value export var'.  Similarly for `var=value declare -r var' and
+    `var=value readonly var'.
+
+ff. A few memory leaks were fixed.
+
+gg. `alias' and `unalias' now print error messages when passed an argument
+    that is not an alias for printing or deletion, even when the shell is
+    not interactive, as POSIX.2 specifies.
+
+hh. `alias' and `alias -p' now return a status of 0 when no aliases are
+    defined, as POSIX.2 specifes.
+
+ii. `cd -' now prints the pathname of the new working directory if the shell
+    is interactive.
+
+jj. A fix was made so that the code that binds $PWD now copes with getcwd()
+    returning NULL.
+
+kk. `unset' now checks whether or not a function name it's trying to unset
+    is a valid shell identifier only when the shell is running in posix mode.
+
+ll. A change was made to the code that generates filenames for here documents
+    to make them less prone to name collisions.
+
+mm. The parser was changed so that `time' is recognized as a reserved word
+    only at the beginning of a pipeline.
+
+nn. The pathname canonicalization code was changed so that `//' is converted
+    into `/', but all other pathnames beginning with `//' are left alone, as
+    POSIX.2 specifies.
+
+oo. The `logout' builtin will no longer exit a non-interactive non-login
+    shell.
+
+2.  Changes to Readline
+
+a.  Fixed a problem in the readline test program rltest.c that caused a core
+    dump.
+
+b.  The code that handles parser directives in inputrc files now displays
+    more error messages.
+
+c.  The history expansion code was fixed so that the appearance of the
+    history comment character at the beginning of a word inhibits history
+    expansion for that word and the rest of the input line.
+
+3.  New Features in Bash
+
+a.  A new version of malloc, based on the older GNU malloc, that has many
+    changes, is more page-based, is more conservative with memory usage,
+    and does not `orphan' large blocks when they are freed.
+
+b.  A new version of gmalloc, based on the old GLIBC malloc, with many
+    changes and range checking included by default.
+
+c.  A new implementation of fnmatch(3) that includes full POSIX.2 Basic
+    Regular Expression matching, including character classes, collating
+    symbols, equivalence classes, and support for case-insensitive pattern
+    matching.
+
+d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
+    implemented, controlled by a new `shopt' option, `extglob'.
+
+e.  There is a new ksh-like `[[' compound command, which implements
+    extended `test' functionality.
+
+f.  There is a new `printf' builtin, implemented according to the POSIX.2
+    specification.
+
+g.  There is a new feature for command substitution: $(< filename) now expands
+    to the contents of `filename', with any trailing newlines removed
+    (equivalent to $(cat filename)).
+
+h.  There are new tilde prefixes which expand to directories from the
+    directory stack.
+
+i.  There is a new `**' arithmetic operator to do exponentiation.
+
+j.  There are new configuration options to control how bash is linked:
+    `--enable-profiling', to allow bash to be profiled with gprof, and
+    `--enable-static-link', to allow bash to be linked statically.
+
+k.  There is a new configuration option, `--enable-cond-command', which
+    controls whether or not the `[[' command is included.  It is on by
+    default.
+
+l.  There is a new configuration option, `--enable-extended-glob', which
+    controls whether or not the ksh extended globbing feature is included.
+    It is enabled by default.
+
+m.  There is a new configuration #define in config.h.top that, when enabled,
+    will cause all login shells to source /etc/profile and one of the user-
+    specific login shell startup files, whether or not the shell is
+    interactive.
+
+n.  There is a new invocation option, `--dump-po-strings', to dump
+    a shell script's translatable strings ($"...") in GNU `po' format.
+
+o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive
+    pattern matching when globbing filenames and using the `case' construct.
+
+p.  There is a new `shopt' option, `huponexit', which, when enabled, causes
+    the shell to send SIGHUP to all jobs when an interactive login shell
+    exits.
+
+q.  `bind' has a new `-u' option, which takes a readline function name as an
+    argument and unbinds all key sequences bound to that function in a
+    specified keymap.
+
+r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs
+    and running jobs, respectively.
+
+s.  The `shopt' `-p' option now causes output to be displayed in a reusable
+    format.
+
+t.  `test' has a new `-N' option, which returns true if the filename argument
+    has been modified since it was last accessed.
+
+u.  `umask' now has a `-p' option to print output in a reusable format.
+
+v.  A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
+    translation code.  It expands to the character whose ascii code is NNN
+    in hexadecimal.
+
+w.  The prompt string expansion code has a new `\r' escape sequence.
+
+x.  The shell may now be cross-compiled for the CYGWIN32 environment on
+    a Unix machine.
+
+4.  New Features in Readline
+
+a.  There is now an option for `iterative' yank-last-arg handline, so a user
+    can keep entering `M-.', yanking the last argument of successive history
+    lines.
+
+b.  New variable, `print-completions-horizontally', which causes completion
+    matches to be displayed across the screen (like `ls -x') rather than up
+    and down the screen (like `ls').
+
+c.  New variable, `completion-ignore-case', which causes filename completion
+    and matching to be performed case-insensitively.
+
+d.  There is a new bindable command, `magic-space', which causes history
+    expansion to be performed on the current readline buffer and a space to
+    be inserted into the result.
+
+e.  There is a new bindable command, `menu-complete', which enables tcsh-like
+    menu completion (successive executions of menu-complete insert a single
+    completion match, cycling through the list of possible completions).
+
+f.  There is a new bindable command, `paste-from-clipboard', for use on Win32
+    systems, to insert the text from the Win32 clipboard into the editing
+    buffer.
+
+g.  The key sequence translation code now understands printf-style backslash
+    escape sequences, including \NNN octal escapes.  These escape sequences
+    may be used in key sequence definitions or macro values.
+
+h.  An `$include' inputrc file parser directive has been added.
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-2.01.1-release,
 and the previous version, bash-2.01-release.
 
@@ -361,7 +2806,7 @@ x.  A fix was made to the command timing code so that `time' can be used in
     a loop.
 
 y.  A fix was made to the parser so that `((cmd); cmd2)' is now parsed as
-    a nested subshell rather than strictly as an (errnoeous) arithmetic
+    a nested subshell rather than strictly as an (erroneous) arithmetic
     command.
 
 z.  A fix was made to the globbing code so that it correctly matches quoted