Blame NEWS

Packit 33f14e
GNU diffutils NEWS                                    -*- outline -*-
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.6 (2017-05-21) [stable]
Packit 33f14e
Packit 33f14e
** New features
Packit 33f14e
Packit 33f14e
  When one file is a prefix of the other, cmp now appends the shorter
Packit 33f14e
  file's size to the EOF diagnostic.
Packit 33f14e
Packit 33f14e
** Bug fixes
Packit 33f14e
Packit 33f14e
  Using an invalid regular expression with --ignore-matching-lines=RE (-I)
Packit 33f14e
  no longer causes stack overflow.  Before, with an invocation like the
Packit 33f14e
  following, diff would diagnose the error, but would still proceed to
Packit 33f14e
  blow the stack: diff -Ia -I\\ <(echo) <(echo b)
Packit 33f14e
  [bug introduced in 2.9]
Packit 33f14e
Packit 33f14e
  diff no longer mishandles line numbers exceeding 2**31 on Mingw-w64.
Packit 33f14e
Packit 33f14e
  the ---presume-output-tty (ostensibly test-only) option would cause
Packit 33f14e
  diff --color to read an uninitialized variable
Packit 33f14e
  [bug introduced in 3.4]
Packit 33f14e
Packit 33f14e
** Performance changes
Packit 33f14e
Packit 33f14e
  diff's default algorithm has been tweaked to deal better with larger
Packit 33f14e
  files, reversing some of the changes made in diffutils-3.4.
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.5 (2016-08-20) [stable]
Packit 33f14e
Packit 33f14e
** Bug fixes
Packit 33f14e
Packit 33f14e
  diff3 no longer malfunctions due to use-after-free
Packit 33f14e
  [bug introduced in 3.4]
Packit 33f14e
Packit 33f14e
  diff --color no longer colorizes when TERM=dumb
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.4 (2016-08-08) [stable]
Packit 33f14e
Packit 33f14e
** New features
Packit 33f14e
Packit 33f14e
   diff accepts two new options --color and --palette to generate
Packit 33f14e
   and configure colored output.  --color takes an optional argument
Packit 33f14e
   specifying when to colorize a line: --color=always, --color=auto,
Packit 33f14e
   --color=never.  --palette is used to configure which colors are used.
Packit 33f14e
Packit 33f14e
** Bug fixes
Packit 33f14e
Packit 33f14e
  When binary files differ, diff now exits with status 1 as POSIX requires.
Packit 33f14e
  Formerly it exited with status 2.
Packit 33f14e
Packit 33f14e
  Unless the --ignore-file-name-case option is used, diff now
Packit 33f14e
  considers file names to be equal only if they are byte-for-byte
Packit 33f14e
  equivalent.  This fixes a bug where diff in an English locale might
Packit 33f14e
  consider two Asian file names to be the same merely because they
Packit 33f14e
  contain no English characters.
Packit 33f14e
Packit 33f14e
  diff -B no longer generates incorrect output if the two inputs
Packit 33f14e
  each end with a one-byte incomplete line.
Packit 33f14e
Packit 33f14e
  diff --brief no longer reports a difference for unusual identical files.
Packit 33f14e
  For example, when comparing a file like /proc/cmdline (for which the linux
Packit 33f14e
  kernel reports st_size of 0 even though it is not an empty file) to a
Packit 33f14e
  copy of that file's contents residing on a "normal" file system:
Packit 33f14e
    $ f=/proc/cmdline; cp $f k; diff --brief $f k
Packit 33f14e
    Files /proc/cmdline and k differ
Packit 33f14e
Packit 33f14e
** Performance changes
Packit 33f14e
Packit 33f14e
  diff's default algorithm has been adjusted to output higher-quality
Packit 33f14e
  results at somewhat greater computational cost, as CPUs have gotten
Packit 33f14e
  faster since the algorithm was last tweaked in diffutils-2.6 (1993).
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.3 (2013-03-24) [stable]
Packit 33f14e
Packit 33f14e
** New features
Packit 33f14e
Packit 33f14e
  diff accepts a new option, --no-dereference.  With this option, symbolic
Packit 33f14e
  links are treated specially: as a separate type of file that can compare
Packit 33f14e
  equal only to another symbolic link with the same value.  For example,
Packit 33f14e
  with --no-dereference, two symbolic links compare equal when they have
Packit 33f14e
  the same value, even when that value does not reference a readable file.
Packit 33f14e
Packit 33f14e
  --new-file (-N) and --unidirectional-new-file now allow comparisons to "-".
Packit 33f14e
  A standard input that's closed acts like a nonexistent file.
