NEWS   [plain text]

User-visible changes in version 2.7:

* New diff option: --binary (useful only on non-Posix hosts)
* diff -b and -w now ignore line incompleteness; -B no longer does this.
* cmp -c now uses locale to decide which output characters to quote.
* Help and version messages are reorganized.

User-visible changes in version 2.6:

* New cmp, diff, diff3, sdiff option: --help
* A new heuristic for diff greatly reduces the time needed to compare
  large input files that contain many differences.
* Partly as a result, GNU diff's output is not exactly the same as before.
  Usually it is a bit smaller, but sometimes it is a bit larger.

User-visible changes in version 2.5:

* New cmp option: -v --version

User-visible changes in version 2.4:

* New cmp option: --ignore-initial=BYTES
* New diff3 option: -T --initial-tab
* New diff option: --line-format=FORMAT
* New diff group format specifications:
      A printf spec followed by one of the following letters
      causes the integer corresponding to that letter to be
      printed according to the printf specification.
      E.g. `%5df' prints the number of the first line in the
      group in the old file using the "%5d" format.
	e: line number just before the group in old file; equals f - 1
	f: first line number in group in the old file
	l: last line number in group in the old file
	m: line number just after the group in old file; equals l + 1
	n: number of lines in group in the old file; equals l - f + 1
	E, F, L, M, N: likewise, for lines in the new file
      If A equals B then T else E.  A and B are each either a decimal
      constant or a single letter interpreted as above.  T and E are
      arbitrary format strings.  This format spec is equivalent to T if
      A's value equals B's; otherwise it is equivalent to E.  For
      example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no lines'
      if N (the number of lines in the group in the the new file) is 0,
      to `1 line' if N is 1, and to `%dN lines' otherwise.
      where C is a single character, stands for the character C.  C may not
      be a backslash or an apostrophe.  E.g. %c':' stands for a colon.
      where O is a string of 1, 2, or 3 octal digits, stands for the
      character with octal code O.  E.g. %c'\0' stands for a null character.
* New diff line format specifications:
      The line number, printed with <PRINTF_SPEC>.
      E.g. `%5dn' prints the line number with a "%5d" format.
      The character C, or with octal code O, as above.
* Supported <PRINTF_SPEC>s have the same meaning as with printf, but must
  match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX].
* The format spec %0 introduced in version 2.1 has been removed, since it
  is incompatible with printf specs like %02d.  To represent a null char,
  use %c'\0' instead.
* cmp and diff now conform to Posix.2 (ISO/IEC 9945-2:1993)
  if the underlying system conforms to Posix:
  - Some messages' wordings are changed in minor ways.
  - ``White space'' is now whatever C's `isspace' says it is.
  - When comparing directories, if `diff' finds a file that is not a regular
    file or a directory, it reports the file's type instead of diffing it.
    (As usual, it follows symbolic links first.)
  - When signaled, sdiff exits with the signal's status, not with status 2.
* Now portable to hosts where int, long, pointer, etc. are not all the same
* `cmp - -' now works like `diff - -'.

User-visible changes in version 2.3:

* New diff option: --horizon-lines=lines

User-visible changes in version 2.1:

* New diff options:
* New diff3 option:
  -A --show-all
* diff3 -m now defaults to -A, not -E.
* diff3 now takes up to three -L or --label options, not just two.
  If just two options are given, they refer to the first two input files,
  not the first and third input files.
* sdiff and diff -y handle incomplete lines.

User-visible changes in version 2.0:

* Add sdiff and cmp programs.
* Add Texinfo documentation.
* Add configure script.
* Improve diff performance.
* New diff options:
-x --exclude
-X --exclude-from
-P --unidirectional-new-file
-W --width
-y --side-by-side
* diff options renamed:
--label renamed from --file-label
--forward-ed renamed from --reversed-ed
--paginate renamed from --print
--entire-new-file renamed from --entire-new-files
--new-file renamed from --new-files
--all-text removed
* New diff3 options:
-v --version
* Add long-named equivalents for other diff3 options.
* diff options -F (--show-function-line) and -I (--ignore-matching-lines)
  can now be given more than once.