Introduction ============ The first public release of bash-4.3 is now available with the URLs
ftp://ftp.cwru.edu/pub/bash/bash-4.3.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/bash-4.3.tar.gz and from the usual GNU mirror sites. This tar file includes the formatted documentation (postscript, dvi, html, and nroffed versions of the manual pages). Diffs from bash-4.2 are not available. 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 ============ This is the third revision to the fourth major release of bash. This release fixes many outstanding bugs in bash-4.2 and introduces several new features. The most significant bug fix is the reworking of signal handling to avoid running signal and trap handlers in a signal handler context. This led to issues with glibc, which uses internal locks extensively and handles longjmps from user code very poorly. The most notable new features are the `globasciiranges' shell option, which forces the pattern matching code to treat [a-z] as if in the C locale; nameref variables and the changes to allow assigning, referencing, and unsetting them; improvements to the `direxpand' option introduced in bash-4.2 patch 29; and allowing negative subscripts when assigning and referencing indexed array elements. There is one incompatible change between bash-4.2 and bash-4.3. Bash now performs quote removal on the replacement string in pattern substitution (${param/pat/rep}), since the shell treats quotes as special. If you have to quote single quotes to get them to be treated literally, the shell should perform quote removal on them. Read the file NEWS in the bash-4.3 distribution for a complete description of the new features. A copy of the relevant portions is included below. Changes have been made to the Readline library being released at the same time as bash-4.3, readline-6.3, so that Bash can be linked against an already-installed Readline library rather than the private version in lib/readline. Only readline-6.2 and later versions are able to provide all of the symbols that bash-4.3 requires; earlier versions of the Readline library will not work correctly. A complete list of changes between bash-4.2 and bash-4.3 is available in the file CHANGES; the complete list is too large to include in this message. Readline ======== Also available is a new release of the standalone Readline library, version 6.3, with its own configuration scripts and Makefiles. It can be retrieved with the URLs ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz ftp://ftp.gnu.org/pub/gnu/readline/readline-6.3.tar.gz and from the usual GNU mirror sites. Diffs from readline-6.2 are not available. 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 +========== NEWS ==========+ This is a terse description of the new features added to bash-4.3 since the release of bash-4.2. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. 1. New Features in Bash a. The `helptopic' completion action now maps to all the help topics, not just the shell builtins. b. The `help' builtin no longer does prefix substring matching first, so `help read' does not match `readonly', but will do it if exact string matching fails. c. The shell can be compiled to not display a message about processes that terminate due to SIGTERM. d. Non-interactive shells now react to the setting of checkwinsize and set LINES and COLUMNS after a foreground job exits. e. There is a new shell option, `globasciiranges', which, when set to on, forces globbing range comparisons to use character ordering as if they were run in the C locale. f. There is a new shell option, `direxpand', which makes filename completion expand variables in directory names in the way bash-4.1 did. g. In Posix mode, the `command' builtin does not change whether or not a builtin it shadows is treated as an assignment builtin. h. The `return' and `exit' builtins accept negative exit status arguments. i. The word completion code checks whether or not a filename containing a shell variable expands to a directory name and appends `/' to the word as appropriate. The same code expands shell variables in command names when performing command completion. j. In Posix mode, it is now an error to attempt to define a shell function with the same name as a Posix special builtin. k. When compiled for strict Posix conformance, history expansion is disabled by default. l. The history expansion character (!) does not cause history expansion when followed by the closing quote in a double-quoted string. m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' option to inhibit quoting of the completions. n. Setting HISTSIZE to a value less than zero causes the history list to be unlimited (setting it 0 zero disables the history list). o. Setting HISTFILESIZE to a value less than zero causes the history file size to be unlimited (setting it to 0 causes the history file to be truncated to zero size). p. The `read' builtin now skips NUL bytes in the input. q. There is a new `bind -X' option to print all key sequences bound to Unix commands. r. When in Posix mode, `read' is interruptible by a trapped signal. After running the trap handler, read returns 128+signal and throws away any partially-read input. s. The command completion code skips whitespace and assignment statements before looking for the command name word to be completed. t. The build process has a new mechanism for constructing separate help files that better reflects the current set of compilation options. u. The -nt and -ot options to test now work with files with nanosecond timestamp resolution. v. The shell saves the command history in any shell for which history is enabled and HISTFILE is set, not just interactive shells. w. The shell has `nameref' variables and new -n(/+n) options to declare and unset to use them, and a `test -R' option to test for them. x. The shell now allows assigning, referencing, and unsetting elements of indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which count back from the last element of the array. y. The {x}<word redirection feature now allows words like {array[ind]} and can use variables with special meanings to the shell (e.g., BASH_XTRACEFD). z. There is a new CHILD_MAX special shell variable; its value controls the number of exited child statues the shell remembers. aa. There is a new configuration option (--enable-direxpand-default) that causes the `direxpand' shell option to be enabled by default. bb. Bash does not do anything special to ensure that the file descriptor assigned to X in {x}<foo remains open after the block containing it completes. cc. The `wait' builtin has a new `-n' option to wait for the next child to change status. dd. The `printf' %(...)T format specifier now uses the current time if no argument is supplied. ee. There is a new variable, BASH_COMPAT, that controls the current shell compatibility level. ff. The `popd' builtin now treats additional arguments as errors. gg. The brace expansion code now treats a failed sequence expansion as a simple string and will continue to expand brace terms in the remainder of the word. hh. Shells started to run process substitutions now run any trap set on EXIT. ii. The fc builtin now interprets -0 as the current command line. jj. Completing directory names containing shell variables now adds a trailing slash if the expanded result is a directory. kk. `cd' has a new `-@' option to browse a file's extended attributes on systems that support O_XATTR. ll. The test/[/[[ `-v variable' binary operator now understands array references. 2. New Features in Readline a. Readline is now more responsive to SIGHUP and other fatal signals when reading input from the terminal or performing word completion but no longer attempts to run any not-allowable functions from a signal handler context. b. There are new bindable commands to search the history for the string of characters between the beginning of the line and the point (history-substring-search-forward, history-substring-search-backward) c. Readline allows quoted strings as the values of variables when setting them with `set'. As a side effect, trailing spaces and tabs are ignored when setting a string variable's value. d. The history library creates a backup of the history file when writing it and restores the backup on a write error. e. New application-settable variable: rl_filename_stat_hook: a function called with a filename before using it in a call to stat(2). Bash uses it to expand shell variables so things like $HOME/Downloads have a slash appended. f. New bindable function `print-last-kbd-macro', prints the most-recently- defined keyboard macro in a reusable format. g. New user-settable variable `colored-stats', enables use of colored text to denote file types when displaying possible completions (colored analog of visible-stats). h. New user-settable variable `keyseq-timout', acts as an inter-character timeout when reading input or incremental search strings. i. New application-callable function: rl_clear_history. Clears the history list and frees all readline-associated private data. j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. k. New application-settable variable: rl_input_available_hook; function to be called when readline detects there is data available on its input file descriptor. l. Readline calls an application-set event hook (rl_event_hook) after it gets a signal while reading input (read returns -1/EINTR but readline does not handle the signal immediately) to allow the application to handle or otherwise note it. m. If the user-settable variable `history-size' is set to a value less than 0, the history list size is unlimited. n. New application-settable variable: rl_signal_event_hook; function that is called when readline is reading terminal input and read(2) is interrupted by a signal. Currently not called for SIGHUP or SIGTERM. o. rl_change_environment: new application-settable variable that controls whether or not Readline modifies the environment (currently readline modifies only LINES and COLUMNS). -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/