Packit 33f14e
Packit 33f14e
  A file name containing spaces, double quotes, backslashes or control
Packit 33f14e
  characters is now encoded in a diff header as a double-quoted C string
Packit 33f14e
  literal.  The escape sequences \\, \", \a, \b, \f, \n, \r, \t, \v and
Packit 33f14e
  \ooo (a three-digit octal number between 0 and 255) are used.
Packit 33f14e
Packit 33f14e
** Packaging
Packit 33f14e
Packit 33f14e
  diffutils is now designed to build with Cygwin or MinGW rather than DJGPP.
Packit 33f14e
  The ms subdirectory has been removed.
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.2 (2011-09-02) [stable]
Packit 33f14e
Packit 33f14e
** Changes in behavior
Packit 33f14e
Packit 33f14e
  --ignore-file-name-case now applies at the top level too.
Packit 33f14e
  For example, "diff dir inIt" might compare "dir/Init" to "inIt".
Packit 33f14e
Packit 33f14e
** New features
Packit 33f14e
Packit 33f14e
  diff and sdiff have a new option --ignore-trailing-space (-Z).
Packit 33f14e
Packit 33f14e
** Packaging
Packit 33f14e
Packit 33f14e
  The texinfo documentation no longer specifies "front-cover" or "back-cover"
Packit 33f14e
  texts, so that it may now be included in Debian's "main" section.
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.1 (2011-08-10) [stable]
Packit 33f14e
Packit 33f14e
** Bug fixes
Packit 33f14e
Packit 33f14e
  diff no longer reports spurious differences merely because two entries
Packit 33f14e
  in the same directory have names that compare equal in the current
Packit 33f14e
  locale, or compare equal because --ignore-file-name-case was given.
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 3.0 (2010-05-03) [stable]
Packit 33f14e
Packit 33f14e
** Bug fixes
Packit 33f14e
Packit 33f14e
  diff once again prints the required "\ No newline at end of file" line
Packit 33f14e
  when at least one input lacks a newline-at-EOF and the final hunk plus
Packit 33f14e
  context-length aligns exactly with the end of the newline-lacking file.
Packit 33f14e
  [bug introduced between 2.8.7 and 2.9]
Packit 33f14e
Packit 33f14e
** Changes in behavior
Packit 33f14e
Packit 33f14e
  In context-style diffs, diff prints a portion of a preceding "function"
Packit 33f14e
  line for each hunk, with --show-function-line=RE (-F) or
Packit 33f14e
  --show-c-function (-p).  Now, it trims leading blanks from such lines
Packit 33f14e
  before extracting a prefix.  This is useful especially when a function
Packit 33f14e
  line is so far indented that the name itself would be truncated or not
Packit 33f14e
  included in the limited-width substring that diff appends.
Packit 33f14e
Packit 33f14e
  diff once again reports a difference with the diagnostic
Packit 33f14e
  "Binary files A and B differ" when at least one of the files
Packit 33f14e
  appears to be binary.  From 2.8.4 through diffutils-2.9, it printed
Packit 33f14e
  "Files A and B differ".
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 2.9 (2010-02-11) [stable]
Packit 33f14e
Packit 33f14e
** New features
Packit 33f14e
Packit 33f14e
  New diff option --suppress-blank-empty.
Packit 33f14e
Packit 33f14e
  Bring back support for 'diff -NUM', where NUM is a number,
Packit 33f14e
  even when conforming to POSIX 1003.1-2001.  This change reverts to
Packit 33f14e
  the behavior of GNU diff 2.7 and earlier.  This is a change only
Packit 33f14e
  when conforming to POSIX 1003.1-2001; there is no effect when
Packit 33f14e
  conforming to older POSIX versions.
Packit 33f14e
Packit 33f14e
  This change is in response to decisions taken in the January 2005
Packit 33f14e
  Austin Group standardization meeting.  For more details, please see
Packit 33f14e
  "Utility Syntax Guidelines" in the Minutes of the January 2005
Packit 33f14e
  Meeting <http://www.opengroup.org/austin/docs/austin_239.html>.
Packit 33f14e
Packit 33f14e
  sdiff now understands '1' and '2' as synonyms for 'l' and 'r'.
Packit 33f14e
Packit 33f14e
** Changes in behavior
Packit 33f14e
Packit 33f14e
  sdiff and diff3 now invoke diff, not $(bindir)/diff
Packit 33f14e
Packit 33f14e
** Administrivia
Packit 33f14e
Packit 33f14e
  New discussion and bug-reporting address: bug-diffutils@gnu.org
Packit 33f14e
Packit 33f14e
  updated gnulib support
