This document details the changes between this version, bash-3.2-release,
and the previous version, bash-3.2-beta.
1. Changes to Bash
a. Fixed a bug that caused the temporary environment passed to a command to
affect the shell's environment under certain circumstances.
b. Fixed a bug in the printf builtin that caused the %q format specifier to
ignore empty string arguments.
c. Improved multibyte character environment detection at configuration time.
d. Fixed a bug in the read builtin that left spurious escape characters in the
input after processing backslashes when assigning to an array variable.
2. Changes to Readline
a. Fixed a redisplay bug that occurred in multibyte-capable locales when the
prompt was one character longer than the screen width.
------------------------------------------------------------------------------
This document details the changes between this version, bash-3.2-beta,
and the previous version, bash-3.2-alpha.
1. Changes to Bash
a. Changed the lexical analyzer to treat locale-specific blank characters as
white space.
b. Fixed a bug in command printing to avoid confusion between redirections and
process substitution.
c. Fixed problems with cross-compiling originating from inherited environment
variables.
d. Added write error reporting to printf builtin.
e. Fixed a bug in the variable expansion code that could cause a core dump in
a multi-byte locale.
f. Fixed a bug that caused substring expansion of a null string to return
incorrect results.
g. BASH_COMMAND now retains its previous value while executing commands as the
result of a trap, as the documentation states.
2. Changes to Readline
a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing
the prompt and input line multiple times.
b. Fixed history expansion to not be confused by here-string redirection.
c. Readline no longer treats read errors by converting them to newlines, as
it does with EOF. This caused partial lines to be returned from readline().
------------------------------------------------------------------------------
This document details the changes between this version, bash-3.2-alpha,
and the previous version, bash-3.1-release.
1. Changes to Bash
a. Fixed a source bug that caused the minimal configuration to not compile.
b. Fixed memory leaks in error handling for the `read' builtin.
c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit
status.
d. Fixed some parsing problems with compound array assignments.
e. Added additional configuration changes for: NetBSD (incomplete multibyte
character support)
f. Fixed two bugs with local array variable creation when shadowing a variable
of the same name from a previous context.
g. Fixed the `read' builtin to restore the correct set of completion functions
if a timeout occurs.
h. Added code to defer the initialization of HISTSIZE (and its stifling of the
history list) until the history file is loaded, allowing a startup file to
override the default value.
i. Tightened up the arithmetic expression parsing to produce better error
messages when presented with invalid operators.
j. Fixed the cross-compilation support to build the signal list at shell
invocation rather than compile time if cross-compiling.
k. Fixed multibyte support for non-gcc compilers (or compilers that do not
allow automatic array variable sizing based on a non-constant value).
l. Several fixes to the code that manages the list of terminated jobs and
their exit statuses, and the list of active and recently-terminated jobs
to avoid pid aliasing/wraparound and allocation errors.
m. Fixed a problem that allowed scripts to die due to SIGINT while waiting
for children, even when started in the background or otherwise ignoring
SIGINT.
n. Fixed a bug that caused shells invoked as -/bin/bash from not being
recognized as login shells.
o. Fixed a problem that caused shells in the background to give the terminal
to a process group other than the foreground shell process group.
p. Fixed a problem with extracting the `varname' in ${#varname}.
q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby
calling functions that may not be called in a signal handler context --
but set a flag and exit afterward (like SIGINT).
r. Changed the brace expansion code to skip over braces that don't begin a
valid matched brace expansion construct.
s. Fixed `typeset' and `declare' to not require that their shell function
operands to be valid shell identifiers.
t. Changed `test' to use access(2) with a temporary uid/euid swap when testing
file attributes and running setuid, and access(2) in most other cases.
u. Changed completion code to not attempt command name completion on a line
consisting solely of whitespace when no_empty_command_completion is set.
v. The `hash' builtin now prints nothing in posix mode when the hash table is
empty, and prints a message to that effect to stdout instead of stderr
when not in posix mode.
w. Fixed a bug in the extended pattern matching code that caused it to fail to
match periods with certain patterns.
x. Fixed a bug that caused the shell to dump core when performing filename
generation in directories with thousands of files.
y. Returned to the original Bourne shell rules for parsing ``: no recursive
parsing of embedded quoted strings or ${...} constructs.
z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only
on the settings of the `functrace' and `errtrace' shell options, rather
than whether or not the shell is in debugging mode.
aa. Fixed a problem with $HOME being converted to ~ in the expansion of
members of the DIRSTACK array.
bb. Fixed a problem with quoted arguments to arithmetic expansions in certain
constructs.
cc. The command word completion code now no longer returns matching directories
while searching $PATH.
dd. Fixed a bug with zero-padding and precision handling in snprintf()
replacement.
ee. Fixed a bug that caused the command substitution code not to take embedded
shell comments into account.
ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an
arithmetic substitution.
gg. Fixed a bug in the prompt expansion code that inappropriately added a
\001 before a \002 under certain circumstances.
hh. Fixed a bug that caused `unset LANG' to not properly reset the locale
(previous versions would set the locale back to what it was when bash
was started rather than the system's "native" locale).
ii. Fixed a bug that could cause file descriptors > 10 to not be closed even
when closed explicitly by a script.
jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting
inside double-quoted command substitutions.
kk. Fixed a bug that could cause core dumps when `return' was executed as the
last element of a pipeline inside a shell function.
ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in
the jobs list.
2. Changes to Readline
a. Fixed a problem that caused segmentation faults when using readline in
callback mode and typing consecutive DEL characters on an empty line.
b. Fixed several redisplay problems with multibyte characters, all having to
do with the different code paths and variable meanings between single-byte
and multibyte character redisplay.
c. Fixed a problem with key sequence translation when presented with the
sequence \M-\C-x.
d. Fixed a problem that prevented the `a' command in vi mode from being
undone and redone properly.
e. Fixed a problem that prevented empty inserts in vi mode from being undone
properly.
f. Fixed a problem that caused readline to initialize with an incorrect idea
of whether or not the terminal can autowrap.
g. Fixed output of key bindings (like bash `bind -p') to honor the setting of
convert-meta and use \e where appropriate.
h. Changed the default filename completion function to call the filename
dequoting function if the directory completion hook isn't set. This means
that any directory completion hooks need to dequote the directory name,
since application-specific hooks need to know how the word was quoted,
even if no other changes are made.
i. Fixed a bug with creating the prompt for a non-interactive search string
when there are non-printing characters in the primary prompt.
j. Fixed a bug that caused prompts with invisible characters to be redrawn
multiple times in a multibyte locale.
k. Fixed a bug that could cause the key sequence scanning code to return the
wrong function.
l. Fixed a problem with the callback interface that caused it to fail when
using multi-character keyboard macros.
m. Fixed a bug that could cause a core dump when an edited history entry was
re-executed under certain conditions.
n. Fixed a bug that caused readline to reference freed memory when attmpting
to display a portion of the prompt.
3. New Features in Bash
a. Changed the parameter pattern replacement functions to not anchor the
pattern at the beginning of the string if doing global replacement - that
combination doesn't make any sense.
b. When running in `word expansion only' mode (--wordexp option), inhibit
process substitution.
c. Loadable builtins now work on MacOS X 10.[34].
d. Shells running in posix mode no longer set $HOME, as POSIX requires.
e. The code that checks for binary files being executed as shell scripts now
checks only for NUL rather than any non-printing character.
f. Quoting the string argument to the [[ command's =~ operator now forces
string matching, as with the other pattern-matching operators.
4. New Features in Readline
a. Calling applications can now set the keyboard timeout to 0, allowing
poll-like behavior.
b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
the default last-ditch startup file.
c. The history file reading functions now allow windows-like \r\n line
terminators.
PKGLOCALEDIR and which install their locale files directly under
${PREFIX}/${PKGLOCALEDIR} and sort the PLIST file entries. From now
on, pkgsrc/mk/plist/plist-locale.awk will automatically handle
transforming the PLIST to refer to the correct locale directory.
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
makeinfo if no native makeinfo executable exists. Honor TEXINFO_REQD
when determining whether the native makeinfo can be used.
* Remove USE_MAKEINFO and replace it with USE_TOOLS+=makeinfo.
* Get rid of all the "split" argument deduction for makeinfo since
the PLIST module already handles varying numbers of split info files
correctly.
NOTE: Platforms that have "makeinfo" in the base system should check
that the makeinfo entries of pkgsrc/mk/tools.${OPSYS}.mk are
correct.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
This is a terse description of the new features added to bash-3.1 since
the release of bash-3.0. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
1. New Features in Bash
a. Bash now understands LC_TIME as a special variable so that time display
tracks the current locale.
b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
as `invisible' variables and may not be unset.
c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't
try to interpret any options at all, as POSIX requires.
d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
e. Fixed vi-mode word completion and glob expansion to perform tilde
expansion.
f. The `**' mathematic exponentiation operator is now right-associative.
g. The `ulimit' builtin has new options: -i (max number of pending signals),
-q (max size of POSIX message queues), and -x (max number of file locks).
h. A bare `%' once again expands to the current job when used as a job
specifier.
i. The `+=' assignment operator (append to the value of a string or array) is
now supported for assignment statements and arguments to builtin commands
that accept assignment statements.
j. BASH_COMMAND now preserves its value when a DEBUG trap is executed.
k. The `gnu_errfmt' option is enabled automatically if the shell is running
in an emacs terminal window.
l. New configuration option: --single-help-strings. Causes long help text
to be written as a single string; intended to ease translation.
m. The COMP_WORDBREAKS variable now causes the list of word break characters
to be emptied when the variable is unset.
n. An unquoted expansion of $* when $IFS is empty now causes the positional
parameters to be concatenated if the expansion doesn't undergo word
splitting.
o. Bash now inherits $_ from the environment if it appears there at startup.
p. New shell option: nocasematch. If non-zero, shell pattern matching ignores
case when used by `case' and `[[' commands.
q. The `printf' builtin takes a new option: -v var. That causes the output
to be placed into var instead of on stdout.
r. By default, the shell no longer reports processes dying from SIGPIPE.
s. Bash now sets the extern variable `environ' to the export environment it
creates, so C library functions that call getenv() (and can't use the
shell-provided replacement) get current values of environment variables.
t. A new configuration option, `--enable-strict-posix-default', which will
build bash to be POSIX conforming by default.
u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
override the true terminal size.
2. New Features in Readline
a. The key sequence sent by the keypad `delete' key is now automatically
bound to delete-char.
b. A negative argument to menu-complete now cycles backward through the
completion list.
c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
readline will bind the terminal special characters to their readline
equivalents when it's called (on by default).
d. New bindable command: vi-rubout. Saves deleted text for possible
reinsertion, as with any vi-mode `text modification' command; `X' is bound
to this in vi command mode.
e. A new external application-controllable variable that allows the LINES
and COLUMNS environment variables to set the window size regardless of
what the kernel returns: rl_prefer_env_winsize
DEFAULT_PATH_VALUE as /usr/bin:/bin:${LOCALBASE}/bin:/usr/local/bin
(Instead of having non-existent default PATH directories.)
Bump PKGREVISION.
This is for PR 25044.
Okayed by bash2 maintainer.
+SHELL.
* Turn PKG_REGISTER_SHELLS into a variable that can be set in the shell
environment so that admins can make a choice when installing from
binary packages.
* PKG_SHELL is now a list of paths, and if the path is relative, then it
is taken to be relative to ${PREFIX}. Convert packages that set
PKG_SHELL to take advantage of this new feature by changing the full
paths to the shells into relative paths.
PKGREVISION due to the added dependency. This should fix PR pkg/30601.
While here, set BUILDLINK_DEPMETHOD of dependent libraries to "build"
when the "static" option is enabled.