coreutils-8.18

This is to announce coreutils-8.18, a stable release.

There have been 72 commits by 11 people in the 13 weeks since 8.17.

Executive summary: 8.18 removes the su program, fixes an 8.17 regression in ls --color and tweaks sort's memory constraints. All other fixes are for old (present since "the beginning") and relatively obscure bugs.

See the NEWS below for a brief summary.

Thanks to everyone who has contributed! The following people contributed changes to this release:

[*] Use a .sig file 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:

If that command fails because you don't have the required public key, then run this command to import it:

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:

Autoconf 2.69.7-e8d3

Automake 1.12a

Gnulib v0.0-7572-g39cedf6

Bison 2.5

NEWS -- noteworthy changes in coreutils-8.18

Bug fixes

cksum now prints checksums atomically so that concurrent processes will not intersperse their output. [the bug dates back to the initial implementation]

date -d "$(printf '\xb0')" would print 00:00:00 with today's date rather than diagnosing the invalid input. Now it reports this: date: invalid date '\260' [This bug was present in "the beginning".]

df no longer outputs control characters present in the mount point name. Such characters are replaced with '?', so for example, scripts consuming lines output by df, can work reliably. [This bug was present in "the beginning".]

df --total now exits with an appropriate diagnostic and error code, when file system --type options do not lead to a processed file system. [This bug dates back to when --total was added in coreutils-7.0]

head --lines=-N (-n-N) now resets the read pointer of a seekable input file. This means that "head -n-3" no longer consumes all of its input, and lines not output by head may be processed by other programs. For example, this command now prints the final line, 2, while before it would print nothing: seq 2 > k; (head -n-1 > /dev/null; cat) < k [This bug was present in "the beginning".]

split now ensures it doesn't overwrite the input file with generated output. [the bug dates back to the initial implementation]

stat and df now report the correct file system usage, in all situations on GNU/Linux, by correctly determining the block size. [df bug since coreutils-5.0.91, stat bug since the initial implementation]

tail -f no longer tries to use inotify on AUFS or PanFS file systems. [you might say this was introduced in coreutils-7.5, along with inotify support, but even now, its magic number isn't in the usual place.]

New features

stat -f recognizes the new remote file system types: aufs, panfs.

Changes in behavior

su: this program has been removed. We stopped installing "su" by default with the release of coreutils-6.9.90 on 2007-12-01. Now, that the util-linux package has the union of the Suse and Fedora patches as well as enough support to build on the Hurd, we no longer have any reason to include it here.

Improvements

sort avoids redundant processing in the presence of inaccessible inputs, or unwritable output. Sort now diagnoses certain errors at start-up, rather than after potentially expensive processing.

sort now allocates no more than 75% of physical memory by default, to better share system resources, and thus operate more efficiently. [The default max memory usage changed from 50% to 100% in coreutils-8.16]