coreutils @ Savannah: coreutils-9.10 released [stable]
This is to announce coreutils-9.10, a stable release.
Notable changes include:
- Options in man pages link directly into the full web docs
- timeout(1) now kills the command for all terminating signals
- paste(1) is now multi-byte character aware
- cp(1) fixes an unlikely infinite loop introduced in v9.9
- The multi-call binary is 3.2% smallerThere have also been many bug fixes and other changes
as summarized in the NEWS below.There have been 288 commits by 10 people in the 12 weeks since 9.9.
Thanks to everyone who has contributed!
The following people contributed changes to this release:Bernhard Voelker (1)
Bruno Haible (1)
Christopher Illarionova (2)
Collin Funk (92)
Dmitry V. Levin (1)
Egmont Koblinger (3)
Paul Eggert (14)
Padraig Brady (159)
Sylvestre Ledru (5)
oech3 (10)Padraig [on behalf of the coreutils maintainers] ==================================================================
Here is the GNU coreutils home page:
https://gnu.org/s/coreutils/Here are the compressed sources:
https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.gz (15MB)
https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz (6.3MB)Here are the GPG detached signatures:
https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.gz.sig
https://ftp.gnu.org/gnu/coreutils/coreutils-9.10.tar.xz.sigUse a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.htmlHere are the SHA256 and SHA3-256 checksums:
SHA256 (coreutils-9.10.tar.gz) = 4L3h+2hQlEf8cjzyUX6KjH+kZ2mRm7dJDtNQoukjhWI=
SHA3-256 (coreutils-9.10.tar.gz) = ajdC0yoxKq5sDXyeL9nMXNSZ26du/3QtZCEo4PNZZkA=
SHA256 (coreutils-9.10.tar.xz) = FlNamt8LEANzZOLWEqrT2fTso6NElJztdNEvr0vVHSU=
SHA3-256 (coreutils-9.10.tar.xz) = jUv9Ki9gdL5VuXEhDhGyuR+Md4r2PAnkJ9JCw1xdoWY=Verify the base64 SHA256 checksum with 'cksum -a sha256 --check'
from coreutils-9.2 or OpenBSD's cksum since 2007.Verify the base64 SHA3-256 checksum with 'cksum -a sha3 --check'
from coreutils-9.8.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:gpg --verify coreutils-9.10.tar.xz.sig
The signature should match the fingerprint of the following key:
pub rsa4096/0xDF6FD971306037D9 2011-09-23 [SC] Key fingerprint = 6C37 DC12 121A 5006 BC1D B804 DF6F D971 3060 37D9
uid [ultimate] Pádraig Brady <P@draigBrady.com>
uid [ultimate] Pádraig Brady <pixelbeat@gnu.org>If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to retrieve
or refresh it, and then rerun the 'gpg --verify' command.gpg --locate-external-key P@draigBrady.com
gpg --recv-keys DF6FD971306037D9
wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=coreutils&download=1' | gpg --import -
As a last resort to find the key, you can try the official GNU
keyring:wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify coreutils-9.10.tar.xz.sigThis release is based on the coreutils git repository, available as
git clone https://https.git.savannah.gnu.org/git/coreutils.git
with commit 89b2cd58ac895e3fc0d24d8f10e7e4ba132e7fb6 tagged as v9.10.
For a summary of changes and contributors, see:
https://gitweb.git.savannah.gnu.org/gitweb/?p=coreutils.git;a=shortlog;h=v9.10
or run this command from a git-cloned coreutils directory:
git shortlog v9.9..v9.10
This release was bootstrapped with the following tools:
Autoconf 2.72.101-9513b
Automake 1.18.1
Gnulib 2026-01-24 1c5e0277c2143dd570d8c88f8923eed2afd8e13b
Bison 3.8.2NEWS
* Noteworthy changes in release 9.10 (2026-02-04) [stable]
** Bug fixes
cp, install, and mv no longer enter an infinite loop copying sparse files
with SEEK_HOLE. E.g., this was seen on ext4 when copying sparse files with
extents that are being actively updated, and copy offload is not being used.
[bug introduced in coreutils-9.9]'date' no longer fails with format directives that return an empty string.
[bug introduced in coreutils-9.9]'dd seek=N of=FILE' no longer continues copying, overwriting FILE if it
exists, if ftruncate fails.
[bug introduced in coreutils-9.1]du and ls no longer modify strings returned by getenv.
POSIX says this is not portable.
[bug introduced in fileutils-4.1.6]'fmt' now correctly diagnoses read errors.
Previously fmt generated a generic error for any read error.
[bug introduced in coreutils-9.0]md5sum --text correctly translates CRLF line endings with the MSYS2 runtime.
This also applies to the sha*sum and b2sum utilities.
[This bug was present in "the beginning".]'numfmt' no longer drops custom suffixes from numbers it cannot fully parse.
[bug introduced with numfmt in coreutils-8.21]'tail -f --pid' can no longer exit upon receiving a non terminating signal.
On older Linux systems it may have failed with "Interrupted system call".
[bug introduced in coreutils-7.5]'timeout' will now propagate all terminating signals to the monitored command.
Previously 'timeout' could have exited and left the monitored command running.
[bug introduced with timeout in coreutils-7.0]wc now documents its --debug option, currently used to
indicate the line count acceleration being used.
[bug introduced in coreutils-9.0]When built with `clang -fno-inline`, memory allocation issues are again
handled in a defined manner. Previously programs may have crashed etc.
after a failure to allocate memory.
[bug introduced in coreutils-9.0]** New Features
configure accepts a new --enable-single-binary=hardlinks mode to build the
selected programs as hard links to a multi-call binary called "coreutils".
This augments the existing "symlinks" and "shebangs" modes already
supported by the --enable-single-binary option.'stat' and 'tail' now know about the "guest-memfd" file system type.
stat -f -c%T now reports the file system type,
and tail -f uses polling for this file system.'tail' now accepts the --debug option, which is currently used to
detail the --follow implementation being used.'du' now supports the short option -A corresponding to the existing long
option --apparent-size, for compatibility with FreeBSD.** Changes in behavior
All commands now markup option names in --help and man pages,
with bold attributes, and hyperlinks into the online manual on gnu.org.
The links can be configured with the --enable-manual-url configure option,
and the bold highlighting with --disable-bold-man-page-references.
At runtime all markup can be disabled with the TERM=dumb env var value.'fmt' -w,--width no longer includes '\n' in the width of a line.
I.e., the specified width is interpreted to be an _inclusive_ maximum.'ls --hyperlink' now uses more standard format hyperlinks.
'ESC\' (ST) is now used as a delimiter, instead of '\a' (BEL).'ptx' -t is no longer a no-op, and now sets the default width to 100 columns.
'timeout' now honors ignored signals and will not propagate them. E.g.,
timeout(1) in a shell backgrounded job, will not terminate upon receiving
SIGINT or SIGQUIT, as these are ignored by default in shell background jobs.'timeout -v -s 0' now prints the signal number 0 instead of EXIT.
The multi-call binary now only processes --help or --version options
if it is installed with a name ending with "coreutils". This allows
for more consistent handling of these options with unsupported commands.** Improvements
The multi-call binary built with configure --enable-single-binary
is reduced in size by 3.2% through the more efficient reuse of the cksum
utility by the md5sum and sha*sum utilities.'cksum' now validates its options more consistently.
E.g., `cksum --text --tag` now fails like `cksum --tag --text` already did.'cksum', 'du', and 'wc' now exit promptly upon receiving a write
error, which is significant when processing many input files.csplit, ls, and sort, now handle a more complete set of terminating signals.
'du' now processes directories with 10,000 or more entries up to 9 times
faster on the Lustre file system.'paste' now supports multi-byte --delimiters characters.
'pinky' will now exit immediately upon receiving a write error, which is
significant when reading large plan or project files.'readlink' and 'realpath' will now exit promptly upon receiving a write error,
which is significant when canonicalizing multiple file names longer than
PATH_MAX.'timeout' on Linux will always terminate the child in the case where the
timeout process itself dies, like when it receives a KILL signal for example.** Build-related
Programs now port to C23 platforms that strictly check types when
qualifier-generic functions like strchr are used.'chcon' and 'runcon' stub binaries will be built on systems without
libselinux, when configured using --with-selinux.'kill' and 'uptime' are no longer built by default. These programs can be
built with the --enable-install-program=kill,uptime configure option.
Source: Planet GNU