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