]> git.ipfire.org Git - thirdparty/bash.git/blob - CHANGES-4.3
commit bash-20141219 snapshot
[thirdparty/bash.git] / CHANGES-4.3
1 This document details the changes between this version, bash-4.3-release, and
2 the previous version, bash-4.3-rc2.
3
4 1. Changes to Bash
5
6 a. Only Posix-mode shells should exit on an assignment failure in the
7 temporary environment preceding a special builtin. This is how it's been
8 documented.
9
10 b. Fixed a bug that caused a failed special builtin to not exit a posix-mode
11 shell if the failing builtin was on the LHS of a && or ||.
12
13 c. Changed the handling of unquoted backslashes in regular expressions to be
14 closer to bash-4.2.
15
16 d. globstar (**) no longer traverses symbolic links that resolve to
17 directories. This eliminates some duplicate entries.
18
19 e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the
20 SIGCHLD disposition.
21
22 f. Fixed a bug that caused a crash when -x was enabled and a command
23 contained a printable multibyte (wide) character.
24
25 g. Fixed a bug that caused an interactive shell without line editing enabled
26 to read invalid data after receiving a SIGINT.
27
28 h. Fixed a bug that caused command word completion to fail if the directory in
29 $PATH where the completion would be found contained single or double quotes.
30
31 i. Fixed a bug that caused a shell with -v enabled to print commands in $()
32 multiple times.
33
34 2. Changes to Readline
35
36 a. Fixed a bug that caused `undo' to reference freed memory or null pointers.
37
38 3. New Features in Bash
39
40 a. The [[ -v ]] option now understands array references (foo[1]) and returns
41 success if the referenced element has a value.
42
43 ------------------------------------------------------------------------------
44 This document details the changes between this version, bash-4.3-rc2, and the
45 previous version, bash-4.3-rc1.
46
47 1. Changes to Bash
48
49 a. Fixed a bug that left variables set by printf -v marked as invisible.
50
51 b. Fixed an off-by-one error in a job control warning message.
52
53 c. Fixed a bug that caused the shell to crash after declaring a nameref variable
54 without a value.
55
56 d. Fixed a bug that caused asynchronous commands to not set $? correctly.
57
58 e. Fixed a bug that caused out-of-order execution when executing aliases with
59 embedded newlines containing `.' commands.
60
61 f. Fixed a bug that caused error messages generated by expansion errors in
62 `for' commands to have the wrong line number.
63
64 g. Fixed a bug that caused the `wait' builtin to not be interruptible in an
65 interactive shell with job control enabled.
66
67 h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in
68 asynchronous subshell commands.
69
70 i. Bash now requires that the value assigned to a nameref variable be a valid
71 shell identifier (variable name or array reference).
72
73 j. Converting an existing variable to a nameref variable now turns off the
74 -i/-l/-u/-c attributes.
75
76 k. Displaying a nameref variable with `declare -p' now displays the nameref
77 variable and its value rather than following the nameref chain.
78
79 l. Fixed a problem with interrupt handling that caused a second and subsequent
80 SIGINT to be ignored by interactive shells.
81
82 m. Fixed a bug that caused certain positional parameter and array expansions
83 to mishandle (discard) null positional parameters and array elements.
84
85 n. The shell no longer blocks receipt of signals while running trap handlers
86 for those signals, and allows most trap handlers to be run recursively
87 (running trap handlers while a trap handler is executing).
88
89 o. The shell now handles backslashes in regular expression arguments to the
90 [[ command's =~ operator slightly differently, resulting in more
91 consistent behavior.
92
93 2. Changes to Readline
94
95 a. Fixed a bug that could cause readline to crash and seg fault attempting to
96 expand an empty history entry.
97
98 b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all
99 color processing but leave color enabled.
100
101 c. Fixed a bug that caused display problems with multi-line prompts containing
102 invisible characters on multiple lines.
103
104 d. Fixed a bug that caused effects made by undoing changes to a history line to
105 be discarded.
106
107 3. New Features in Bash
108
109 4. New Features in Readline
110
111 a. When creating shared libraries on Mac OS X, the pathname written into the
112 library (install_name) no longer includes the minor version number.
113 ------------------------------------------------------------------------------
114 This document details the changes between this version, bash-4.3-rc1, and the
115 previous version, bash-4.3-beta2.
116
117 1. Changes to Bash
118
119 a. Fixed a bug in bash completion that caused a tilde to be expanded even if
120 the `direxpand' option was not enabled.
121
122 b. Fixed a potential bug that could cause corrupted input in interactive shells
123 running without line editing and with `ignoreeof' enabled.
124
125 c. Fixed a bug that could cause failures when opening pipes back to shells
126 created to run process substitutions.
127
128 d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR
129 to be set in order to actually change the current text domain.
130
131 e. Changed the way redirections are printed to avoid confusion when the target
132 of an output redirection is a process substitution beginning with `>'.
133
134 2. Changes to Readline
135
136 a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13).
137
138 3. New Features in Bash
139
140 a. `cd' has a new `-@' option to browse a file's extended attributes on
141 systems that support O_XATTR.
142
143 4. New Features in Readline
144
145 a. There are additional default key bindings for MinGW32
146
147 ------------------------------------------------------------------------------
148 This document details the changes between this version, bash-4.3-beta2, and the
149 previous version, bash-4.3-beta.
150
151 1. Changes to Bash
152
153 a. Fixed a bug that caused assignment to an unset variable using a negative
154 subscript to result in a segmentation fault.
155
156 b. Fixed a bug that caused assignment to a string variable using a negative
157 subscript to use the incorrect index.
158
159 c. Fixed a bug that caused some strings to be interpreted as invalid
160 extended globbing expressions when used with the help builtin.
161
162 d. Fixed a bug that caused an attempt to trap a signal whose disposition
163 cannot be changed to reference uninitialized memory.
164
165 e. Command completion now skips assignment statements preceding a command
166 name and completes the command.
167
168 f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump
169 core under certain circumstances.
170
171 g. Fixed a bug that caused the `read -N' to misbehave when the input stream
172 contains 0xff.
173
174 2. Changes to Readline
175
176 a. Changed message when an incremental search fails to include "failed" in
177 the prompt and display the entire search string instead of just the last
178 matching portion.
179
180 b. Fixed a bug that caused an arrow key typed to an incremental search prompt
181 to process the key sequence incorrectly.
182
183 c. Additional key bindings for arrow keys on MinGW.
184
185 3. New Features in Bash
186
187 a. The help builtin now attempts substring matching (as it did through
188 bash-4.2) if exact string matching fails.
189
190 b. The fc builtin now interprets -0 as the current command line.
191
192 c. Completing directory names containing shell variables now adds a trailing
193 slash if the expanded result is a directory.
194
195 4. New Features in Readline
196
197 a. rl_change_environment: new application-settable variable that controls
198 whether or not Readline modifies the environment (currently readline
199 modifies only LINES and COLUMNS).
200
201 ------------------------------------------------------------------------------
202 This document details the changes between this version, bash-4.3-beta, and the
203 previous version, bash-4.3-alpha.
204
205 1. Changes to Bash
206
207 a. Fixed a bug in the prompt directory name "trimming" code that caused
208 memory corruption and garbled the results.
209
210 b. Fixed a bug that caused single quotes that resulted from $'...' quoting
211 in the replacement portion of a double-quoted ${word/pat/rep} expansion
212 to be treated as quote characters.
213
214 c. Fixed a bug that caused assignment statements preceding a command word to
215 result in assignment statements following a declaration command to not be
216 expanded like assignment statements.
217
218 d. Fixed a bug with variable search order in the presence of local variables
219 with the same name as variables in the temporary environment supplied to
220 a shell function.
221
222 e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process
223 substitutions even in an arithmetic context.
224
225 f. Fixed several cases where `invisible' variables (variables with attributes
226 but no values, which are technically unset) were treated incorrectly.
227
228 g. Fixed a bug that caused group commands in pipelines that were not the
229 last element to not run the EXIT trap.
230
231 h. Fixed a bug that caused `unset -n' to not unset a nameref variable in
232 certain cases.
233
234 i. Fixed the nameref circular reference checking to be less strict and only
235 disallow a nameref variable with the same value as its name at the global
236 scope.
237
238 j. Fixed a bug that caused trap handlers to be executed recursively,
239 corrupting internal data structures.
240
241 k. Fixed a bug that could result in bash not compiling if certain options were
242 not enabled.
243
244 l. Fixed a bug that caused the arithmetic expansion code to attempt variable
245 assignments when operator precedence prohibited them.
246
247 m. Word expansions like ${foo##bar} now understand indirect variable references.
248
249 n. Fixed a bug that caused `declare -fp name' to not display a function
250 definition.
251
252 o. Fixed a bug that caused asynchronous child processes to modify the stdin
253 file pointer when bash was using it to read a script, which modified the
254 parent's value as well.
255
256 2. Changes to Readline
257
258 a. Fixed a bug in vi mode that caused the arrow keys to set the saved last
259 vi-mode command to the wrong value.
260
261 b. Fixed a bug that caused double-quoted strings to be scanned incorrectly
262 when being used as the value of a readline variable assignment.
263
264 c. Fixed a bug with vi mode that prevented `.' from repeating a command
265 entered on a previous line (command).
266
267 d. Fixed a bug that could cause completion to core dump if it was interrupted
268 by a signal.
269
270 e. Readline now sends the meta-key enable string to the terminal if the
271 terminal has been successfully initialized.
272
273 f. Readline now calls the signal hook after resizing the terminal when it
274 receives a SIGWINCH.
275
276 g. Fixed a bug that could cause the history list code to perform an out-of-
277 bounds array reference if the history list is empty.
278
279 3. New Features in Bash
280
281 a. Shells started to run process substitutions now run any trap set on EXIT.
282
283 b. There is now a configure-time option to enable the globasciiranges option
284 by default.
285
286 c. The read builtin now checks its first variable argument for validity before
287 trying to read any input.
288
289 ------------------------------------------------------------------------------
290 This document details the changes between this version, bash-4.3-alpha,
291 and the previous version, bash-4.2-release.
292
293 1. Changes to Bash
294
295 a. Fixed several bugs concerning incomplete bracket expressions in filename
296 generation (globbing) patterns.
297
298 b. Fixed a bug with single quotes and WORD in ${param op WORD} when running
299 in Posix mode.
300
301 c. Fixed a bug that caused the pattern removal and pattern substitution word
302 expansions and case statement word expansion to not match the empty string.
303
304 d. Fixed a bug that caused the tzset() function to not work after changing
305 the TZ enviroment variable.
306
307 e. Fixed a bug that caused the RHS of an assignment statement to undergo
308 word splitting when it contained an unquoted $@.
309
310 f. Fixed bugs that caused the shell to not react to a SIGINT sent while
311 waiting for a child process to exit.
312
313 g. Bash doesn't try to run things in a signal handler context when it gets a
314 signal (SIGINT/SIGHUP/etc) while reading input using readline but still
315 be responsive to terminating signals.
316
317 h. Fixed a bug that caused bash to go into an infinite loop if a filename
318 to be matched contained an invalid multibyte character.
319
320 i. Fixed a bug that caused PS4 to end up being truncated if it is longer
321 than 128 bytes.
322
323 j. Fixed a bug that caused brace expansion to not skip over double-quoted
324 command substitution.
325
326 k. System-specific updates for: DJGPP, HP/UX, Mac OS X
327
328 l. Fixed a bug in displaying commands that caused redirections to be associated
329 with the wrong part of the command.
330
331 m. Fixed the coproc cleanup to unset the appropriate shell variables when a
332 coproc terminates.
333
334 n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of
335 the last history entry.
336
337 o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and
338 `test -x'.
339
340 p. Fixed a bug that caused the shell to not match patterns containing
341 control-A.
342
343 q. Fixed a bug that could result in doubled error messages when the `printf'
344 builtin got a write error.
345
346 r. Fixed a bug that caused the shell to not correctly expand words containing
347 multiple consecutive quoted empty strings (""""""aa).
348
349 s. Fixed a bug that caused the shell to not correctly parse multi-line
350 process substitutions containing comments and quoted strings.
351
352 t. Fixed a problem with the bash malloc's internal idea of the top of the
353 memory heap that resulted in incorrect decisions to try to reduce the
354 break and give memory back to the kernel.
355
356 u. There are changes to the expansions peformed on compound array assignments,
357 in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
358 foo[ind1]=bar foo[ind2]=baz.
359
360 v. Bash now reports an error if `read -a name' is used when `name' is an
361 existing associative array.
362
363 w. Fixed a bug that allowed an attempted assignment to a readonly variable
364 in an arithmetic expression to not return failure.
365
366 x. Fixed several bugs that caused completion functions to be invoked even when
367 the cursor was before the first word in the command.
368
369 y. Fixed a bug that caused parsing a command substitution to overwrite the
370 parsing state associated with the complete input line.
371
372 z. Fixed several bugs with the built-in snprintf replacement and field widths
373 and floating point.
374
375 aa. Fixed a bug that caused incorrect offset calculations and input buffer
376 corruption when reading files longer than 2^31 bytes.
377
378 bb. Fixed several bugs where bash performed arithmetic evaluation in contexts
379 where evaluation is suppressed.
380
381 cc. Fixed a bug that caused bash to close FIFOs used for process substitution
382 too early when a shell function was executing, but protect against using
383 all file descriptors when the shell functions are invoked inside loops.
384
385 dd. Added checks for printable (and non-printable) multibyte characters for
386 use in error messages.
387
388 ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly
389 at the end of the history list.
390
391 ff. Fixed a bug that caused command-oriented history to incorrectly combine
392 here documents into one line.
393
394 gg. Fixed a bug that caused importing SHELLOPTS from the environment into a
395 Posix-mode shell to print an error message and refuse to parse it.
396
397 hh. Fixed a bug that caused the shell to delete an extra history entry when
398 using `history -s'.
399
400 ii. Fixed a bug that caused floating-point exceptions and overflow errors
401 for the / and % arithmetic operators when using INTMAX_MIN and -1.
402
403 jj. Fixed a bug that caused parsing errors when reading an arithmetic for
404 loop inside a command substitution.
405
406 kk. Fixed a bug that caused a readonly function to be unset when unset was
407 called without the -f or -v option.
408
409 ll. Fixed several bugs in the code that quotes characters special to regular
410 expressions when used in a quoted string on the RHS of the =~ operator
411 to the [[ command.
412
413 mm. Fixed a bug that caused redirections to fail because the file descriptor
414 limit was set to a value less than 10.
415
416 nn. Fixed a bug that caused the `read' builtin to execute code in a signal
417 handler context if read timed out.
418
419 oo. Fixed a bug that caused extended globbing patterns to not match files
420 beginning with `.' correctly when a `.' was explicitly supplied in the
421 pattern.
422
423 pp. Fixed a bug that caused key sequences longer than two characters to not
424 work when used with `bind -x'.
425
426 qq. Fixed a bug that resulted in redefined functions having the wrong source
427 file names in BASH_SOURCE.
428
429 rr. Fixed a bug that caused the read builtin to assign null strings to variables
430 when using `read -N', which caused core dumps when referenced
431
432 ss. Fixed a bug that caused `bash -m script' to not enable job control while
433 running the script.
434
435 tt. Fixed a bug that caused `printf -v var' to dump core when used with the
436 %b format code.
437
438 uu. Fixed a bug that caused the shell to exit with the wrong status if -e was
439 active and the shell exited on a substitution error.
440
441 vv. Fixed a bug that caused the shell to seg fault if an array variable with
442 the same name as an existing associative array was implicitly created by
443 an assignment (declare a[n]=b).
444
445 ww. Fixed a bug that caused a redirection to misbehave if the number specified
446 for a file descriptor overflows an intmax_t.
447
448 xx. Fixed several bugs with the handling of valid and invalid unicode character
449 values when used with the \u and \U escape sequences to printf and $'...'.
450
451 yy. Fixed a bug that caused tildes to not be escaped in expanded filenames,
452 making them subject to later expansion.
453
454 zz. When using the pattern substitution word expansion, bash now runs the
455 replacement string through quote removal, since it allows quotes in that
456 string to act as escape characters. This is not backwards compatible, so
457 it can be disabled by setting the bash compatibility mode to 4.2.
458
459 aaa. Fixed the rest of the cases where the shell runs non-allowed code in a
460 signal handler context.
461
462 bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in
463 double-quoted expansion where the RHS is evaluated to the empty string.
464
465 ccc. Fixed a bug that caused the use of the shell's internal random number
466 generator for temporary file names to perturb the random number
467 sequence.
468
469 ddd. Fixed several bugs that caused `declare -g' to not set the right global
470 variables or to misbehave when declaring global indexed arrays.
471
472 eee. Fixed a logic bug that caused extended globbing in a multibyte locale to
473 cause failures when using the pattern substititution word expansions.
474
475 fff. Fixed a bug that caused the `lastpipe' option to corrupt the file
476 descriptor used to read the script.
477
478 ggg. Fixed a bug that causes the shell to delete DEL characters in the
479 expanded value of variables used in the same quoted string as variables
480 that expand to nothing.
481
482 hhh. Fixed a bug that caused the shell to assign the wrong value from an
483 assignment like (( x=7 )) when `x' was an existing array variable.
484
485 iii. Fixed a bug that caused the shell to misbehave when generating sequences
486 and the boundary values overflow an intmax_t.
487
488 jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared
489 next to another expansion (e.g.. "${@}${x}").
490
491 kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion.
492
493 lll. Fixed a bug that resulted in an extra semicolon being added to compound
494 assignments when they were added to the history list.
495
496 mmm. Fixed a bug that caused mapfile to read one extra line from the input.
497
498 nnn. Fixed a bug that caused the mail checking code to use uninitialized
499 values.
500
501 ooo. Fixed a bug that prevented history timestamps from being saved if the
502 history comment character is unset.
503
504 ppp. Fixed a bug that caused the case-modifying expansions to not work with
505 multibyte characters.
506
507 qqq. Fixed a bug that caused the edit-and-execute bindable readline command
508 to see the wrong data if invoked in the middle of a multi-line quoted
509 string.
510
511 rrr. Fixed a bug that resulted in the shell returning the wrong exit status
512 for a background command on systems that recycle PIDs very quickly.
513
514 sss. Fixed a bug that caused asynchronous group commands to not run any EXIT
515 trap defined in the body of the command.
516
517 ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly.
518
519 uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped
520 IFS whitespace character.
521
522 vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when
523 executing a (...) subshell.
524
525 www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic
526 evaluation.
527
528 xxx. Fixed a bug with parsing multi-line command substitutions when reading
529 the `do' keyword followed by whitespace.
530
531 yyy. Fixed a bug that caused the shell to seg fault if the time given to the
532 printf %(...)T format overflowed the value accepted by localtime(3).
533
534 zzz. Fixed a problem with displaying help topics in two columns when the
535 translated text contained multibyte characters.
536
537 aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was
538 followed by a negated extended glob pattern.
539
540 bbbb. Fixed a race condition with short-lived coproc creation and reaping that
541 caused the child process to be reaped before the various coproc shell
542 variables were initialized.
543
544 cccc. Fixed a bug where turning off `errexit' in command substitution subshells
545 was not reflected in $SHELLOPTS.
546
547 dddd. Partially fixed an inconsistency in how the shell treated shell
548 functions run from an EXIT trap.
549
550 eeee. Fixed a bug in how the shell invalidated FIFOs used for process
551 substitution when executing a pipeline (once rather than in every child).
552
553 ffff. Fixed a bug that occurred when expanding a special variable ($@, $*)
554 within double quotes and the expansion resulted in an empty string.
555
556 gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's
557 executed once per exited child.
558
559 hhhh. Fixed a bug that caused `declare' and `test' to find variables that
560 had been given attributes but not assigned values. Such variables are
561 not set.
562
563 iiii. Fixed a bug that caused commands in process substitutions to not look in
564 the local temporary environment when performing word expansions.
565
566 jjjj. Fixed several problems with globstar expansions (**/**) returning null
567 filenames and multiple instances of the same pathname.
568
569 kkkk. Fixed an oversight that did not allow the exit status of `coproc' to
570 be inverted using `!'.
571
572 llll. Fixed a bug that caused the -e option to be re-enabled using `set -e'
573 even when executing in a context where -e is ignored.
574
575 mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX.
576
577 nnnn. Fixed a bug that could result in double evaluation of command
578 substitutions when they appear in failed redirections.
579
580 oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if
581 the callback unsets the array variable mapfile is using.
582
583 pppp. Fixed several problems with variable assignments using ${var:=value}
584 when the variable assignment is supposed to have side effects.
585
586 qqqq. Fixed a bug that caused a failure of an assignment statement preceding a
587 builtin caused the next invocation of a special builtin to exit the shell.
588
589 rrrr. Fixed several problems with IFS when it appears in the temporary environment
590 and is used in redirections.
591
592 ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify
593 how preceding expansions were split.
594
595 tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.
596
597 uuuu. Fixed a problem that caused shells started in posix mode to attempt to
598 import shell functions with invalid names from the environment. We now
599 print a warning.
600
601 vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2)
602 on a FIFO used for process substitution, even if the SIGCHLD handler was
603 installed with the SA_RESTART flag.
604
605 wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}.
606
607 xxxx. Fixed a problem that caused `read -t' to crash when interrupted by
608 SIGINT.
609
610 yyyy. Fixed a problem that caused pattern removal to fail randomly because the
611 pattern matcher read beyond the end of a string.
612
613 zzzz. Fixed a bug that caused core dumps when shell functions tried to create
614 local shadow copies of special variables like GROUPS.
615
616 aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of
617 interactive shells when it arrived before the child process reset the
618 handler from SIG_DFL.
619
620 bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor
621 n closed if executed with a builtin command.
622
623 ccccc. Fixed a bug that caused incorrect completion quoting when completing a
624 word containing a globbing character with `show-all-if-ambiguous' set.
625
626 ddddd. Fixed a bug that caused printf's %q format specifier not to quote a
627 tilde even if it appeared in a location where it would be subject to
628 tilde expansion.
629
630 2. Changes to Readline
631
632 a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
633 commands to work on the entire line.
634
635 b. Fixed a bug that caused redisplay problems with prompts longer than 128
636 characters and history searches.
637
638 c. Fixed a bug that caused readline to try and run code to modify its idea
639 of the screen size in a signal handler context upon receiving a SIGWINCH.
640
641 d. Fixed a bug that caused the `meta' key to be enabled beyond the duration
642 of an individual call top readline().
643
644 e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's
645 redisplay to mishandle zero-width combining characters.
646
647 f. Fixed a bug that caused readline to `forget' part of a key sequence when
648 a multiple-key sequence caused it to break out of an incremental search.
649
650 g. Fixed bugs that caused readline to execute code in a signal handler
651 context if interrupted while reading from the file system during completion.
652
653 h. Fixed a bug that caused readline to `forget' part of a key sequence when
654 reading an unbound multi-character key sequence.
655
656 i. Fixed a bug that caused Readline's signal handlers to be installed beyond
657 the bounds of a single call to readline().
658
659 j. Fixed a bug that caused the `.' command to not redo the most recent `R'
660 command in vi mode.
661
662 k. Fixed a bug that caused ignoring case in completion matches to result in
663 readline using the wrong match.
664
665 l. Paren matching now works in vi insert mode.
666
667 m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix
668 work together.
669
670 n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
671 in vi editing mode.
672
673 o. Fixed a bug that caused the filename comparison code to not compare
674 multibyte characters correctly when using case-sensitive or case-mapping
675 comparisons.
676
677 p. Fixed the input reading loop to call the input hook function only when there
678 is no terminal input available.
679
680 q. Fixed a bug that caused binding a macro to a multi-character key sequence
681 where the sequence and macro value share a common prefix to not perform
682 the macro replacement.
683
684 r. Fixed several redisplay errors with multibyte characters and prompts
685 containing invisible characters when using horizontal scrolling.
686
687 s. Fixed a bug that caused redisplay errors when trying to overwrite
688 existing characters using multibyte characters.
689
690 3. New Features in Bash
691
692 a. The `helptopic' completion action now maps to all the help topics, not just
693 the shell builtins.
694
695 b. The `help' builtin no longer does prefix substring matching, so `help read'
696 does not match `readonly'.
697
698 c. The shell can be compiled to not display a message about processes that
699 terminate due to SIGTERM.
700
701 d. Non-interactive shells now react to the setting of checkwinsize and set
702 LINES and COLUMNS after a foreground job exits.
703
704 e. There is a new shell option, `globasciiranges', which, when set to on,
705 forces globbing range comparisons to use character ordering as if they
706 were run in the C locale.
707
708 f. There is a new shell option, `direxpand', which makes filename completion
709 expand variables in directory names in the way bash-4.1 did.
710
711 g. In Posix mode, the `command' builtin does not change whether or not a
712 builtin it shadows is treated as an assignment builtin.
713
714 h. The `return' and `exit' builtins accept negative exit status arguments.
715
716 i. The word completion code checks whether or not a filename containing a
717 shell variable expands to a directory name and appends `/' to the word
718 as appropriate. The same code expands shell variables in command names
719 when performing command completion.
720
721 j. In Posix mode, it is now an error to attempt to define a shell function
722 with the same name as a Posix special builtin.
723
724 k. When compiled for strict Posix conformance, history expansion is disabled
725 by default.
726
727 l. The history expansion character (!) does not cause history expansion when
728 followed by the closing quote in a double-quoted string.
729
730 m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
731 option to inhibit quoting of the completions.
732
733 n. Setting HISTSIZE to a value less than zero causes the history list to be
734 unlimited (setting it 0 zero disables the history list).
735
736 o. Setting HISTFILESIZE to a value less than zero causes the history file size
737 to be unlimited (setting it to 0 causes the history file to be truncated
738 to zero size).
739
740 p. The `read' builtin now skips NUL bytes in the input.
741
742 q. There is a new `bind -X' option to print all key sequences bound to Unix
743 commands.
744
745 r. When in Posix mode, `read' is interruptible by a trapped signal. After
746 running the trap handler, read returns 128+signal and throws away any
747 partially-read input.
748
749 s. The command completion code skips whitespace and assignment statements
750 before looking for the command name word to be completed.
751
752 t. The build process has a new mechanism for constructing separate help files
753 that better reflects the current set of compilation options.
754
755 u. The -nt and -ot options to test now work with files with nanosecond
756 timestamp resolution.
757
758 v. The shell saves the command history in any shell for which history is
759 enabled and HISTFILE is set, not just interactive shells.
760
761 w. The shell has `nameref' variables and new -n(/+n) options to declare and
762 unset to use them, and a `test -R' option to test for them.
763
764 x. The shell now allows assigning, referencing, and unsetting elements of
765 indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
766 count back from the last element of the array.
767
768 y. The {x}<word redirection feature now allows words like {array[ind]} and
769 can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
770
771 z. There is a new CHILD_MAX special shell variable; its value controls the
772 number of exited child statues the shell remembers.
773
774 aa. There is a new configuration option (--enable-direxpand-default) that
775 causes the `direxpand' shell option to be enabled by default.
776
777 bb. Bash does not do anything special to ensure that the file descriptor
778 assigned to X in {x}<foo remains open after the block containing it
779 completes.
780
781 cc. The `wait' builtin has a new `-n' option to wait for the next child to
782 change status.
783
784 dd. The `printf' %(...)T format specifier now uses the current time if no
785 argument is supplied.
786
787 ee. There is a new variable, BASH_COMPAT, that controls the current shell
788 compatibility level.
789
790 ff. The `popd' builtin now treats additional arguments as errors.
791
792 gg. The brace expansion code now treats a failed sequence expansion as a
793 simple string and will continue to expand brace terms in the remainder
794 of the word.
795
796 4. New Features in Readline
797
798 a. Readline is now more responsive to SIGHUP and other fatal signals when
799 reading input from the terminal or performing word completion but no
800 longer attempts to run any not-allowable functions from a signal handler
801 context.
802
803 b. There are new bindable commands to search the history for the string of
804 characters between the beginning of the line and the point
805 (history-substring-search-forward, history-substring-search-backward)
806
807 c. Readline allows quoted strings as the values of variables when setting
808 them with `set'. As a side effect, trailing spaces and tabs are ignored
809 when setting a string variable's value.
810
811 d. The history library creates a backup of the history file when writing it
812 and restores the backup on a write error.
813
814 e. New application-settable variable: rl_filename_stat_hook: a function called
815 with a filename before using it in a call to stat(2). Bash uses it to
816 expand shell variables so things like $HOME/Downloads have a slash
817 appended.
818
819 f. New bindable function `print-last-kbd-macro', prints the most-recently-
820 defined keyboard macro in a reusable format.
821
822 g. New user-settable variable `colored-stats', enables use of colored text
823 to denote file types when displaying possible completions (colored analog
824 of visible-stats).
825
826 h. New user-settable variable `keyseq-timout', acts as an inter-character
827 timeout when reading input or incremental search strings.
828
829 i. New application-callable function: rl_clear_history. Clears the history list
830 and frees all readline-associated private data.
831
832 j. New user-settable variable, show-mode-in-prompt, adds a characters to the
833 beginning of the prompt indicating the current editing mode.
834
835 k. New application-settable variable: rl_input_available_hook; function to be
836 called when readline needs to check whether there is data available on its
837 input source. The default hook checks rl_instream.
838
839 l. Readline calls an application-set event hook (rl_signal_event_hook) after
840 it gets a signal while reading input (read returns -1/EINTR but readline
841 does not handle the signal immediately) to allow the application to handle
842 or otherwise note it. Not currently called for SIGHUP or SIGTERM.
843
844 m. If the user-settable variable `history-size' is set to a value less than
845 0, the history list size is unlimited.