Packit 33f14e
Packit 33f14e
Packit 33f14e
* Noteworthy changes in release 2.8.7 (2004-04-13) [stable]
Packit 33f14e
Packit 33f14e
  Version 2.8.7 contains no user-visible changes.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8.6:
Packit 33f14e
Packit 33f14e
* New diff3 option --strip-trailing-cr.
Packit 33f14e
Packit 33f14e
* With -N and -P, inaccessible empty regular files (the kind of files
Packit 33f14e
  that 'patch' creates to indicate nonexistent backups) are now
Packit 33f14e
  treated as nonexistent when they are in the 'backup' file position.
Packit 33f14e
Packit 33f14e
* If multiple SKIP values are given to cmp, e.g., 'cmp -i 10 -i 20',
Packit 33f14e
  cmp now uses the maximal value instead of the last one.
Packit 33f14e
Packit 33f14e
* diff now omits the ".000000000" on hosts that do not support
Packit 33f14e
  fractional timestamps.
Packit 33f14e
Packit 33f14e
Version 2.8.5 was not publicly released.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8.4:
Packit 33f14e
Packit 33f14e
* Diff now simply prints "Files A and B differ" instead of "Binary
Packit 33f14e
  files A and B differ".  The message is output if either A or B
Packit 33f14e
  appears to be a binary file, and the old wording was misleading
Packit 33f14e
  because it implied that both files are binary, which is not
Packit 33f14e
  necessarily the case.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8.3:
Packit 33f14e
Packit 33f14e
* New locale: en_US.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8.2:
Packit 33f14e
Packit 33f14e
* New diff and sdiff option:
Packit 33f14e
  --tabsize=COLUMNS
Packit 33f14e
* If --ignore-space-change or --ignore-all-space is also specified,
Packit 33f14e
  --ignore-blank-lines now considers lines to be empty if they contain
Packit 33f14e
  only white space.
Packit 33f14e
* More platforms now handle multibyte characters correctly when
Packit 33f14e
  excluding files by name (diff -x and -X).
Packit 33f14e
* New locales: hu, pt_BR.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8.1:
Packit 33f14e
Packit 33f14e
* Documentation fixes.
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.8:
Packit 33f14e
Packit 33f14e
* cmp and diff now conform to POSIX 1003.1-2001 (IEEE Std 1003.1-2001)
Packit 33f14e
  if the underlying system conforms to POSIX and if the _POSIX2_VERSION
Packit 33f14e
  environment variable is set to 200112.  Conformance removes support
Packit 33f14e
  for 'diff -NUM', where NUM is a number.  Use -C NUM or -U NUM instead.
Packit 33f14e
* cmp now supports trailing operands SKIP1 and SKIP2, like BSD cmp.
Packit 33f14e
* cmp -i or --ignore-initial now accepts SKIP1:SKIP2 option value.
Packit 33f14e
* New cmp option: -n or --bytes.
Packit 33f14e
* cmp's old -c or --print-chars option has been renamed;
Packit 33f14e
  use -b or --print-bytes instead.
