This is to announce coreutils-8.0.
We're calling this a beta release partly because rm has been
rewritten (now it uses gnulib's fts for its hierarchy traversal),
and partly because there have been so many changes in the
gnulib infrastructure involving file-system primitives.
Thanks to everyone who has been helping, especially Eric Blake,
PÃdraig Brady and OndÅej VaÅÃk.
For a summary of changes and contributors, see:
or run this command from a git-cloned coreutils directory:
git shortlog v7.6..v8.0
To summarize the gnulib-related changes, run these commands
From a git-cloned coreutils directory:
git checkout v8.0
git submodule summary v7.6
Here are the compressed sources:
Here are the GPG detached signatures[*]:
[*] You can use either of the above signature files to verify that
the corresponding file (without the .sig suffix) is intact. First,
be sure to download both the .sig file and the corresponding tarball.
Then, run a command like this:
gpg --verify coreutils-8.0.tar.gz.sig
If that command fails because you don't have the required public key,
then run this command to import it:
gpg --keyserver keys.gnupg.net --recv-keys B9AB9A16
and rerun the `gpg --verify' command.
This release was bootstrapped with the following tools:
* Noteworthy changes in release 8.0 (2009-10-06) [beta]
** Bug fixes
cp --preserve=xattr and --archive now preserve extended attributes even
when the source file doesn't have write access.
[bug introduced in coreutils-7.1]
touch -t [[CC]YY]MMDDhhmm[.ss] now accepts a timestamp string ending in .60,
to accommodate leap seconds.
[the bug dates back to the initial implementation]
ls --color now reverts to the color of a base file type consistently
when the color of a more specific type is disabled.
[bug introduced in coreutils-5.90]
ls -LR exits with status 2, not 0, when it encounters a cycle
ls -is is now consistent with ls -lis in ignoring values returned
from a failed stat/lstat. For example ls -Lis now prints "?", not "0",
for the inode number and allocated size of a dereferenced dangling symlink.
tail --follow --pid now avoids a race condition where data written
just before the process dies might not have been output by tail.
Also, tail no longer delays at all when the specified pid is not live.
[The race was introduced in coreutils-7.5,
and the unnecessary delay was present since textutils-1.22o]
On Solaris 9, many commands would mistakenly treat file/ the same as
file. Now, even on such a system, path resolution obeys the POSIX
rules that a trailing slash ensures that the preceeding name is a
directory or a symlink to a directory.
** Changes in behavior
id no longer prints SELinux " context=..." when the POSIXLY_CORRECT
environment variable is set.
readlink -f now ignores a trailing slash when deciding if the
last component (possibly via a dangling symlink) can be created,
since mkdir will succeed in that case.
** New features
ln now accepts the options --logical (-L) and --physical (-P),
added by POSIX 2008. The default behavior is -P on systems like
GNU/Linux where link(2) creates hard links to symlinks, and -L on
BSD systems where link(2) follows symlinks.
stat: without -f, a command-line argument of "-" now means standard input.
With --file-system (-f), an argument of "-" is now rejected.
If you really must operate on a file named "-", specify it as
"./-" or use "--" to separate options from arguments.
rm: rewrite to use gnulib's fts
This makes rm -rf significantly faster (400-500%) in some pathological
cases, and slightly slower (20%) in at least one pathological case.
rm -r deletes deep hierarchies more efficiently. Before, execution time
was quadratic in the depth of the hierarchy, now it is merely linear.
However, this improvement is not as pronounced as might be expected for
very deep trees, because prior to this change, for any relative name
length longer than 8KiB, rm -r would sacrifice official conformance to
avoid the disproportionate quadratic performance penalty. Leading to
rm -r is now slightly more standards-conformant when operating on
write-protected files with relative names longer than 8KiB.