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