Packit 33f14e
* cmp now outputs "byte" rather than "char" outside the POSIX locale.
Packit 33f14e
* cmp -l's index column width now adjusts to fit larger (or smaller) files.
Packit 33f14e
* cmp -l -s and cmp -s -l are not allowed.  Use cmp -s or cmp -l instead.
Packit 33f14e
* diff uses ISO 8601 style timestamps for output times (e.g. "2001-11-23
Packit 33f14e
  16:44:36.875702460 -0800") unless in the C or POSIX locale and the
Packit 33f14e
  -c style is specified.
Packit 33f14e
* diff's -I and -F options use the regexp syntax of grep, not of Emacs.
Packit 33f14e
* diff now accepts multiple context arguments, and uses their maximum value.
Packit 33f14e
* New diff and sdiff options:
Packit 33f14e
  -E  --ignore-tab-expansion
Packit 33f14e
  --strip-trailing-cr
Packit 33f14e
* New diff options:
Packit 33f14e
  --from-file=FILE, --to-file=FILE
Packit 33f14e
  --ignore-file-name-case
Packit 33f14e
  --no-ignore-file-name-case
Packit 33f14e
* New diff3 and sdiff option:
Packit 33f14e
  --diff-program=PROGRAM
Packit 33f14e
* The following diff options are still accepted, but are no longer documented.
Packit 33f14e
  They may be withdrawn in future releases.
Packit 33f14e
  -h (omit; it has no effect)
Packit 33f14e
  -H (use --speed-large-files instead)
Packit 33f14e
  -L (use --label instead)
Packit 33f14e
  -P (use --unidirectional-new-file instead)
Packit 33f14e
  --inhibit-hunk-merge (omit; it has no effect)
Packit 33f14e
* Recursive diffs now sort file names according to the LC_COLLATE locale
Packit 33f14e
  category if possible, instead of using native byte comparison.
Packit 33f14e
* Recursive diffs now detect and report directory loops.
Packit 33f14e
* Diff printf specs can now use the "0" and "'" flags.
Packit 33f14e
* The new sdiff interactive command 'ed' precedes each version with a header.
Packit 33f14e
* On 64-bit hosts, files larger than 2 GB can be compared.
Packit 33f14e
* Some internationalization support has been added, but multibyte locales
Packit 33f14e
  are still not completely supported yet.
Packit 33f14e
* Some diagnostics have been reworded slightly for consistency.
Packit 33f14e
  Also, 'diff -D FOO' now outputs '/* ! FOO */' instead of '/* not FOO */'.
Packit 33f14e
* The 'patch' part of the manual now describes 'patch' version 2.5.4.
Packit 33f14e
* Man pages are now distributed and installed.
Packit 33f14e
* There is support for DJGPP; see the 'ms' subdirectory and the files
Packit 33f14e
  m4/dos.m4 and */setmode.*.
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.7:
Packit 33f14e
Packit 33f14e
* New diff option: --binary (useful only on non-POSIX hosts)
Packit 33f14e
* diff -b and -w now ignore line incompleteness; -B no longer does this.
Packit 33f14e
* cmp -c now uses locale to decide which output characters to quote.
Packit 33f14e
* Help and version messages are reorganized.
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.6:
Packit 33f14e
Packit 33f14e
* New cmp, diff, diff3, sdiff option: --help
Packit 33f14e
* A new heuristic for diff greatly reduces the time needed to compare
Packit 33f14e
  large input files that contain many differences.
Packit 33f14e
* Partly as a result, GNU diff's output is not exactly the same as before.
Packit 33f14e
  Usually it is a bit smaller, but sometimes it is a bit larger.
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.5:
Packit 33f14e
Packit 33f14e
* New cmp option: -v --version
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.4:
Packit 33f14e
Packit 33f14e
* New cmp option: --ignore-initial=BYTES
Packit 33f14e
* New diff3 option: -T --initial-tab
Packit 33f14e
* New diff option: --line-format=FORMAT
Packit 33f14e
* New diff group format specifications:
Packit 33f14e
  <PRINTF_SPEC>[eflmnEFLMN]
Packit 33f14e
      A printf spec followed by one of the following letters
Packit 33f14e
      causes the integer corresponding to that letter to be
Packit 33f14e
      printed according to the printf specification.
Packit 33f14e
      E.g. '%5df' prints the number of the first line in the
Packit 33f14e
      group in the old file using the "%5d" format.
Packit 33f14e
	e: line number just before the group in old file; equals f - 1
Packit 33f14e
	f: first line number in group in the old file
Packit 33f14e
	l: last line number in group in the old file
Packit 33f14e
	m: line number just after the group in old file; equals l + 1
Packit 33f14e
	n: number of lines in group in the old file; equals l - f + 1
Packit 33f14e
	E, F, L, M, N: likewise, for lines in the new file
Packit 33f14e
  %(A=B?T:E)
Packit 33f14e
      If A equals B then T else E.  A and B are each either a decimal
Packit 33f14e
      constant or a single letter interpreted as above.  T and E are
Packit 33f14e
      arbitrary format strings.  This format spec is equivalent to T if
Packit 33f14e
      A's value equals B's; otherwise it is equivalent to E.  For
Packit 33f14e
      example, '%(N=0?no:%dN) line%(N=1?:s)' is equivalent to 'no lines'
Packit 33f14e
      if N (the number of lines in the group in the new file) is 0,
Packit 33f14e
      to '1 line' if N is 1, and to '%dN lines' otherwise.
Packit 33f14e
  %c'C'
Packit 33f14e
      where C is a single character, stands for the character C.  C may not
Packit 33f14e
      be a backslash or an apostrophe.  E.g. %c':' stands for a colon.
Packit 33f14e
  %c'\O'
Packit 33f14e
      where O is a string of 1, 2, or 3 octal digits, stands for the
Packit 33f14e
      character with octal code O.  E.g. %c'\0' stands for a null character.
Packit 33f14e
* New diff line format specifications:
Packit 33f14e
  <PRINTF_SPEC>n
Packit 33f14e
      The line number, printed with <PRINTF_SPEC>.
Packit 33f14e
      E.g. '%5dn' prints the line number with a "%5d" format.
Packit 33f14e
  %c'C'
Packit 33f14e
  %c'\O'
Packit 33f14e
      The character C, or with octal code O, as above.
Packit 33f14e
* Supported <PRINTF_SPEC>s have the same meaning as with printf, but must
Packit 33f14e
  match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX].
