GNU diff utilities - News
diffutils-3.11 released [stable]
Item posted by Jim Meyering <meyering> on Mon 03 Feb 2025 05:09:35 AM UTC.
This is to announce diffutils-3.11, a stable release.
Special thanks to Paul Eggert for doing the vast majority of the work and
to Bruno Haible for his many changes here and his tons of work tending gnulib.
There have been 252 commits by 5 people in the 89 weeks since 3.10.
See the NEWS below for a brief summary.
Thanks to everyone who has contributed!
The following people contributed changes to this release:
Bruno Haible (12)
Collin Funk (3)
Gleb Fotengauer-Malinovskiy (1)
Jim Meyering (26)
Paul Eggert (210)
Jim
[on behalf of the diffutils maintainers]
==================================================================
Here is the GNU diffutils home page:
https://gnu.org/s/diffutils/
Here are the compressed sources:
https://ftp.gnu.org/gnu/diffutils/diffutils-3.11.tar.gz (3.3MB)
https://ftp.gnu.org/gnu/diffutils/diffutils-3.11.tar.xz (1.9MB)
Here are the GPG detached signatures:
https://ftp.gnu.org/gnu/diffutils/diffutils-3.11.tar.gz.sig
https://ftp.gnu.org/gnu/diffutils/diffutils-3.11.tar.xz.sig
Use a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.html
Here are the SHA1 and SHA256 checksums:
bc8791022b18a34c7ee9c3079e414f843de0e1a9 diffutils-3.11.tar.gz
yAo8K/h+JS/n1gW4umv5KNdakLVfO/z3xKTzN+xi/DE= diffutils-3.11.tar.gz
1cf58ac440fc279b363169a17de3662e03bb266d diffutils-3.11.tar.xz
pz7wX+N91YX32HBo5KBjl2BBn4EBOL11xh3aofniEx4= diffutils-3.11.tar.xz
Verify the base64 SHA256 checksum with cksum -a sha256 --check
from coreutils-9.2 or OpenBSD's cksum since 2007.
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 diffutils-3.11.tar.gz.sig
The signature should match the fingerprint of the following key:
pub rsa4096/0x7FD9FCCB000BEEEE 2010-06-14 [SCEA]
Key fingerprint = 155D 3FC5 00C8 3448 6D1E EA67 7FD9 FCCB 000B EEEE
uid [ unknown] Jim Meyering <jim@meyering.net>
uid [ unknown] Jim Meyering <meyering@fb.com>
uid [ unknown] Jim Meyering <meyering@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 jim@meyering.net
gpg --recv-keys 7FD9FCCB000BEEEE
wget -q -O- 'https://savannah.gnu.org/project/release-gpgkeys.php?group=diffutils&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 diffutils-3.11.tar.gz.sig
This release is based on the diffutils git repository, available as
git clone https://git.savannah.gnu.org/git/diffutils.git
with commit 3f326ae3ea7556e35152e13f01a0a4d8b8b4bc70 tagged as v3.11.
For a summary of changes and contributors, see:
https://git.sv.gnu.org/gitweb/?p=diffutils.git;a=shortlog;h=v3.11
or run this command from a git-cloned diffutils directory:
git shortlog v3.10..v3.11
This release was bootstrapped with the following tools:
Autoconf 2.72.47-21cb
Automake 1.17.0.91
Gnulib 2025-01-31 553ab924d2b68d930fae5d3c6396502a57852d23
NEWS
* Noteworthy changes in release 3.11 (2025-02-02) [stable]
** Improvements
Programs now quote file names more consistently in diagnostics.
For example; "cmp 'none of' /etc/passwd" now might output
"cmp: EOF on ‘none of’ which is empty" instead of outputting
"cmp: EOF on none of which is empty". In diagnostic messages
that traditionally omit quotes and where backward compatibility
seems to be important, programs continue to omit quotes unless
a file name contains shell metacharacters, in which case programs
use shell quoting. For example, although diff continues to output
"Only in a: b" as before for most file names, it now outputs
"Only in 'a: b': 'c: d'" instead of "Only in a: b: c: d" because the
file names 'a: b' and 'c: d' contain spaces. For compatibility
with previous practice, diff -c and -u headers continue to quote for
C rather than for the shell.
diff now outputs more information when symbolic links differ, e.g.,
"Symbolic links ‘d/f’ -> ‘a’ and ‘e/f’ -> ‘b’ differ", not just
"Symbolic links d/f and e/f differ". Special files too, e.g.,
"Character special files ‘d/f’ (1, 3) and ‘e/f’ (5, 0) differ", not
"File d/f is a character special file while file e/f is a character
special file".
diff's --ignore-case (-i) and --ignore-file-name-case options now
support multi-byte characters. For example, they treat Greek
capital Δ like small δ when input uses UTF-8.
diff now supports multi-byte characters when treating white space.
In options like --expand-tabs (-t), --ignore-space-change (-b) and
--ignore-tab-expansion (-E), diff now recognizes non-ASCII space
characters and counts columns for non-ASCII characters.
** Bug fixes
cmp -bl no longer omits "M-" from bytes with the high bit set in
single-byte locales like en_US.iso8859-1. This fix causes the
behavior to be locale independent, and to be the same as the
longstanding behavior in the C locale and in locales using UTF-8.
[bug introduced in 2.9]
cmp -i N and -n N no longer fail merely because N is enormous.
[bug present since "the beginning"]
cmp -s no longer mishandles /proc files, for which the Linux kernel
reports a zero size even when nonempty. For example, the following
shell command now outputs nothing, as it should:
cp /proc/cmdline t; cmp -s /proc/cmdline t || echo files differ
[bug present since "the beginning"]
diff -E no longer mishandles some input lines containing '\a', '\b',
'\f', '\r', '\v', or '\0'.
[bug present since 2.8]
diff -ly no longer mishandles non-ASCII input.
[bug#64461 introduced in 2.9]
diff - A/B now works correctly when standard input is a directory,
by reading a file named B in that directory.
[bug present since "the beginning"]
diff no longer suffers from race conditions in some cases
when comparing files in a mutating file system.
[bug present since "the beginning"]
** Release
distribute gzip-compressed tarballs once again
Powered by Savane 3.14-9aa3.
Corresponding source code