update changelog
[platform/upstream/diffutils.git] / NEWS
1 GNU diffutils NEWS                                    -*- outline -*-
2
3 * Noteworthy changes in release 3.3 (2013-03-24) [stable]
4
5 ** New features
6
7   --new-file (-N) and --unidirectional-new-file now allow comparisons to "-".
8   A standard input that's closed acts like a nonexistent file.
9
10   A file name containing spaces, double quotes, backslashes or control
11   characters is now encoded in a diff header as a double-quoted C string
12   literal.  The escape sequences \\, \", \a, \b, \f, \n, \r, \t, \v and
13   \ooo (a three-digit octal number between 0 and 255) are used.
14
15 ** Packaging
16
17   diffutils is now designed to build with Cygwin or MinGW rather than DJGPP.
18   The ms subdirectory has been removed.
19
20
21 * Noteworthy changes in release 3.2 (2011-09-02) [stable]
22
23 ** Changes in behavior
24
25   --ignore-file-name-case now applies at the top level too.
26   For example, "diff dir inIt" might compare "dir/Init" to "inIt".
27
28 ** New features
29
30   diff and sdiff have a new option --ignore-trailing-space (-Z).
31
32 ** Packaging
33
34   The texinfo documentation no longer specifies "front-cover" or "back-cover"
35   texts, so that it may now be included in Debian's "main" section.
36
37
38 * Noteworthy changes in release 3.1 (2011-08-10) [stable]
39
40 ** Bug fixes
41
42   diff no longer reports spurious differences merely because two entries
43   in the same directory have names that compare equal in the current
44   locale, or compare equal because --ignore-file-name-case was given.
45
46 * Noteworthy changes in release 3.0 (2010-05-03) [stable]
47
48 ** Bug fixes
49
50   diff once again prints the required "\ No newline at end of file" line
51   when at least one input lacks a newline-at-EOF and the final hunk plus
52   context-length aligns exactly with the end of the newline-lacking file.
53   [bug introduced between 2.8.7 and 2.9]
54
55 ** Changes in behavior
56
57   In context-style diffs, diff prints a portion of a preceding "function"
58   line for each hunk, with --show-function-line=RE (-F) or
59   --show-c-function (-p).  Now, it trims leading blanks from such lines
60   before extracting a prefix.  This is useful especially when a function
61   line is so far indented that the name itself would be truncated or not
62   included in the limited-width substring that diff appends.
63
64   diff once again reports a difference with the diagnostic
65   "Binary files A and B differ" when at least one of the files
66   appears to be binary.  From 2.8.4 through diffutils-2.9, it printed
67   "Files A and B differ".
68
69
70 * Noteworthy changes in release 2.9 (2010-02-11) [stable]
71
72 ** New features
73
74   New diff option --suppress-blank-empty.
75
76   Bring back support for 'diff -NUM', where NUM is a number,
77   even when conforming to POSIX 1003.1-2001.  This change reverts to
78   the behavior of GNU diff 2.7 and earlier.  This is a change only
79   when conforming to POSIX 1003.1-2001; there is no effect when
80   conforming to older POSIX versions.
81
82   This change is in response to decisions taken in the January 2005
83   Austin Group standardization meeting.  For more details, please see
84   "Utility Syntax Guidelines" in the Minutes of the January 2005
85   Meeting <http://www.opengroup.org/austin/docs/austin_239.html>.
86
87   sdiff now understands '1' and '2' as synonyms for 'l' and 'r'.
88
89 ** Changes in behavior
90
91   sdiff and diff3 now invoke diff, not $(bindir)/diff
92
93 ** Administrivia
94
95   New discussion and bug-reporting address: bug-diffutils@gnu.org
96
97   updated gnulib support
98
99
100 * Noteworthy changes in release 2.8.7 (2004-04-13) [stable]
101
102   Version 2.8.7 contains no user-visible changes.
103
104 User-visible changes in version 2.8.6:
105
106 * New diff3 option --strip-trailing-cr.
107
108 * With -N and -P, inaccessible empty regular files (the kind of files
109   that 'patch' creates to indicate nonexistent backups) are now
110   treated as nonexistent when they are in the 'backup' file position.
111
112 * If multiple SKIP values are given to cmp, e.g., 'cmp -i 10 -i 20',
113   cmp now uses the maximal value instead of the last one.
114
115 * diff now omits the ".000000000" on hosts that do not support
116   fractional time stamps.
117
118 Version 2.8.5 was not publicly released.
119
120 User-visible changes in version 2.8.4:
121
122 * Diff now simply prints "Files A and B differ" instead of "Binary
123   files A and B differ".  The message is output if either A or B
124   appears to be a binary file, and the old wording was misleading
125   because it implied that both files are binary, which is not
126   necessarily the case.
127
128 User-visible changes in version 2.8.3:
129
130 * New locale: en_US.
131
132 User-visible changes in version 2.8.2:
133
134 * New diff and sdiff option:
135   --tabsize=COLUMNS
136 * If --ignore-space-change or --ignore-all-space is also specified,
137   --ignore-blank-lines now considers lines to be empty if they contain
138   only white space.
139 * More platforms now handle multibyte characters correctly when
140   excluding files by name (diff -x and -X).
141 * New locales: hu, pt_BR.
142
143 User-visible changes in version 2.8.1:
144
145 * Documentation fixes.
146
147 User-visible changes in version 2.8:
148
149 * cmp and diff now conform to POSIX 1003.1-2001 (IEEE Std 1003.1-2001)
150   if the underlying system conforms to POSIX and if the _POSIX2_VERSION
151   environment variable is set to 200112.  Conformance removes support
152   for 'diff -NUM', where NUM is a number.  Use -C NUM or -U NUM instead.
153 * cmp now supports trailing operands SKIP1 and SKIP2, like BSD cmp.
154 * cmp -i or --ignore-initial now accepts SKIP1:SKIP2 option value.
155 * New cmp option: -n or --bytes.
156 * cmp's old -c or --print-chars option has been renamed;
157   use -b or --print-bytes instead.
158 * cmp now outputs "byte" rather than "char" outside the POSIX locale.
159 * cmp -l's index column width now adjusts to fit larger (or smaller) files.
160 * cmp -l -s and cmp -s -l are not allowed.  Use cmp -s or cmp -l instead.
161 * diff uses ISO 8601 style time stamps for output times (e.g. "2001-11-23
162   16:44:36.875702460 -0800") unless in the C or POSIX locale and the
163   -c style is specified.
164 * diff's -I and -F options use the regexp syntax of grep, not of Emacs.
165 * diff now accepts multiple context arguments, and uses their maximum value.
166 * New diff and sdiff options:
167   -E  --ignore-tab-expansion
168   --strip-trailing-cr
169 * New diff options:
170   --from-file=FILE, --to-file=FILE
171   --ignore-file-name-case
172   --no-ignore-file-name-case
173 * New diff3 and sdiff option:
174   --diff-program=PROGRAM
175 * The following diff options are still accepted, but are no longer documented.
176   They may be withdrawn in future releases.
177   -h (omit; it has no effect)
178   -H (use --speed-large-files instead)
179   -L (use --label instead)
180   -P (use --unidirectional-new-file instead)
181   --inhibit-hunk-merge (omit; it has no effect)
182 * Recursive diffs now sort file names according to the LC_COLLATE locale
183   category if possible, instead of using native byte comparison.
184 * Recursive diffs now detect and report directory loops.
185 * Diff printf specs can now use the "0" and "'" flags.
186 * The new sdiff interactive command 'ed' precedes each version with a header.
187 * On 64-bit hosts, files larger than 2 GB can be compared.
188 * Some internationalization support has been added, but multibyte locales
189   are still not completely supported yet.
190 * Some diagnostics have been reworded slightly for consistency.
191   Also, 'diff -D FOO' now outputs '/* ! FOO */' instead of '/* not FOO */'.
192 * The 'patch' part of the manual now describes 'patch' version 2.5.4.
193 * Man pages are now distributed and installed.
194 * There is support for DJGPP; see the 'ms' subdirectory and the files
195   m4/dos.m4 and */setmode.*.
196
197
198 User-visible changes in version 2.7:
199
200 * New diff option: --binary (useful only on non-POSIX hosts)
201 * diff -b and -w now ignore line incompleteness; -B no longer does this.
202 * cmp -c now uses locale to decide which output characters to quote.
203 * Help and version messages are reorganized.
204
205
206 User-visible changes in version 2.6:
207
208 * New cmp, diff, diff3, sdiff option: --help
209 * A new heuristic for diff greatly reduces the time needed to compare
210   large input files that contain many differences.
211 * Partly as a result, GNU diff's output is not exactly the same as before.
212   Usually it is a bit smaller, but sometimes it is a bit larger.
213
214
215 User-visible changes in version 2.5:
216
217 * New cmp option: -v --version
218
219
220 User-visible changes in version 2.4:
221
222 * New cmp option: --ignore-initial=BYTES
223 * New diff3 option: -T --initial-tab
224 * New diff option: --line-format=FORMAT
225 * New diff group format specifications:
226   <PRINTF_SPEC>[eflmnEFLMN]
227       A printf spec followed by one of the following letters
228       causes the integer corresponding to that letter to be
229       printed according to the printf specification.
230       E.g. '%5df' prints the number of the first line in the
231       group in the old file using the "%5d" format.
232         e: line number just before the group in old file; equals f - 1
233         f: first line number in group in the old file
234         l: last line number in group in the old file
235         m: line number just after the group in old file; equals l + 1
236         n: number of lines in group in the old file; equals l - f + 1
237         E, F, L, M, N: likewise, for lines in the new file
238   %(A=B?T:E)
239       If A equals B then T else E.  A and B are each either a decimal
240       constant or a single letter interpreted as above.  T and E are
241       arbitrary format strings.  This format spec is equivalent to T if
242       A's value equals B's; otherwise it is equivalent to E.  For
243       example, '%(N=0?no:%dN) line%(N=1?:s)' is equivalent to 'no lines'
244       if N (the number of lines in the group in the new file) is 0,
245       to '1 line' if N is 1, and to '%dN lines' otherwise.
246   %c'C'
247       where C is a single character, stands for the character C.  C may not
248       be a backslash or an apostrophe.  E.g. %c':' stands for a colon.
249   %c'\O'
250       where O is a string of 1, 2, or 3 octal digits, stands for the
251       character with octal code O.  E.g. %c'\0' stands for a null character.
252 * New diff line format specifications:
253   <PRINTF_SPEC>n
254       The line number, printed with <PRINTF_SPEC>.
255       E.g. '%5dn' prints the line number with a "%5d" format.
256   %c'C'
257   %c'\O'
258       The character C, or with octal code O, as above.
259 * Supported <PRINTF_SPEC>s have the same meaning as with printf, but must
260   match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX].
261 * The format spec %0 introduced in version 2.1 has been removed, since it
262   is incompatible with printf specs like %02d.  To represent a null char,
263   use %c'\0' instead.
264 * cmp and diff now conform to POSIX 1003.2-1992 (ISO/IEC 9945-2:1993)
265   if the underlying system conforms to POSIX:
266   - Some messages' wordings are changed in minor ways.
267   - "White space" is now whatever C's 'isspace' says it is.
268   - When comparing directories, if 'diff' finds a file that is not a regular
269     file or a directory, it reports the file's type instead of diffing it.
270     (As usual, it follows symbolic links first.)
271   - When signaled, sdiff exits with the signal's status, not with status 2.
272 * Now portable to hosts where int, long, pointer, etc. are not all the same
273   size.
274 * 'cmp - -' now works like 'diff - -'.
275
276
277 User-visible changes in version 2.3:
278
279 * New diff option: --horizon-lines=lines
280
281
282 User-visible changes in version 2.1:
283
284 * New diff options:
285   --{old,new,unchanged}-line-format='format'
286   --{old,new,unchanged,changed}-group-format='format'
287   -U
288 * New diff3 option:
289   -A --show-all
290 * diff3 -m now defaults to -A, not -E.
291 * diff3 now takes up to three -L or --label options, not just two.
292   If just two options are given, they refer to the first two input files,
293   not the first and third input files.
294 * sdiff and diff -y handle incomplete lines.
295
296
297 User-visible changes in version 2.0:
298
299 * Add sdiff and cmp programs.
300 * Add Texinfo documentation.
301 * Add configure script.
302 * Improve diff performance.
303 * New diff options:
304 -x --exclude
305 -X --exclude-from
306 -P --unidirectional-new-file
307 -W --width
308 -y --side-by-side
309 --left-column
310 --sdiff-merge-assist
311 --suppress-common-lines
312 * diff options renamed:
313 --label renamed from --file-label
314 --forward-ed renamed from --reversed-ed
315 --paginate renamed from --print
316 --entire-new-file renamed from --entire-new-files
317 --new-file renamed from --new-files
318 --all-text removed
319 * New diff3 options:
320 -v --version
321 * Add long-named equivalents for other diff3 options.
322 * diff options -F (--show-function-line) and -I (--ignore-matching-lines)
323   can now be given more than once.
324
325 \f
326
327 Copyright (C) 1993-1994, 1998, 2001-2002, 2004, 2006, 2009-2013 Free Software
328 Foundation, Inc.
329
330 This file is part of GNU Diffutils.
331
332 This program is free software: you can redistribute it and/or modify
333 it under the terms of the GNU General Public License as published by
334 the Free Software Foundation, either version 3 of the License, or
335 (at your option) any later version.
336
337 This program is distributed in the hope that it will be useful,
338 but WITHOUT ANY WARRANTY; without even the implied warranty of
339 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
340 GNU General Public License for more details.
341
342 You should have received a copy of the GNU General Public License
343 along with this program.  If not, see <http://www.gnu.org/licenses/>.