Updated: diffutils 3.11
Cygwin diffutils co-Maintainer
Brian.Inglis@SystematicSW.ab.ca
Sun Feb 9 16:59:26 GMT 2025
Diffutils includes four utilities: diff, cmp, diff3 and sdiff.
The diff command compares two files and shows the differences, line by line.
The cmp command shows the offset and line numbers where two files
differ, or can show the characters that differ between the two files.
The diff3 command shows the differences between three files. Diff3 can
be used when two people have made independent changes to a common
original; diff3 can produce a merged file that contains both sets of
changes and warnings about conflicts.
The sdiff command can be used to merge two files interactively.
For more information see the project home page:
https://www.gnu.org/software/diffutils/
The following packages have been upgraded in the Cygwin distribution:
- diffutils 3.11
See below or read /usr/share/doc/diffutils/NEWS after
installation for details of changes since the previous release:
https://git.savannah.gnu.org/cgit/diffutils.git/tree/NEWS
2025-02-02 3.11
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
More information about the Cygwin-announce
mailing list