This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Bash-2.04 available for FTP


The first public release of bash-2.04 is now available with the URLs

ftp://ftp.cwru.edu/pub/bash/bash-2.04.tar.gz
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.04.tar.gz

and from the usual GNU mirror sites.

This tar file does not include the formatted documentation
(postscript, dvi, html, and nroffed versions of the manual pages);
that may be retrieved with the URLs

ftp://ftp.cwru.edu/pub/bash/bash-doc-2.03.tar.gz
ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.03.tar.gz

When unpacking the documentation, make sure to extract the tar file
in the bash-2.04 source directory.

Diffs from bash-2.03 are available with the URLs

ftp://ftp.cwru.edu/pub/bash/bash-2.03-2.04.diff.gz
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.03-2.04.diff.gz

Make sure to apply the diffs using `patch -p1' from within a
bash-2.03 source directory.

Please use `bashbug' to report bugs with this version.  It is built
and installed at the same time as bash.

Installation
============

Please read the README file first.

Installation instructions are provided in the INSTALL file.

New Features
============

Read the file NEWS in the bash-2.04 distribution.  Here is a short list:

o Programmable word completion with the new `complete' and `compgen' builtins;
  examples are provided in examples/complete/complete-examples
o `history' has a new `-d' option to delete a history entry
o `bind' has a new `-x' option to bind key sequences to shell commands
o The prompt expansion code has new `\j' and `\l' escape sequences
o The `no_empty_command_completion' shell option, if enabled, inhibits
  command completion when TAB is typed on an empty line
o `help' has a new `-s' option to print a usage synopsis
o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
o New ksh93-style arithmetic for command:
        for ((expr1 ; expr2; expr3 )); do list; done
o `read' has new options: `-t', `-n', `-d', `-s'
o The redirection code handles several filenames specially:  /dev/fd/N,
  /dev/stdin, /dev/stdout, /dev/stderr
o The redirection code now recognizes /dev/tcp/HOST/PORT and
  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
  to the specified port on the specified host
o The ${!prefix*} expansion has been implemented
o A new FUNCNAME variable, which expands to the name of a currently-executing
  function
o The GROUPS variable is no longer readonly
o A new shopt `xpg_echo' variable, to control the behavior of echo with
  respect to backslash-escape sequences at runtime
o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned


Changed have been made to the Readline library being released at
the same time as bash-2.04, readline-4.1, so that Bash can be
linked against an already-installed Readline library rather than
the private version in lib/readline.  Only readline-4.1 is able
to provide all of the symbols that bash-2.04 requires; earlier
versions of the Readline library will not work correctly.

A complete list of changes between bash-2.03 and bash-2.04 is
available in the file CHANGES.

A Peek at the Future
====================

I'm thinking about an implementation of associative arrays, like
those in ksh-93.

Readline
========

Also available is a new release of the standalone readline library,
version 4.1, with its own configuration scripts and Makefiles. 
It can be retrieved with the URLs

ftp://ftp.cwru.edu/pub/bash/readline-4.1.tar.gz
ftp://ftp.gnu.org/pub/gnu/readline/readline-4.1.tar.gz

and from the usual GNU mirror sites.

Diffs from readline-4.0 are available with the URLs

ftp://ftp.cwru.edu/pub/bash/readline-4.0-4.1.diff.gz
ftp://ftp.gnu.org/pub/gnu/readline/readline-4.0-4.1.diff.gz

Make sure to install the patches using `patch -p1 < patch-file' from
within a readline-4.0 source directory.

The formatted Readline documentation is included in the readline
distribution tar file.

A separate announcement listing the changes in Readline is being
distributed.

As always, thanks for your help.

Chet

+========== CHANGES ==========+
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 inaapropriate 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.

------------------------------------------------------------------------------

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet)

Chet Ramey, CWRU    chet@po.CWRU.Edu    http://cnswww.cns.cwru.edu/~chet/

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]