Imported from ../bash-2.05.tar.gz.
[platform/upstream/bash.git] / NEWS
1 This is a terse description of the new features added to bash-2.05 since
2 the release of bash-2.04.  As always, the manual page (doc/bash.1) is
3 the place to look for complete descriptions.
4
5 1.  New Features in Bash
6
7 a.  Added a new `--init-file' invocation argument as a synonym for `--rcfile',
8     per the new GNU coding standards.
9
10 b.  The /dev/tcp and /dev/udp redirections now accept service names as well as
11     port numbers.
12
13 c.  `complete' and `compgen' now take a `-o value' option, which controls some
14     of the aspects of that compspec.  Valid values are:
15
16         default - perform bash default completion if programmable
17                   completion produces no matches
18         dirnames - perform directory name completion if programmable
19                    completion produces no matches
20         filenames - tell readline that the compspec produces filenames,
21                     so it can do things like append slashes to
22                     directory names and suppress trailing spaces
23
24 d.  A new loadable builtin, realpath, which canonicalizes and expands symlinks
25     in pathname arguments.
26     
27 e.  When `set' is called without options, it prints function defintions in a
28     way that allows them to be reused as input.  This affects `declare' and 
29     `declare -p' as well.  This only happens when the shell is not in POSIX
30     mode, since POSIX.2 forbids this behavior.
31
32 f.  Bash-2.05 once again honors the current locale setting when processing
33     ranges within pattern matching bracket expressions (e.g., [A-Z]).
34
35 2.  New Features in Readline
36
37 a.  The blink timeout for paren matching is now settable by applications,
38     via the rl_set_paren_blink_timeout() function.
39
40 b.  _rl_executing_macro has been renamed to rl_executing_macro, which means
41     it's now part of the public interface.
42
43 c.  Readline has a new variable, rl_readline_state, which is a bitmap that
44     encapsulates the current state of the library; intended for use by
45     callbacks and hook functions.
46
47 d.  New application-callable function rl_set_prompt(const char *prompt):
48     expands its prompt string argument and sets rl_prompt to the result.
49
50 e.  New application-callable function rl_set_screen_size(int rows, int cols):
51     public method for applications to set readline's idea of the screen
52     dimensions.
53
54 f.  New function, rl_get_screen_size (int *rows, int *columns), returns
55     readline's idea of the screen dimensions.
56
57 g.  The timeout in rl_gather_tyi (readline keyboard input polling function)
58     is now settable via a function (rl_set_keyboard_input_timeout()).
59
60 h.  Renamed the max_input_history variable to history_max_entries; the old
61     variable is maintained for backwards compatibility.
62
63 i.  The list of characters that separate words for the history tokenizer is
64     now settable with a variable:  history_word_delimiters.  The default
65     value is as before.
66
67 -------------------------------------------------------------------------------
68 This is a terse description of the new features added to bash-2.04 since
69 the release of bash-2.03.  As always, the manual page (doc/bash.1) is
70 the place to look for complete descriptions.
71
72 1.  New Features in Bash
73
74 a.  The history builtin has a `-d offset' option to delete the history entry
75     at position `offset'.
76
77 b.  The prompt expansion code has two new escape sequences: \j, the number of
78     active jobs; and \l, the basename of the shell's tty device name.
79
80 c.  The `bind' builtin has a new `-x' option to bind key sequences to shell   
81     commands.
82
83 d.  There is a new shell option, no_empty_command_completion, which, when
84     enabled, disables command completion when TAB is typed on an empty line.
85
86 e.  The `help' builtin has a `-s' option to just print a builtin's usage
87     synopsis.
88
89 f.  There are several new arithmetic operators:  id++, id-- (variable
90     post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
91     expr1 , expr2 (comma operator).
92
93 g.  There is a new ksh-93 style arithmetic for command:
94         for ((expr1 ; expr2; expr3 )); do list; done
95
96 h.  The `read' builtin has a number of new options:
97         -t timeout      only wait timeout seconds for input
98         -n nchars       only read nchars from input instead of a full line
99         -d delim        read until delim rather than newline
100         -s              don't echo input chars as they are read
101
102 i.  The redirection code now handles several filenames specially:
103     /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
104     not they are present in the file system.
105
106 j.  The redirection code now recognizes pathnames of the form
107     /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
108     of the appropriate type to the specified port on the specified host.
109
110 k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all
111     shell variables with prefix PREFIX, has been implemented.
112
113 l.  There is a new dynamic variable, FUNCNAME, which expands to the name of
114     a currently-executing function.  Assignments to FUNCNAME have no effect.
115
116 m.  The GROUPS variable is no longer readonly; assignments to it are silently
117     discarded.  This means it can be unset.
118
119 n.  A new programmable completion facility, with two new builtin commands:
120     complete and compgen.
121
122 o.  configure has a new option, `--enable-progcomp', to compile in the
123     programmable completion features (enabled by default).
124
125 p.  `shopt' has a new option, `progcomp', to enable and disable programmable
126     completion at runtime.
127
128 q.  Unsetting HOSTFILE now clears the list of hostnames used for completion.
129
130 r.  configure has a new option, `--enable-bash-malloc', replacing the old
131     `--with-gnu-malloc' (which is still present for backwards compatibility).
132
133 s.  There is a new manual page describing rbash, the restricted shell.
134
135 t.  `bashbug' has new `--help' and `--version' options.
136
137 u.  `shopt' has a new `xpg_echo' option, which controls the behavior of
138     `echo' with respect to backslash-escaped characters at runtime.
139
140 v.  If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the
141     startup files, even if they are not interactive.
142
143 w.  The LC_NUMERIC variable is now treated specially, and used to set the
144     LC_NUMERIC locale category for number formatting, e.g., when `printf'
145     displays floating-point numbers.
146
147 2.  New features in Readline
148
149 a.  Parentheses matching is now always compiled into readline, and enabled
150     or disabled when the value of the `blink-matching-paren' variable is
151     changed.
152
153 b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
154
155 c.  MS-DOS systems now use ~/_history as the default history file.
156
157 d.  history-search-{forward,backward} now leave the point at the end of the
158     line when the string to search for is empty, like
159     {reverse,forward}-search-history.
160
161 e.  history-search-{forward,backward} now leave the last history line found
162     in the readline buffer if the second or subsequent search fails.
163
164 f.  New function for use by applications:  rl_on_new_line_with_prompt, used
165     when an application displays the prompt itself before calling readline().
166
167 g.  New variable for use by applications:  rl_already_prompted.  An application
168     that displays the prompt itself before calling readline() must set this to
169     a non-zero value.
170
171 h.  A new variable, rl_gnu_readline_p, always 1.  The intent is that an
172     application can verify whether or not it is linked with the `real'
173     readline library or some substitute.
174
175 -------------------------------------------------------------------------------
176 This is a terse description of the new features added to bash-2.03 since
177 the release of bash-2.02.  As always, the manual page (doc/bash.1) is
178 the place to look for complete descriptions.
179
180 1.  New Features in Bash
181
182 a.  New `shopt' option, `restricted_shell', indicating whether or not the
183     shell was started in restricted mode, for use in startup files.
184
185 b.  Filename generation is now performed on the words between ( and ) in
186     array assignments (which it probably should have done all along).
187
188 c.  OLDPWD is now auto-exported, as POSIX.2 seems to require.
189
190 d.  ENV and BASH_ENV are read-only variables in a restricted shell.
191
192 e.  A change was made to the startup file code so that any shell begun with
193     the `--login' option, even non-interactive shells, will source the login
194     shell startup files.
195
196 2.  New Features in Readline
197
198 a.  Many changes to the signal handling:
199         o Readline now catches SIGQUIT and cleans up the tty before returning;
200         o A new variable, rl_catch_signals, is available to application writers 
201           to indicate to readline whether or not it should install its own
202           signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
203           SIGTTIN, and SIGTTOU;
204         o A new variable, rl_catch_sigwinch, is available to application
205           writers to indicate to readline whether or not it should install its
206           own signal handler for SIGWINCH, which will chain to the calling
207           applications's SIGWINCH handler, if one is installed;
208         o There is a new function, rl_free_line_state, for application signal
209           handlers to call to free up the state associated with the current
210           line after receiving a signal;
211         o There is a new function, rl_cleanup_after_signal, to clean up the
212           display and terminal state after receiving a signal;
213         o There is a new function, rl_reset_after_signal, to reinitialize the
214           terminal and display state after an application signal handler
215           returns and readline continues
216
217 b.  There is a new function, rl_resize_terminal, to reset readline's idea of
218     the screen size after a SIGWINCH.
219
220 c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were
221     previously private functions with a `_' prefix.
222
223 d.  New function hook: rl_pre_input_hook, called just before readline starts
224     reading input, after initialization.
225
226 e.  New function hook: rl_display_matches_hook, called when readline would
227     display the list of completion matches.  The new function
228     rl_display_match_list is what readline uses internally, and is available
229     for use by application functions called via this hook.
230
231 f.  New bindable function, delete-char-or-list, like tcsh.
232
233 g.  A new variable, rl_erase_empty_line, which, if set by an application using
234     readline, will cause readline to erase, prompt and all, lines on which the
235     only thing typed was a newline.
236
237 h.  New bindable variable: `isearch-terminators'.
238
239 i.  New bindable function: `forward-backward-delete-char' (unbound by default).
240
241 -------------------------------------------------------------------------------
242 This is a terse description of the new features added to bash-2.02 since
243 the release of bash-2.01.1.  As always, the manual page (doc/bash.1) is
244 the place to look for complete descriptions.
245
246 1. New Features in Bash
247
248 a.  A new version of malloc, based on the older GNU malloc, that has many
249     changes, is more page-based, is more conservative with memory usage,
250     and does not `orphan' large blocks when they are freed.
251
252 b.  A new version of gmalloc, based on the old GLIBC malloc, with many
253     changes and range checking included by default.
254
255 c.  A new implementation of fnmatch(3) that includes full POSIX.2 Basic
256     Regular Expression matching, including character classes, collating
257     symbols, equivalence classes, and support for case-insensitive pattern
258     matching.
259
260 d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
261     implemented, controlled by a new `shopt' option, `extglob'.  
262     
263 e.  There is a new ksh-like `[[' compound command, which implements   
264     extended `test' functionality.
265     
266 f.  There is a new `printf' builtin, implemented according to the POSIX.2
267     specification.
268     
269 g.  There is a new feature for command substitution: $(< filename) now expands
270     to the contents of `filename', with any trailing newlines removed
271     (equivalent to $(cat filename)).
272
273 h.  There are new tilde prefixes which expand to directories from the
274     directory stack.
275
276 i.  There is a new `**' arithmetic operator to do exponentiation.
277
278 j.  There are new configuration options to control how bash is linked:
279     `--enable-profiling', to allow bash to be profiled with gprof, and
280     `--enable-static-link', to allow bash to be linked statically.
281
282 k.  There is a new configuration option, `--enable-cond-command', which
283     controls whether or not the `[[' command is included.  It is on by
284     default. 
285
286 l.  There is a new configuration option, `--enable-extended-glob', which
287     controls whether or not the ksh extended globbing feature is included.
288     It is enabled by default.
289
290 m.  There is a new configuration #define in config.h.top that, when enabled,
291     will cause all login shells to source /etc/profile and one of the user-
292     specific login shell startup files, whether or not the shell is
293     interactive.  
294     
295 n.  There is a new invocation option, `--dump-po-strings', to dump
296     a shell script's translatable strings ($"...") in GNU `po' format. 
297     
298 o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive
299     pattern matching when globbing filenames and using the `case' construct.
300
301 p.  There is a new `shopt' option, `huponexit', which, when enabled, causes
302     the shell to send SIGHUP to all jobs when an interactive login shell
303     exits.
304
305 q.  `bind' has a new `-u' option, which takes a readline function name as an
306     argument and unbinds all key sequences bound to that function in a
307     specified keymap.
308     
309 r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs
310     and running jobs, respectively.
311
312 s.  The `shopt' `-p' option now causes output to be displayed in a reusable
313     format.
314     
315 t.  `test' has a new `-N' option, which returns true if the filename argument
316     has been modified since it was last accessed.
317
318 u.  `umask' now has a `-p' option to print output in a reusable format.
319     
320 v.  A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
321     translation code.  It expands to the character whose ascii code is NNN
322     in hexadecimal.
323     
324 w.  The prompt string expansion code has a new `\r' escape sequence.
325
326 x.  The shell may now be cross-compiled for the CYGWIN32 environment on
327     a Unix machine.
328
329 2. New Features in Readline
330
331 a.  There is now an option for `iterative' yank-last-arg handline, so a user
332     can keep entering `M-.', yanking the last argument of successive history
333     lines.
334
335 b.  New variable, `print-completions-horizontally', which causes completion
336     matches to be displayed across the screen (like `ls -x') rather than up
337     and down the screen (like `ls').
338
339 c.  New variable, `completion-ignore-case', which causes filename completion
340     and matching to be performed case-insensitively.
341
342 d.  There is a new bindable command, `magic-space', which causes history
343     expansion to be performed on the current readline buffer and a space to
344     be inserted into the result.
345
346 e.  There is a new bindable command, `menu-complete', which enables tcsh-like
347     menu completion (successive executions of menu-complete insert a single
348     completion match, cycling through the list of possible completions).
349
350 f.  There is a new bindable command, `paste-from-clipboard', for use on Win32
351     systems, to insert the text from the Win32 clipboard into the editing
352     buffer.
353
354 g.  The key sequence translation code now understands printf-style backslash
355     escape sequences, including \NNN octal escapes.  These escape sequences
356     may be used in key sequence definitions or macro values.
357
358 h.  An `$include' inputrc file parser directive has been added.
359
360 -------------------------------------------------------------------------------
361 This is a terse description of the new features added to bash-2.01 since
362 the release of bash-2.0.  As always, the manual page (doc/bash.1) is the
363 place to look for complete descriptions.
364
365 1. New Features in Bash
366
367 a.  There is a new builtin array variable: GROUPS, the set of groups to which
368     the user belongs.  This is used by the test suite.
369
370 2.  New Features in Readline
371
372 a.  If a key sequence bound to `universal-argument' is read while reading a
373     numeric argument started with `universal-argument', it terminates the
374     argument but is otherwise ignored.  This provides a way to insert multiple
375     instances of a digit string, and is how GNU emacs does it.
376
377 -------------------------------------------------------------------------------
378 This is a terse description of the new features added to bash-2.0 since
379 the release of bash-1.14.7.  As always, the manual page (doc/bash.1) is
380 the place to look for complete descriptions.
381
382 1.  New Features in Bash
383
384 a.  There is a new invocation option, -D, that dumps translatable strings
385     in a script.
386
387 b.  The `long' invocation options must now be prefixed with `--'.
388
389 c.  New long invocation options:  --dump-strings, --help, --verbose
390
391 d.  The `nolineediting' invocation option was renamed to `noediting'.
392
393 e.  The `nobraceexpansion' and `quiet' long invocation options were removed.
394
395 f.  The `--help' and `--version' long options now work as the GNU coding
396     standards specify.
397
398 g.  If invoked as `sh', bash now enters posix mode after reading the
399     startup files, and reads and executes commands from the file named
400     by $ENV if interactive (as POSIX.2 specifies).  A login shell invoked
401     as `sh' reads $ENV after /etc/profile and ~/.profile.
402
403 h.  There is a new reserved word, `time', for timing pipelines, builtin
404     commands, and shell functions.  It uses the value of the TIMEFORMAT
405     variable as a format string describing how to print the timing
406     statistics.
407
408 i.  The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the
409     result single-quoted.
410
411 j.  The $"..." quoting syntax performs locale-specific translation of ...
412     and leaves the result double-quoted.
413
414 k.  LINENO now works correctly in functions.
415
416 l.  New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS,
417     MACHTYPE.  The first three are array variables.
418
419 m.  The BASH_VERSION and BASH_VERSINFO variables now include the shell's
420     `release status' (alpha[N], beta[N], release).
421
422 n.  Some variables have been removed:  MAIL_WARNING, notify, history_control,
423     command_oriented_history, glob_dot_filenames, allow_null_glob_expansion,
424     nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and
425     cdable_vars.  Most of them are now implemented with the new `shopt'
426     builtin; others were already implemented by `set'.
427
428 o.  Bash now uses some new variables:  LC_ALL, LC_MESSAGES, LC_CTYPE,
429     LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE.
430
431 p.  The shell now supports integer-indexed arrays of unlimited length,
432     with a new compound assignment syntax and changes to the appropriate
433     builtin commands (declare/typeset, read, readonly, etc.).  The array
434     index may be an arithmetic expression.
435
436 q.  ${!var}: indirect variable expansion, equivalent to eval \${$var}.
437
438 r.  ${paramter:offset[:length]}: variable substring extraction.
439
440 s.  ${parameter/pattern[/[/]string]}: variable pattern substitution.
441
442 t.  The $[...] arithmetic expansion syntax is no longer supported, in
443     favor of $((...)).
444
445 u.  Aliases can now be expanded in shell scripts with a shell option
446     (shopt expand_aliases).
447
448 v.  History and history expansion can now be used in scripts with
449     set -o history and set -H.
450
451 w.  All builtins now return an exit status of 2 for incorrect usage.
452
453 x.  Interactive shells resend SIGHUP to all running or stopped children
454     if (and only if) they exit due to a SIGHUP.
455
456 y.  New prompting expansions: \a, \e, \H, \T, \@, \v, \V.
457
458 z.  Variable expansion in prompt strings is now controllable via a shell
459     option (shopt promptvars).
460
461 aa. Bash now defaults to using command-oriented history.
462
463 bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after
464     being written.
465
466 cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr)
467     has been implemented.
468
469 dd. Each builtin now accepts `--' to signify the end of the options, except
470     as documented (echo, etc.).
471
472 ee. All builtins use -p to display values in a re-readable format where
473     appropriate, except as documented (echo, type, etc.).
474
475 ff. The `alias' builtin has a new -p option.
476
477 gg. Changes to the `bind' builtin:
478         o has new options: -psPSVr.
479         o the `-d' option was renamed to `-p'
480         o the `-v' option now dumps variables; the old `-v' is now `-P'
481
482 hh. The `bye' synonym for `exit' was removed.
483
484 ii. The -L and -P options to `cd' and `pwd' have been documented.
485
486 jj. The `cd' builtin now does spelling correction on the directory name
487     by default.  This is settable with a shell option (shopt cdspell).
488
489 kk. The `declare' builtin has new options: -a, -F, -p.
490
491 ll. The `dirs' builtin has new options: -c, -p, -v.
492
493 mm. The new `disown' builtin removes jobs from the shell's jobs table
494     or inhibits the resending of SIGHUP when the shell receives a
495     SIGHUP.
496
497 nn. The `echo' builtin has a new escape character: \e.
498
499 oo. The `enable' builtin can now load new builtins dynamically from shared
500     objects on systems with the dlopen/dlsym interface.  There are a number
501     of examples in the examples/loadables directory.  There are also
502     new options: -d, -f, -s, -p.
503
504 pp. The `-all' option to `enable' was removed in favor of `-a'.
505
506 qq. The `exec' builtin has new options: -l, -c, -a.
507
508 rr. The `hash' builtin has a new option: -p.
509
510 ss. The `history' builtin has new options: -c, -p, -s.
511
512 tt. The `jobs' builtin has new options: -r, -s.
513
514 uu. The `kill' builtin has new options: -n signum, -l signame.
515
516 vv. The `pushd' and `popd' builtins have a new option: -n.
517
518 ww. The `read' builtin has new options: -p prompt, -e, -a.
519
520 xx. The `readonly' builtin has a new -a option, and the -n option was removed.
521
522 yy. Changes to the `set' builtin:
523         o new options: -B, -o keyword, -o onecmd, -o history
524         o options removed: -l, -d, -o nohash
525         o options changed: +o, -h, -o hashall
526         o now displays variables in a format that can be re-read as input
527
528 zz. The new `shopt' builtin controls shell optional behavior previously
529     done by setting and unsetting certain shell variables.
530
531 aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2,
532      and s1 > s2, where s1 and s2 are strings.
533
534 bbb. There is a new trap, DEBUG, executed after every simple command.
535
536 ccc. The `trap' builtin has a new -p option.
537
538 ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems.
539
540 eee. The PS1, PS2, PATH, and IFS variables may now be unset.
541
542 fff. The restricted shell mode has been expanded and is now documented.
543
544 ggg. Security improvements:
545         o functions are not imported from the environment if running setuid
546           or with -p
547         o no startup files are sourced if running setuid or with -p
548
549 hhh. The documentation has been overhauled:  the texinfo manual was
550      expanded, and HTML versions of the man page and texinfo manual
551      are included.
552
553 iii. Changes to Posix mode:
554         o Command lookup now finds special builtins before shell functions.
555         o Failure of a special builtin causes a non-interactive shell to
556           exit.  Failures are defined in the POSIX.2 specification.
557         o If the `cd' builtin finds a directory to change to using $CDPATH,
558           the value assigned to PWD when `cd' completes does not contain
559           any symbolic links.
560         o A non-interactive shell exits if a variable assignment error
561           occurs when no command name follows the assignment statements.
562         o A non-interactive shell exits if the interation variable in a
563           `for' statement or the selection variable in a `select' statement
564           is read-only or another variable assignment error occurs.
565         o The `<>' redirection operator now opens a file for both stdin and
566           stdout by default, not just when in posix mode.
567         o Assignment statements preceding special builtins now persist in
568           the shell's environment when the builtin completes.
569
570      Posix mode is now completely POSIX.2-compliant (modulo bugs).  When
571      invoked as sh, bash should be completely POSIX.2-compliant.
572
573 jjj. The default value of PS1 is now "\s-\v\$ ".
574
575 kkk. The ksh-like ((...)) arithmetic command syntax has been implemented.
576      This is exactly equivalent to `let "..."'.
577
578 lll. Integer constants have been extended to base 64.
579
580 mmm. The `ulimit' builtin now sets both hard and soft limits and reports the
581      soft limit by default.
582
583 2.  New Features in Readline
584
585 a.  New variables:  enable-keypad, input-meta (new name for meta-flag),
586     mark-directories, visible-stats (now documented), disable-completion,
587     comment-begin.
588
589 b.  New bindable commands:  kill-region, copy-region-as-kill,
590     copy-backward-word, copy-forward-word, set-mark, exchange-point-and-mark,
591     character-search, character-search-backward, insert-comment,
592     glob-expand-word, glob-list-expansions, dump-variables, dump-macros.
593
594 c.  New emacs keybindings:  delete-horizontal-space (M-\),
595     insert-completions (M-*), possible-completions (M-=).
596
597 d.  The history-search-backward and history-search-forward commands were
598     modified to be the same as previous-line and next-line if point is at
599     the start of the line.
600
601 e.  More file types are available for the visible-stats mode.
602
603 3.  Changes of interest in the Bash implementation
604
605 a.  There is a new autoconf-based configuration mechanism.
606
607 b.  More things have been moved from Posix mode to standard shell behavior.
608
609 c.  The trace output (set -x) now inserts quotes where necessary so it can
610     be reused as input.
611
612 d.  There is a compile-time option for a system-wide interactive shell
613     startup file (disabled by default).
614
615 e.  The YACC grammar is smaller and tighter, and all 66 shift-reduce
616     conflicts are gone.  Several parsing bugs have been fixed.
617
618 f.  Builtin option parsing has been regularized (using internal_getopt()),
619     with the exception of `echo', `type', and `set'.
620
621 g.  Builtins now return standard usage messages constructed from the
622     `short doc' used by the help builtin.
623
624 h.  Completion now quotes using backslashes by default, but honors
625     user-supplied quotes.
626
627 i.  The GNU libc malloc is available as a configure-time option.
628
629 j.  There are more internationalization features; bash uses gettext if
630     it is available.  The $"..." translation syntax uses the current
631     locale and gettext.
632
633 k.  There is better reporting of job termination when the shell is not
634     interactive.
635
636 l.  The shell is somewhat more efficient: it uses a little less memory and
637     makes fewer system calls.
638
639 4.  Changes of interest in the Readline implementation
640
641 a.  There is now support for readline `callback' functions.
642
643 b.  There is now support for user-supplied input, redisplay, and terminal
644     preparation functions.
645
646 c.  Most of the shell-specific code in readline has been generalized or
647     removed.
648
649 d.  Most of the annoying redisplay bugs have been fixed, notably the problems
650     with incremental search and excessive redrawing when special characters
651     appear in the prompt string.
652
653 e.  There are new library functions and variables available to application
654     writers, most having to do with completion and quoting.
655
656 f.  The NEWLINE character (^J) is now treated as a search terminator by the
657     incremental search functions.