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