* configure.ac (AC_INIT): Bump version number.
[m4/ericb.git] / NEWS
blob7ff76cb08a321216d2f1176da5d225da88d63e98
1 GNU m4 NEWS - User visible changes.
2 Copyright (C) 1992, 1993, 1994, 2004, 2005, 2006 Free Software
3 Foundation, Inc.
5 Version 1.4.5 - ?? 2006, by ???  (CVS version 1.4.4c)
7 * No user-visible changes, yet.
9 Version 1.4.4b - 17 June 2006, by Eric Blake  (CVS version 1.4.4a)
11 * Fix a recursive push_string crashing bug, which affected changequote of
12   three or more characters on some compilers.
13 * Use automake to fix build portability issues.
14 * Fix a recursive m4wrap crashing bug.
15 * Fix a 1 in 2**32 hash crashing bug.
16 * Tracing a macro by name is now persistent, even if the macro is
17   subsequently undefined or redefined.  The traceon and traceoff macros no
18   longer warn about undefined symbols.  This solves a crash when using
19   indir on an undefined macro traced with the -t option, as well as an
20   incorrect result of ifdef.  Furthermore, tracing is no longer transferred
21   with builtins, solving the bug of "m4 -tm4_eval" failing to give trace
22   output on the input "define(`m4_eval',defn(`eval'))m4_eval(1)".
23 * Fix a crash when a macro is undefined while collecting its arguments, by
24   always using the definition that was in effect before argument
25   collection.  This behavior matches the C pre-processor, and means that
26   the sequence "define(`f',`1')f(define(`f',`2'))f" is now documented to
27   result in "12", rather than the previously undocumented "22".
28 * Update the regex engine to fix several bugs.
29 * Fix a potential crash on machines where char is signed.
31 Version 1.4.4 - October 2005, by Gary V. Vaughan
33 * ./configure --infodir=/usr/share/info now works correctly.
34 * When any file named on the command line is missing exit with status 1.
36 Version 1.4.3 - March 2005, by Gary V. Vaughan
38 * DESTDIR installs now work correctly.
39 * Don't segfault with uncompilable regexps to changeword().
40 * Always use \n line-endings for frozen files (fixes a cygwin bug).
41 * Portability fix for systems lacking mkstemp(3).
42 * Approximately 20% speed up in the common case of usage with autoconf.
43 * Supported on QNX 6.3.
45 Version 1.4.2 - August 2004, by Paul Eggert
47 * No user visible changes; portability bug fixes only.
49 Version 1.4.1 - June 2004, by Paul Eggert
51 * maketemp now creates an empty file with the given name, instead of merely
52   returning the name of a nonexistent file.  This closes a security hole.
54 Version 1.4 - October 1994, by Franc,ois Pinard
56 (No user visible changes)
58 Version 1.3 - September 1994, by Franc,ois Pinard
60 * Diversions are created as needed.  Option `-N' is still accepted, but
61 otherwise ignored.  Users should use only negative diversion numbers,
62 instead of high positive numbers, for diverting to nowhere.
64 * Diversions should also work faster.  No temporary files will be needed
65 at all if all diversions taken altogether do not use more than 512K.
67 * Frozen state files may be produced with the `--freeze-state' (-F)
68 option and later brought back through the `--reload-state' (-R) option.
70 Version 1.2 - July 1994, by Franc,ois Pinard
72 * In patsubst(STRING, REGEXP, REPLACEMENT), \& in REPLACEMENT has been
73 changed to represent this part of STRING matched by the whole REGEXP,
74 instead of the whole STRING as before.  \0 does the same, but emits a
75 diagnostic saying it will disappear in some subsequent release.
77 * eval(EXPR) emits a diagnostic if EXPR has suffixed crumb.  The same for
78 other numeric conversions in incr(), decr(), divert(), etc.
80 * `--fatal-warnings' (-E) stops execution at first warning.
82 * `--nesting-limit=LEVEL' (-L LEVEL) sets a limit to macro nesting.
83 It is initially fixed at 250.
85 * `--word-regexp=REGEXP' (-W REGEXP) modifies macro name syntax, like
86 does the new `changeword(REGEXP)' macro.  This feature is experimental,
87 tell me your opinions about it.  You do need --enable-changeword at
88 configure time to get these things.  Do *not* depend on them yet.
90 * Trace output format is scannable by GNU Emacs' next-error function.
92 * Stack overflow is detected and diagnosed on some capable systems.
94 * Various bugs have been corrected, m4 should be more portable.  See the
95 ChangeLog for details.
97 Version 1.1 - November 1993, by Franc,ois Pinard
99 Changes which might affect existing GNU m4 scripts:
101 * Option `-V' has been removed, use `--version' instead.  `--version'
102 writes on standard output instead of standard error, and inhibits any
103 script execution.
105 * `--no-gnu-extensions' has been renamed `--traditional'.
107 * In `eval', `^' used to indicate exponentiation, use `**' instead.
109 * The automatic undiversion which takes place at end of all input is
110 forced into the main output stream.
112 Changes which are unlikely to affect existing scripts:
114 * `--help' prints an usage summary on standard output.  Script execution
115 is then inhibited.
117 * `--prefix-builtins' (-P) prefixes all builtin macros by `m4_'.
119 * Most builtin macros for which arguments are mandatory, called without
120 any arguments, are no more recognized as builtin macros: they are
121 consequently copied verbatim to the output stream.
123 * `define' and `pushdef' are usable with only one argument, they give
124 this argument an empty definition.
126 * `eval' new operators for binary representation handling: `^' for
127 exclusive-or, `~' for the bitwise negation, `<<' and `>>' for shifts.
129 * `eval' recognizes the notation 0bDIGITS for binary numbers and the
130 notation 0rRADIX:DIGITS for numbers in any radix from 1 to 36.
132 Version 1.0.3 - December 1992, by Franc,ois Pinard
134 Changes for the user:
136 * `dnl' outputs a diagnostic if immediately followed by `('.  Usually,
137 `dnl' is followed by newline or whitespace.
139 * `ifelse' accepts without complaining the common idiom of having only
140 one argument.  This is useful for introducing long comments.
142 * `eval' always expresses values as signed, whatever the radix.
144 * M4OPTS environment variable is no longer obeyed.
146 * `--no-warnings' option is renamed `--silent'.
148 * Debug lines use a new format more compatible with GNU standards.
150 * Various bugs have been corrected.  See the ChangeLog for details.
152 Changes for the installer:
154 * GNU m4 now uses an Autoconf-generated configure script, and should be
155 more easily portable in many ways.  (Cray is not supported yet).
157 * `make check' has been made more portable, expect no errors.
159 Changes for the programmer:
161 * Sources have been fully reindented to comply with GNU standards, and
162 cleaned up in many ways.
164 * Sources have been protoized.  Non-ANSI compilers are automatically
165 detected, then sources are unprotoized on the fly before compilation.
167 * GNU m4 uses newer versions of obstack, regex, getopt, etc.
169 Version 1.0 - October 1991, by Rene' Seindal
171 * Uses GNU configure, taken from the gdb distribution.
173 * Uses GNU getopt(), with long option names.
175 * The -Q/+quiet option is added, which suppresses warnings about missing
176 or superflous arguments to built-in macros.
178 * Added default options via the M4OPTS environment variable.
180 * Several minor bugs have been fixed.
182 Version 0.99 - July 1991, by Rene' Seindal
184 * The builtins `incr' and `decr' are now implemented without use of
185 `eval'.
187 * The builtin `indir' is added, to allow for indirect macro calls
188 (allows use of "illegal" macro names).
190 * The debugging and tracing facilities has been enhanced considerably.
191 See the manual for details.
193 * The -tMACRO option is added, marks MACRO for tracing as soon as it
194 is defined.
196 * Builtins are traced after renaming iff they were before.
198 * Named files can now be undiverted.
200 * The -Nnum option can be used to increase the number of divertions
201 available.
203 * Calling changecom without arguments now disables all comment handling.
205 * A bug in `dnl' is fixed.
207 * A bug in the multi-character quoting code is fixed.
209 * Several typos in the manual has been corrected.  More probably persist.
211 Version 0.75 - November 1990, by Rene' Seindal
213 * Implemented search path for include files (-I option and M4PATH
214 environment variable).
216 * Implemented builtin `format' for printf-like formatting.
218 * Implemented builtin `regexp' for searching for regular expressions.
220 * Implemented builtin `patsubst' for substitution with regular
221 expressions.
223 * Implemented builtin `esyscmd', which expands to a shell commands output.
225 * Implemented `__file__' and `__line__' for use in error messages.
227 * Implemented character ranges in `translit'.
229 * Implemented control over debugging output.
231 * Implemented multi-character quotes.
233 * Implemented multi-character comment delimiters.
235 * Changed predefined macro `gnu' to `__gnu__'.
237 * Changed predefined macro `unix' to `__unix__', when the -G option is
238 not used.  With -G, `unix' is still defined.
240 * Added program name to error messages.
242 * Fixed two missing null bytes bugs.
244 Version 0.50 - January 1990, by Rene' Seindal
246 * Initial beta release.
248 Local Variables:
249 fill-column: 75
250 End: