Imported from ../bash-1.14.7.tar.gz.
[platform/upstream/bash.git] / RELEASE
1 This file details the changes between the previous release of bash (1.13.5)
2 and this release (1.14.0).
3
4 1. New Features in Bash
5
6 a.  The source has been reorganized:  nearly all extern function
7     declarations have been moved to header files, function prototypes
8     have been added to most header files, function declarations have
9     been moved to file scope, dead code has been removed, the
10     bash history code has been isolated in bashhist.[ch], and several
11     new header files have been created
12
13 b.  `set -o posix' puts bash into Posix.2 mode
14
15 c.  If $POSIX_PEDANTIC exists in the initial environment or is assigned
16     a value, bash enters Posix.2 mode
17
18 d.  Bash sets $OSTYPE to a string describing the UNIX version
19
20 e.  The features.info file was completely rewritten and now reflects
21     the current state of things
22
23 f.  A manual page for readline is in documentation/readline.{3,ps}
24
25 g.  The test builtin emulates /dev/fd/x for systems without /dev/fd
26
27 h.  `dirs' has -n and +n options to access members of the directory stack
28
29 i.  Prompt string expansion handles invisible characters in the prompt;
30     \[ and \] are used (and required) to start and end sequences of
31     invisible chars
32
33 j.  NO_PROMPT_VARS has been removed
34
35 k.  New machine descriptions have been added:  IBM AIX/ESA, NEC EWS, NetBSD,
36     FreeBSD, QNX 4.2, concurrent, MIPS SVR4.2, Lynx 2.1
37
38 l.  RESTRICTED_SHELL is no longer defined by default in config.h
39
40 m.  The version string in $BASH_VERSION has changed to dist.patch(build)
41
42 n.  $history_control has been renamed to $HISTCONTROL and now takes the
43     value `ignoreboth' ($history_control is still accepted for backwards
44     compatibility)
45
46 o.  There is a new program `bashbug' for reporting bugs.  Eventually I will
47     probably switch to gnats.
48
49 p.  auto_resume can take the values `exact' and `substring'
50
51 q.  `set -P' (`set -o physical') enables the same physical view of the
52     file system that `nolinks' enables (`nolinks' will remain for one
53     more release)
54
55 r.  There is a `mkmachtype' program to generate a GNU-style machine type
56     string (e.g., `sparc-sun-sunos4.1.2') suitable for assigning to
57     $MACHTYPE
58
59 s.  The variable $HISTCMD returns the current history number
60
61 t.  Variables in directory names are now expanded while doing completion
62
63 u.  The test suite has been expanded and is runnable as a regression test
64     with `make tests'
65
66 v.  `bye' is no longer a builtin synonym for `exit'
67
68 w.  The ksh `select' control construct has been implemented
69
70 x.  The `ignoreeof' attribute can be inherited if $IGNOREEOF is exported
71
72 y.  The `USG-style' echo is now a configuration option.  Define
73     DEFAULT_ECHO_TO_USG for default \-interpretation without the -e flag
74
75 z.  There is a copy of an article I wrote about bash for the Linux
76     Journal in documentation/article.{ms,ps}
77
78 aa. The `pwd' builtin now obeys the setting of `set -o physical' (`nolinks')
79
80 bb. Process substitution is no longer performed when the shell is in
81     `posix mode'
82
83 cc. Users may change the debugging and optimization flags to cc by specifying
84     CFLAGS to make
85
86 2. New Features in Readline
87
88 a.  Readline now understands sequences of invisible characters in the prompt
89     string, as long as they are escaped (e.g., by the bash \[ and \] escapes)
90
91 b.  A `set keymap' variable assignment
92
93 c.  A `bell-style' variable that can be set to `visible', `audio', or `none'
94
95 d.  A `show-all-if-ambiguous' variable, which causes non-unique completion
96     to immediately list the possible completions
97
98 e.  An `output-meta' variable to make readline directly output chars
99     with the eighth bit set
100
101 f.  New bindable readline commands: kill-whole-line, tilde-expand,
102     vi-redo, vi-tilde-expand, emacs-editing-mode,
103     non-incremental-forward-search-history-again,
104     non-incremental-reverse-search-history-again
105
106 g.  New history-search-forward and history-search-backward to search for
107     the characters between the start of the current line and point
108
109 h.  Readline takes the name of the startup file from the INPUTRC variable
110     before defaulting to ~/.inputrc
111
112 i.  isearch no longer finds identical lines multiple times in succession
113
114 j.  M-C-H bound to backward-kill-word in emacs mode
115
116 k.  M-~ bound to tilde-expand in emacs mode
117
118 l.  History expansion is now fully csh-compatible: missing modifiers and
119     substitutions have been added, and bugs fixed
120
121 m.  When asking whether or not to display the possible completions, readline
122     now accepts space as equivalent to `y' and rubout for `n'
123
124 n.  Readline now attempts to find and bind the arrow keys into the vi mode
125     movement keymap
126
127 3.  Bugs fixed in Bash
128
129 a.  Portability fixes: `index' and `rindex' are gone completely, many
130     OS-specific defines have been replaced with feature-test macros,
131     the use of alloca has been reduced, and other platform-specific fixes
132     (e.g. cray) have been made
133
134 b.  The man page has been fixed up and brought up to date
135
136 c.  Speed improvements: here documents, variable expansion, history
137     expansion, command substitution
138
139 d.  If history is stifled, the history list replaces the history file at
140     exit
141
142 e.  Asynchronous jobs re-run with fc -s now print the job number
143
144 f.  Output redirections do not perform filename expansion in Posix.2 mode
145     when the shell is not interactive
146
147 g.  operate_and_get_next now works on the most recent line even if the
148     history is unstifled
149
150 h.  $PROMPT_COMMAND execution no longer causes recursive invocations
151     of yyparse()
152
153 i.  An error message is printed if job control initialization fails
154
155 j.  A command found in $PATH from the temporary environment is not hashed
156
157 k.  Errors display the name of the script if the shell is not interactive
158
159 l.  Fixed expression evaluation so blank expressions return 0
160
161 m.  Fixed a bug that caused SIGINT and SIGQUIT not to be ignored in some
162     asynchronous children
163
164 n.  Pipes used for /dev/fd process substitution are now closed on errors
165
166 o.  Fixed /dev/null redirection so that ( list ) subshells inherit the
167     `stdin-has-been-redirected' flag as in sh
168
169 p.  Process substitution now works only when unquoted
170
171 q.  Fixed a bug where the async flag was added inappropriately in a command
172     like `a;b;c;d &'
173
174 r.  Fixed off-by-one bug which caused negative history offsets in `fc' to
175     be wrong
176
177 s.  Shell now remembers mail dates at startup on all systems
178
179 t.  Posix systems without job control no longer create so many zombies
180
181 u.  $ENV is now sourced by shells forked to execute scripts without a
182     leading `#!' line
183
184 v.  Non-root users can now use the `unlimited' argument to ulimit and have
185     the resource value set to the hard limit
186
187 w.  Made bash more sh-compatible by assigning the first argument after
188     `-c command' to $0
189
190 x.  Fixed mail checking bug to note that *new* mail has arrived
191
192 y.  Fixed off-by-one error in mailcheck.c:free_mail_files()
193
194 z.  Fixed a bug where command strings passed to `bash -c' would be truncated
195     after executing the first disk command in the string
196
197 aa. Fixed a bug which caused redirections passed to executable commands with
198     input or output pipes to be closed before the command was executed
199
200 bb. Fixed a bug which caused bash to search for files supplied on the command
201     line in the $PATH if the initial open failed, even if the names contained
202     a slash
203
204 cc. The initial argument parsing was fixed up so that other options can
205     be supplied with -c (that is, `sh -ec command' now works as make
206     intends), and so `bash -o' lists all the shell options at startup.
207
208 dd. Error messages are consistently prefixed with the name of the shell
209     or shell script when non-interactive.
210
211 ee. Fixed up a problem with the `read' builtin that occurred when more
212     variables than arguments were supplied.
213
214 ff. Unset the variables passed to `read' as arguments when EOF is
215     read from stdin (sh, Posix.2 compatibility).
216
217 gg. Fixes to the command printing code to make the output of `type'
218     available as legal shell input.
219
220 ii. Fixes so that command completion is attempted after all of the shell
221     command separator characters.
222
223 jj. Fixes to the shell completion code so that it handles quoted characters
224     and substrings better.
225
226 kk. Bash no longer looks through $PATH for a shell script passed as an
227     argument if the name contains slashes.
228
229 ll. Bash now checks that the `name' in a `name[=value]' argument to `declare'
230     (and thus `typeset', `export', and `readonly') is a legal shell variable
231     name.
232
233 4.  Bugs fixed in Readline
234
235 a.  The ^W and ^U bindings in non-incremental search mode have been changed
236     to be closer to what Posix specifies
237
238 b.  Tries to initialize the keypad to enable the arrow keys
239
240 c.  Multiple words are now killed and yanked in the right order
241
242 d.  rl_read_init_file now reads filenames in a more regular order:  the last
243     one read, $INPUTRC, then ~/.inputrc
244
245 e.  yank_nth_arg inserts a space in the right place in vi mode
246
247 f.  Fixed a bug in the history library that tried to write to a file opened
248     O_RDONLY
249
250 g.  Binding of `0' in vi command mode is now right
251
252 h.  The VISIBLE_STATS completion listing code now follows symlinks
253
254 i.  Memory allocated with alloca() is no longer passed to other functions
255
256 j.  Error messages are now printed for unrecognized history modifiers
257
258 k.  Fixed a problem with history library and `!#'; now it is more csh-like.
259
260 l.  Fixed a csh incompatibility in the history library: now only an end of
261     line or `?' terminates a ?string history search string.
262
263 m.  Fixed a problem with readline completion that sometimes caused possible
264     matches to be listed one per line when `show-all-if-ambiguous' was set.
265
266 n.  Fixed a problem in the readline display code that caused divide-by-zero
267     errors.
268
269 o.  Fixed an off-by-one error in the kill ring reallocation code.