Bump to m4 1.4.19
[platform/upstream/m4.git] / NEWS
1 GNU M4 NEWS - User visible changes.
2
3 * Noteworthy changes in release 1.4.19 (2021-05-28) [stable]
4
5 ** A number of portability improvements inherited from gnulib, including
6    the ability to perform stack overflow detection on more platforms
7    without linking to GNU libsigsegv.
8
9 * Noteworthy changes in release 1.4.18d (2021-05-11) [beta]
10
11 ** A number of portability improvements inherited from gnulib.
12
13
14 * Noteworthy changes in release 1.4.18b (2021-05-07) [beta]
15
16 ** The symbol hash table now defaults to 65537 buckets instead of 509, as
17    modern systems have enough memory to benefit from fewer hash collisions
18    by default.
19
20 ** Introduce the use of gettext, with the immediate benefit of nicer
21    UTF-8 author names.  Over time, more translations of program messages
22    will become available.
23
24 ** A number of portability improvements inherited from gnulib.
25
26
27 * Noteworthy changes in release 1.4.18 (2016-12-31) [stable]
28
29 ** Diagnose --word-regexp as unsupported if it was not configured.
30
31 ** Preliminary support for OS/2.
32
33 ** A number of portability improvements inherited from gnulib.
34
35
36 * Noteworthy changes in release 1.4.17 (2013-09-22) [stable]
37
38 ** Fix compilation with newer glibc headers.
39
40 ** Fix a failure with diverting large amounts of text on mingw (does
41    not affect platforms that can rename an open file).
42
43 ** A number of portability improvements inherited from gnulib.
44
45
46 * Noteworthy changes in release 1.4.16 (2011-03-01) [stable]
47
48 ** Fix regressions in the `index' builtin.  On glibc platforms, this
49    avoids false positives from a strstr bug in glibc 2.9 through 2.12;
50    on many other platforms, it fixes two separate regressions, a false
51    positive introduced in 1.4.11 and a false negative in 1.4.15.
52
53 ** A number of portability improvements inherited from gnulib.
54
55
56 * Noteworthy changes in release 1.4.15 (2010-08-31) [stable]
57
58 ** Fix regression introduced in 1.4.9b where the `format' builtin could
59    crash on an invalid format string.
60
61 ** Fix compilation against newer glibc, and on AIX 7.1BETA.
62
63 ** A number of portability improvements inherited from gnulib.
64
65
66 * Noteworthy changes in Version 1.4.14 (2010-02-24) [stable]
67   Released by Eric Blake, based on git version 1.4.13.*
68
69 ** Fix regression introduced in 1.4.12 where executing with stdout closed
70    could crash m4 on exit on some platforms.
71
72 ** Fix regressions introduced in 1.4.13 in the `esyscmd' builtin, where
73    closed file descriptors could interfere with child execution, and where
74    a child status of 127 made m4 print a spurious message to stderr.
75
76 ** Fix a security hole in 'make dist', present since at least M4 1.4, that
77    could affect anybody attempting to redistribute modified sources (see
78    Automake CVE-2009-4029).
79
80 ** A number of portability improvements inherited from gnulib.
81
82 * Noteworthy changes in Version 1.4.13 (2009-04-01) [stable]
83   Released by Eric Blake, based on git version 1.4.12.*
84
85 ** The manual is now distributed under the terms of FDL 1.3.
86
87 ** The `divert' and `undivert' builtins have been made more efficient
88    when using temporary files for large diversions.
89
90 ** The `translit' builtin has been made more efficient when the second
91    argument is short.
92
93 ** The input engine has been optimized for faster processing.
94
95 ** The command line option `--debugfile', introduced in 1.4.7, now
96    treats its argument as optional, in order to allow setting the debug
97    output back to stderr when used without an argument; and order is now
98    significant with respect to command line files.  You must therefore use
99    `m4 --debugfile=trace file', not `m4 file --debugfile trace'.  This
100    change does not affect the deprecated `-o'/`--error-output' option.
101
102 ** The `syscmd' and `esyscmd' builtins can be configured to use an
103    alternate shell, via the new `configure' option `--with-syscmd-shell'.
104
105 ** A number of portability improvements inherited from gnulib.
106
107 * Noteworthy changes in Version 1.4.12 (2008-10-10) [stable]
108   Released by Eric Blake, based on git version 1.4.11.*
109
110 ** Fix regression introduced in 1.4.4b where using `traceon' could delete
111    a macro.  This was most noticeable with `traceon(`traceon')', but
112    would also happen in cases such as `foo(traceon(`foo'))'.
113
114 ** Fix regression introduced in 1.4.7 where `m4 -N9' died with an assertion
115    failure.
116
117 ** Fix regression introduced in 1.4.11 where `defn' died with an assertion
118    failure on a traced but undefined macro.
119
120 ** New `-g'/`--gnu' command-line option overrides `-G'/`--traditional'.
121    For now, the environment variable POSIXLY_CORRECT has no effect on M4
122    behavior; but a future release of M4 will behave as though --traditional
123    is implied if POSIXLY_CORRECT is set (this future change is necessary,
124    because in the current release, there is no way to disable GNU
125    extensions that conflict with POSIX without the use of a non-POSIX
126    command-line argument).  Clients of M4 that want to use GNU extensions,
127    even when POSIXLY_CORRECT is set, should start using the -g command-line
128    argument, even though it is currently a no-op if -G did not appear
129    earlier in the command line, so that the client will not break in the
130    face of an upgraded m4 and a POSIXLY_CORRECT execution environment.
131
132 ** The `-L'/`--nesting-limit' command-line option now defaults to 0 for
133    unlimited on platforms that can detect and deal with stack overflow.  On
134    systems that lack alternate stack support, such as Cygwin, and on
135    systems that do not obey the POSIX semantics for distinguishing stack
136    overflow from other exceptions, such as Linux, you can optionally
137    install the libsigsegv library (version 2.6 or newer recommended) to
138    enhance m4's ability to accurately report stack overflow:
139    https://www.gnu.org/software/libsigsegv/
140
141 ** A number of portability improvements inherited from gnulib.
142
143 * Noteworthy changes in Version 1.4.11 (2008-04-02) [stable]
144   Released by Eric Blake, based on git version 1.4.10a
145
146 ** Security fixes for the -F option, for bugs present since -F was
147    introduced in 1.3: Avoid core dump with 'm4 -F file -t undefined', and
148    avoid arbitrary code execution with certain file names.
149
150 ** Fix regression introduced in 1.4.9b in the `divert' builtin when more
151    than 512 kibibytes are saved in diversions on platforms like NetBSD
152    or darwin where fopen(name,"a+") seeks to the end of the file.
153
154 ** The output of the `maketemp' and `mkstemp' builtins is now quoted if a
155    file was created.  This is a minor security fix, because it was possible
156    (although rather unlikely) that an unquoted string could match an
157    existing macro name, such that use of the `mkstemp' output would trigger
158    inadvertent macro expansion and operate on the wrong file name.
159
160 ** Enhance the `defn' builtin to support concatenation of multiple text
161    arguments, as required by POSIX.  However, at this time, it is not
162    possible to concatenate a builtin macro with anything else; a warning is
163    now issued if this is attempted, although a future version of M4 may
164    lift this restriction to match other implementations.
165
166 ** Enhance the `format' builtin to parse all C99 floating point numbers,
167    even on platforms where strtod(3) is buggy, although the replacement
168    function does have the known issue of rounding errors when parsing
169    some decimal floating point values.  This fixes testsuite failures
170    introduced in 1.4.9b.
171
172 ** Enhance the `index' builtin to guarantee linear behavior, in spite of
173    the surprisingly large number of systems with a brain-dead quadratic
174    strstr(3).
175
176 ** A number of portability improvements inherited from gnulib.
177
178 * Noteworthy changes in Version 1.4.10 (2007-07-09) [stable]
179   Released by Eric Blake, based on CVS version 1.4.9c
180
181 ** Upgrade from GPL version 2 to GPL version 3 or later.
182
183 ** A number of portability improvements inherited from gnulib.
184
185 ** Avoid undefined behavior introduced in 1.4.9b in the `format' builtin
186    when handling %c.  However, this area of code has never been documented,
187    and currently does not match the POSIX behavior of printf(1), so it may
188    have further changes in the next version.
189
190 * Noteworthy changes in Version 1.4.9b (2007-05-29) [beta]
191   Released by Eric Blake, based on CVS version 1.4.9a
192
193 ** Fix regression introduced in 1.4.9 in the `eval' builtin when performing
194    division.
195
196 ** Fix regression introduced in 1.4.8 in the `-F' option that made it
197    impossible to freeze more than 512 kibibytes of diverted text.
198
199 ** The synclines option `-s' no longer generates sync lines in the middle of
200    multiline comments or quoted strings.
201
202 ** Work around a number of corner-case POSIX compliance bugs in various
203    broken stdio libraries.  In particular, the `syscmd' builtin behaves
204    more predictably when stdin is seekable.
205
206 ** The `format' builtin now understands formats such as %a, %A, and %'hhd,
207    and works around a number of platform printf bugs.  Furthermore, the
208    sequence format(%*.*d,-1,-1,1) no longer outputs random data.  However,
209    some non-compliant platforms such as mingw still have known bugs in
210    strtod that may cause testsuite failures.
211
212 ** The testsuite is improved to also run gnulib portability tests for the
213    features that M4 imports from gnulib.
214
215 * Noteworthy changes in Version 1.4.9 (2007-03-23) [stable]
216   Released by Eric Blake, based on CVS version 1.4.8c
217
218 ** Minor documentation and portability cleanups.
219
220 * Noteworthy changes in Version 1.4.8b (2007-02-24) [beta]
221   Released by Eric Blake, based on CVS version 1.4.8a
222
223 ** Fix a regression introduced in 1.4.8 that made m4 unable to process
224    files larger than 2GiB on some platforms.
225
226 ** Fix a regression introduced in 1.4.8 that made m4 dump core when
227    invoked as 'm4 -- file'.
228
229 ** The `eval' builtin now follows C precedence rules.  Additionally, the
230    short-circuit operators correctly short-circuit division by zero.  The
231    previously undocumented alias of '=' meaning '==' in eval now triggers a
232    deprecation warning, so that a future version of M4 can implement a form
233    of variable assignment as an extension.
234
235 ** The `include' builtin now affects exit status on failure, as required by
236    POSIX.  Use `sinclude' if you need a successful exit status.
237
238 ** The `-E'/`--fatal-warnings' command-line option now has two levels.  When
239    specified only once, warnings affect exit status, but execution
240    continues, so that you can see all warnings instead of fixing them one
241    at a time.  To achieve 1.4.8 behavior, where the first warning
242    immediately exits, specify -E twice on the command line.
243
244 ** A new `--warn-macro-sequence' command-line option allows detection of
245    sequences in `define' and `pushdef' definitions that match an optional
246    regular expression.  The default regular expression is
247    `\$\({[^}]*}\|[0-9][0-9]+\)', corresponding to the sequences that might
248    not behave correctly when upgrading to the eventual M4 2.0.  By default,
249    M4 2.0 will follow the POSIX requirement that a macro definition
250    containing `$11' must expand to the first argument concatenated with 1,
251    rather than the eleventh argument; and will take advantage of the POSIX
252    wording that allows implementations to treat `${11}' as the eleventh
253    argument instead of literal text.  Be aware that Autoconf 2.61 will not
254    work with this option enabled with the default regular expression; but
255    Autoconf 2.62 will be compatible with this option.
256
257 ** Improved portability to platforms such as BSD/OS and AIX.
258
259 * Noteworthy changes in Version 1.4.8 (2006-11-20) [stable]
260   Released by Eric Blake, based on CVS version 1.4.7a
261
262 ** The `divert' macro and `-H'/`--hashsize' command line option no longer
263    cause a core dump when handed extra large values.  Also, `divert' now
264    uses memory proportional to the number of diversions in use, rather than
265    to the maximum diversion number encountered, so that large diversion
266    numbers are less likely to exhaust system memory; and is no longer
267    limited by the maximum number of file descriptors.
268
269 ** The `--help' and `--version' command line options now consistently
270    override all earlier options.  For example, `m4 --debugfile=trace
271    --help' now no longer accidentally creates an empty file `trace'.
272
273 ** The `-L'/`--nesting-limit' command line option can now be set to 0
274    to remove the default limit of 1024.  However, it is still possible that
275    heavily nested input can cause abrupt program termination due to stack
276    overflow.
277
278 ** Problems encountered when writing to standard error, such as with the
279    `errprint' macro, now always cause a non-zero exit status.
280
281 ** Warnings and errors issued during macro expansion are now consistently
282    reported at the line where the macro name was detected, rather than
283    where the close parenthesis resides.  Text wrapped by `m4wrap' now
284    remembers the location that was in effect when m4wrap was invoked,
285    rather than changing to line 0 and the empty string for a file.  The
286    macros `__line__' and `__file__' now work correctly even as the last
287    token in an included file.
288
289 ** The `builtin' and `indir' macros now transparently handle builtin
290    tokens generated by `defn'.
291
292 ** When diversions created by the `divert' macro collect enough text that
293    M4 must use temporary files, the environment variable $TMPDIR is now
294    consulted, and a better effort is made to clean up those files in the
295    event of a fatal signal.
296
297 ** The `mkstemp' builtin is added with the same GNU semantics as `maketemp',
298    based on the recommendation of POSIX to deprecate the POSIX semantics of
299    `maketemp' as inherently insecure.  In GNU mode (no -G supplied on the
300    command line), `maketemp' silently retains the secure GNU semantics, but
301    a future release of M4 will change this to emit a warning.  In
302    traditional mode (m4 -G), `maketemp' now uses the POSIX-mandated
303    insecure semantics, and issues a warning that you should convert your
304    script to use `mkstemp' instead.  Additionally, `mkstemp' and `maketemp'
305    are now well-defined even if the template argument does not end in six
306    `X' characters.
307
308 ** The manual has been improved, including a new section on a composite
309    macro `foreach'.
310
311 ** The `changecom' and `changequote' macros now treat an empty second
312    argument the same as if it were missing, rather than using the empty
313    string and making it impossible to end a comment or quote.
314
315 ** The `translit' macro now operates in linear instead of quadratic time,
316    and is now eight-bit clean.
317
318 ** The `-D', `-U', `-s', and `-t' command line options now take effect
319    after any files encountered earlier on the command line, rather than up
320    front, as is done in traditional implementations and required by POSIX.
321
322 * Noteworthy changes in Version 1.4.7 (2006-09-25) [stable]
323   Released by Eric Blake, based on CVS version 1.4.6a
324
325 ** Fix regression from 1.4.5 in handling a file that ends in a macro
326    expansion without arguments instead of a newline.
327
328 ** The define and pushdef macros now warn when the first argument is not
329    a string, rather than silently doing nothing.
330
331 ** Standard input can now be read more than once, as in 'm4 - file -', and
332    is not closed until all wrapped text is handled.  This makes a
333    difference when stdin is not a regular file, and also fixes bugs when
334    using the syscmd or esyscmd macros from wrapped text.
335
336 ** When standard input is a seekable file, the m4exit, syscmd, and esyscmd
337    macros now restore the current position to the next unread byte rather
338    than discarding an arbitrary amount of buffered data.
339
340 ** SysV command-line compatibility is no longer a goal of GNU M4; the
341    focus will be instead on POSIX compatibility.  This release continues to
342    support previous usage, but adds warnings in areas which will allow a
343    future version of GNU M4 to use its own extensions without being tied to
344    the SysV command line interface.
345
346 ** The no-op compatibility command line options -B, -N, -S, -T, and
347    --diversions may be withdrawn or assigned new meanings in future
348    releases, so they now issue a warning if used.
349
350 ** A new command line option -i replaces the compatibility -e as the
351    short spelling of --interactive, for consistency with other GNU tools; a
352    warning is issued if the old spelling is used, and it may be assigned
353    new meaning in future releases.
354
355 ** A new command line option --debugfile replaces the options -o and
356    --error-output as the preferred spelling.  The old options were
357    misleading in their names and inconsistent with other GNU tools; they
358    are still silently accepted, but no longer documented in --help, and may
359    be assigned new meanings in future releases.
360
361 * Noteworthy changes in Version 1.4.6 (2006-08-25) [stable]
362   Released by Eric Blake, based on CVS version 1.4.5a
363
364 ** Fix buffer overruns in regexp and patsubst macros when handed a trailing
365    backslash in the replacement text, or when handling \n substitutions
366    beyond the number of \(\) groups.
367
368 ** Fix memory leak in regexp, patsubst, and changeword macros.
369
370 ** The format macro now understands %F, %g, and %G.
371
372 ** When loading frozen files, m4 now exits with status 63 if version
373    mismatch is detected.
374
375 ** Fix bugs that occurred when invoked with stdout or stderr closed,
376    and detect write failures to stdout or to the target of the debugfile
377    macro.  In particular, the syscmd and esyscmd macros can no longer
378    interfere with the debug stream or diversions.
379
380 ** The m4exit macro now converts values outside the range 0-255 to 1.
381
382 ** It is now an error if a command-line input file ends in the middle of a
383    comment, matching the behavior of mid-string and mid-argument
384    collection.
385
386 ** The dnl macro now warns if end of file is encountered instead of a
387    newline.
388
389 ** The error message when end of file is encountered now uses the file and
390    line where the dangling construct started, rather than `NONE:0:'.
391
392 ** The debugmode and __file__ macros, and the -s/--synclines option, now
393    show what directory a file was found in when the -I/--include option or
394    M4PATH variable had an effect.
395
396 ** The changequote and changecom macros now work with 8-bit characters, and
397    quotes and comments that begin with `(' are properly recognized
398    following a word.
399
400 ** The new macro __program__ is added, which allows the input file to issue
401    an error message that resembles messages from m4.  Warning and error
402    messages have been reformatted to comply with GNU Coding Standards.
403
404 ** The errprint, m4wrap, and shift macros are now recognized only with
405    arguments.
406
407 ** The index, substr, translit, regexp, and patsubst macros now produce
408    output when given only one argument, but still warn about a missing
409    second argument.
410
411 ** The patsubst macro now reliably finds zero-length matches at the end
412    of a string.
413
414 * Noteworthy changes in Version 1.4.5 (2006-07-15) [stable]
415   Released by Eric Blake, based on CVS version 1.4.4c
416
417 ** Fix sysval on BeOS, OS/2, and other systems that store exit status
418    in the low-order byte.  Additionally, on Unix platforms, if syscmd was
419    terminated by a signal, sysval now displays the signal number shifted
420    left by eight bits, to match traditional m4 implementations.
421
422 ** The maketemp macro is no longer subject to platform limitations (such as
423    26 or 32 max files from a given template).
424
425 ** Frozen files now require that the first directive be V (version), to
426    better diagnose version mismatch.  Additionally, if the F directive
427    (builtin function) names an unknown builtin that existed in the m4 that
428    froze the file but not in the current m4 (for example, changeword), the
429    warning is deferred until an attempt is made to actually use the
430    builtin.  This allows downgrading from beta m4-1.4o to stable m4-1.4.5
431    without breaking autoconf.
432
433 ** The format and indir macros are now recognized only with arguments.
434
435 ** The eval macro no longer crashes on x86 architectures when dividing the
436    minimum integer by -1.
437
438 ** On systems with ecvt and fcvt, format no longer truncates trailing
439    zeroes on integers printed with %.0f.  On systems without these
440    functions, format is no longer subject to a buffer overflow that
441    permitted arbitrary code execution.
442
443 ** On native Windows builds, the macro __windows__ is provided instead of
444    __unix__.  Likewise, on OS/2 builds, the macro __os2__ is provided.
445    This allows input files to determine when syscmd might behave
446    differently.
447
448 ** Fix bug in 1.4.3 patch to use \n line-endings that did not work for
449    cygwin.
450
451 ** When given the empty string or 0, undivert is now documented as a no-op
452    rather than closing stdout, warning about a non-existent file, or trying
453    to read a directory as a file.
454
455 ** Many documentation improvements.  Also, the manual is now distributed
456    under FDL 1.2, rather than a stricter verbatim-only license.
457
458 ** Raise the -L (--nesting-limit) command line option limit from 250 to
459    1024.
460
461 ** The decr, incr, divert, m4exit, and substr macros treat an empty number
462    as 0, issue a warning, and expand as normal; rather than issuing an
463    error and expanding to the empty string.
464
465 ** The eval macro now treats an empty radix argument as 10, handles radix 1,
466    and treats the width argument as number of digits excluding the sign,
467    for compatibility with other m4 implementations.
468
469 ** The ifdef, divert, m4exit, substr, and translit macros now correctly
470    ignore extra arguments.
471
472 ** The popdef and undefine macros now correctly accept multiple arguments.
473
474 ** Although changeword is on its last leg, if enabled, it now reverts to the
475    default (faster) regexp when passed the empty string.
476
477 ** The regexp and substr macros now warn and ignore a trailing backslash in
478    the replacement, and warn on \n for n larger than the number of
479    sub-expressions in the regexp.
480
481 * Noteworthy changes in Version 1.4.4b (2006-06-17) [beta]
482   Released by Eric Blake, based on CVS version 1.4.4a
483
484 ** Fix a recursive push_string crashing bug, which affected changequote of
485    three or more characters on some compilers.
486
487 ** Use automake to fix build portability issues.
488
489 ** Fix a recursive m4wrap crashing bug.
490
491 ** Fix a 1 in 2**32 hash crashing bug.
492
493 ** Tracing a macro by name is now persistent, even if the macro is
494    subsequently undefined or redefined.  The traceon and traceoff macros no
495    longer warn about undefined symbols.  This solves a crash when using
496    indir on an undefined macro traced with the -t option, as well as an
497    incorrect result of ifdef.  Furthermore, tracing is no longer
498    transferred with builtins, solving the bug of "m4 -tm4_eval" failing to
499    give trace output on the input
500    "define(`m4_eval',defn(`eval'))m4_eval(1)".
501
502 ** Fix a crash when a macro is undefined while collecting its arguments, by
503    always using the definition that was in effect before argument
504    collection.  This behavior matches the C pre-processor, and means that
505    the sequence "define(`f',`1')f(define(`f',`2'))f" is now documented to
506    result in "12", rather than the previously undocumented "22".
507
508 ** Update the regex engine to fix several bugs.
509
510 ** Fix a potential crash on machines where char is signed.
511
512 * Noteworthy changes in Version 1.4.4 (Oct 2005) [stable]
513   Released by Gary V. Vaughan
514
515 ** ./configure --infodir=/usr/share/info now works correctly.
516
517 ** When any file named on the command line is missing exit with status 1.
518
519 * Noteworthy changes in Version 1.4.3 (Mar 2005) [stable]
520   Released by Gary V. Vaughan
521
522 ** DESTDIR installs now work correctly.
523
524 ** Don't segfault with uncompilable regexps to changeword().
525
526 ** Always use \n line-endings for frozen files (fixes a Windows bug).
527
528 ** Portability fix for systems lacking mkstemp(3).
529
530 ** Approximately 20% speed up in the common case of usage with autoconf.
531
532 ** Supported on QNX 6.3.
533
534 * Noteworthy changes in Version 1.4.2 (Aug 2004) [stable]
535   Released by Paul Eggert
536
537 ** No user visible changes; portability bug fixes only.
538
539 * Noteworthy changes in Version 1.4.1 (Jun 2004) [stable]
540   Released by Paul Eggert
541
542 ** maketemp now creates an empty file with the given name, instead of merely
543    returning the name of a nonexistent file.  This closes a security hole.
544
545 * Noteworthy changes in Version 1.4 (Oct 1994) [stable]
546   Released by Franc,ois Pinard
547
548 ** (No user visible changes)
549
550 \f
551 Version 1.3 - September 1994, by Franc,ois Pinard
552
553 * Diversions are created as needed.  Option `-N' is still accepted, but
554 otherwise ignored.  Users should use only negative diversion numbers,
555 instead of high positive numbers, for diverting to nowhere.
556
557 * Diversions should also work faster.  No temporary files will be needed
558 at all if all diversions taken altogether do not use more than 512K.
559
560 * Frozen state files may be produced with the `--freeze-state' (-F)
561 option and later brought back through the `--reload-state' (-R) option.
562 \f
563 Version 1.2 - July 1994, by Franc,ois Pinard
564
565 * In patsubst(STRING, REGEXP, REPLACEMENT), \& in REPLACEMENT has been
566 changed to represent this part of STRING matched by the whole REGEXP,
567 instead of the whole STRING as before.  \0 does the same, but emits a
568 diagnostic saying it will disappear in some subsequent release.
569
570 * eval(EXPR) emits a diagnostic if EXPR has suffixed crumb.  The same for
571 other numeric conversions in incr(), decr(), divert(), etc.
572
573 * `--fatal-warnings' (-E) stops execution at first warning.
574
575 * `--nesting-limit=LEVEL' (-L LEVEL) sets a limit to macro nesting.
576 It is initially fixed at 250.
577
578 * `--word-regexp=REGEXP' (-W REGEXP) modifies macro name syntax, like
579 does the new `changeword(REGEXP)' macro.  This feature is experimental,
580 tell me your opinions about it.  You do need --enable-changeword at
581 configure time to get these things.  Do *not* depend on them yet.
582
583 * Trace output format is scannable by GNU Emacs' next-error function.
584
585 * Stack overflow is detected and diagnosed on some capable systems.
586
587 * Various bugs have been corrected, m4 should be more portable.  See the
588 ChangeLog for details.
589 \f
590 Version 1.1 - November 1993, by Franc,ois Pinard
591
592 Changes which might affect existing GNU m4 scripts:
593
594 * Option `-V' has been removed, use `--version' instead.  `--version'
595 writes on standard output instead of standard error, and inhibits any
596 script execution.
597
598 * `--no-gnu-extensions' has been renamed `--traditional'.
599
600 * In `eval', `^' used to indicate exponentiation, use `**' instead.
601
602 * The automatic undiversion which takes place at end of all input is
603 forced into the main output stream.
604
605 Changes which are unlikely to affect existing scripts:
606
607 * `--help' prints an usage summary on standard output.  Script execution
608 is then inhibited.
609
610 * `--prefix-builtins' (-P) prefixes all builtin macros by `m4_'.
611
612 * Most builtin macros for which arguments are mandatory, called without
613 any arguments, are no more recognized as builtin macros: they are
614 consequently copied verbatim to the output stream.
615
616 * `define' and `pushdef' are usable with only one argument, they give
617 this argument an empty definition.
618
619 * `eval' new operators for binary representation handling: `^' for
620 exclusive-or, `~' for the bitwise negation, `<<' and `>>' for shifts.
621
622 * `eval' recognizes the notation 0bDIGITS for binary numbers and the
623 notation 0rRADIX:DIGITS for numbers in any radix from 1 to 36.
624 \f
625 Version 1.0.3 - December 1992, by Franc,ois Pinard
626
627 Changes for the user:
628
629 * `dnl' outputs a diagnostic if immediately followed by `('.  Usually,
630 `dnl' is followed by newline or whitespace.
631
632 * `ifelse' accepts without complaining the common idiom of having only
633 one argument.  This is useful for introducing long comments.
634
635 * `eval' always expresses values as signed, whatever the radix.
636
637 * M4OPTS environment variable is no longer obeyed.
638
639 * `--no-warnings' option is renamed `--silent'.
640
641 * Debug lines use a new format more compatible with GNU standards.
642
643 * Various bugs have been corrected.  See the ChangeLog for details.
644
645 Changes for the installer:
646
647 * GNU m4 now uses an Autoconf-generated configure script, and should be
648 more easily portable in many ways.  (Cray is not supported yet).
649
650 * `make check' has been made more portable, expect no errors.
651
652 Changes for the programmer:
653
654 * Sources have been fully reindented to comply with GNU standards, and
655 cleaned up in many ways.
656
657 * Sources have been protoized.  Non-ANSI compilers are automatically
658 detected, then sources are unprotoized on the fly before compilation.
659
660 * GNU m4 uses newer versions of obstack, regex, getopt, etc.
661 \f
662 Version 1.0 - October 1991, by René Seindal
663
664 * Uses GNU configure, taken from the gdb distribution.
665
666 * Uses GNU getopt(), with long option names.
667
668 * The -Q/+quiet option is added, which suppresses warnings about missing
669 or superflous arguments to built-in macros.
670
671 * Added default options via the M4OPTS environment variable.
672
673 * Several minor bugs have been fixed.
674 \f
675 Version 0.99 - July 1991, by René Seindal
676
677 * The builtins `incr' and `decr' are now implemented without use of
678 `eval'.
679
680 * The builtin `indir' is added, to allow for indirect macro calls
681 (allows use of "illegal" macro names).
682
683 * The debugging and tracing facilities has been enhanced considerably.
684 See the manual for details.
685
686 * The -tMACRO option is added, marks MACRO for tracing as soon as it
687 is defined.
688
689 * Builtins are traced after renaming iff they were before.
690
691 * Named files can now be undiverted.
692
693 * The -Nnum option can be used to increase the number of divertions
694 available.
695
696 * Calling changecom without arguments now disables all comment handling.
697
698 * A bug in `dnl' is fixed.
699
700 * A bug in the multi-character quoting code is fixed.
701
702 * Several typos in the manual has been corrected.  More probably persist.
703 \f
704 Version 0.75 - November 1990, by René Seindal
705
706 * Implemented search path for include files (-I option and M4PATH
707 environment variable).
708
709 * Implemented builtin `format' for printf-like formatting.
710
711 * Implemented builtin `regexp' for searching for regular expressions.
712
713 * Implemented builtin `patsubst' for substitution with regular
714 expressions.
715
716 * Implemented builtin `esyscmd', which expands to a shell commands output.
717
718 * Implemented `__file__' and `__line__' for use in error messages.
719
720 * Implemented character ranges in `translit'.
721
722 * Implemented control over debugging output.
723
724 * Implemented multi-character quotes.
725
726 * Implemented multi-character comment delimiters.
727
728 * Changed predefined macro `gnu' to `__gnu__'.
729
730 * Changed predefined macro `unix' to `__unix__', when the -G option is
731 not used.  With -G, `unix' is still defined.
732
733 * Added program name to error messages.
734
735 * Fixed two missing null bytes bugs.
736 \f
737 Version 0.50 - January 1990, by René Seindal
738
739 * Initial beta release.
740
741 ========================================================================
742
743 Local Variables:
744 mode: outline
745 fill-column: 75
746 End:
747
748 Copyright (C) 1992-1994, 2004-2014, 2016-2017, 2020-2021 Free Software
749 Foundation, Inc.
750
751 Permission is granted to copy, distribute and/or modify this document
752 under the terms of the GNU Free Documentation License, Version 1.3 or
753 any later version published by the Free Software Foundation; with no
754 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
755 Texts.  A copy of the license is included in the ``GNU Free
756 Documentation License'' file as part of this distribution.