Packit 33f14e
* The format spec %0 introduced in version 2.1 has been removed, since it
Packit 33f14e
  is incompatible with printf specs like %02d.  To represent a null char,
Packit 33f14e
  use %c'\0' instead.
Packit 33f14e
* cmp and diff now conform to POSIX 1003.2-1992 (ISO/IEC 9945-2:1993)
Packit 33f14e
  if the underlying system conforms to POSIX:
Packit 33f14e
  - Some messages' wordings are changed in minor ways.
Packit 33f14e
  - "White space" is now whatever C's 'isspace' says it is.
Packit 33f14e
  - When comparing directories, if 'diff' finds a file that is not a regular
Packit 33f14e
    file or a directory, it reports the file's type instead of diffing it.
Packit 33f14e
    (As usual, it follows symbolic links first.)
Packit 33f14e
  - When signaled, sdiff exits with the signal's status, not with status 2.
Packit 33f14e
* Now portable to hosts where int, long, pointer, etc. are not all the same
Packit 33f14e
  size.
Packit 33f14e
* 'cmp - -' now works like 'diff - -'.
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.3:
Packit 33f14e
Packit 33f14e
* New diff option: --horizon-lines=lines
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.1:
Packit 33f14e
Packit 33f14e
* New diff options:
Packit 33f14e
  --{old,new,unchanged}-line-format='format'
Packit 33f14e
  --{old,new,unchanged,changed}-group-format='format'
Packit 33f14e
  -U
Packit 33f14e
* New diff3 option:
Packit 33f14e
  -A --show-all
Packit 33f14e
* diff3 -m now defaults to -A, not -E.
Packit 33f14e
* diff3 now takes up to three -L or --label options, not just two.
Packit 33f14e
  If just two options are given, they refer to the first two input files,
Packit 33f14e
  not the first and third input files.
Packit 33f14e
* sdiff and diff -y handle incomplete lines.
Packit 33f14e
Packit 33f14e
Packit 33f14e
User-visible changes in version 2.0:
Packit 33f14e
Packit 33f14e
* Add sdiff and cmp programs.
Packit 33f14e
* Add Texinfo documentation.
Packit 33f14e
* Add configure script.
Packit 33f14e
* Improve diff performance.
Packit 33f14e
* New diff options:
Packit 33f14e
-x --exclude
Packit 33f14e
-X --exclude-from
Packit 33f14e
-P --unidirectional-new-file
Packit 33f14e
-W --width
Packit 33f14e
-y --side-by-side
Packit 33f14e
--left-column
Packit 33f14e
--sdiff-merge-assist
Packit 33f14e
--suppress-common-lines
Packit 33f14e
* diff options renamed:
Packit 33f14e
--label renamed from --file-label
Packit 33f14e
--forward-ed renamed from --reversed-ed
Packit 33f14e
--paginate renamed from --print
Packit 33f14e
--entire-new-file renamed from --entire-new-files
Packit 33f14e
--new-file renamed from --new-files
Packit 33f14e
--all-text removed
Packit 33f14e
* New diff3 options:
Packit 33f14e
-v --version
Packit 33f14e
* Add long-named equivalents for other diff3 options.
Packit 33f14e
* diff options -F (--show-function-line) and -I (--ignore-matching-lines)
Packit 33f14e
  can now be given more than once.
Packit 33f14e
Packit 33f14e

Packit 33f14e
Packit 33f14e
Copyright (C) 1993-1994, 1998, 2001-2002, 2004, 2006, 2009-2013, 2015-2017 Free
Packit 33f14e
Software Foundation, Inc.
Packit 33f14e
Packit 33f14e
This file is part of GNU Diffutils.
Packit 33f14e
Packit 33f14e
This program is free software: you can redistribute it and/or modify
Packit 33f14e
it under the terms of the GNU General Public License as published by
Packit 33f14e
the Free Software Foundation, either version 3 of the License, or
Packit 33f14e
(at your option) any later version.
Packit 33f14e
Packit 33f14e
This program is distributed in the hope that it will be useful,
Packit 33f14e
but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 33f14e
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 33f14e
GNU General Public License for more details.
Packit 33f14e
Packit 33f14e
You should have received a copy of the GNU General Public License
Packit 33f14e
along with this program.  If not, see <http://www.gnu.org/licenses/>.