The GNU M4 team is pleased to announce the beta release of M4 1.4.10b.
This release features a rewrite of the parsing engine, such that recursive
macro expansions that used to scale quadratically in both memory in time
are now linear in memory and time. As a result, programs such as GNU
Autoconf that make heavy use of m4 will be noticeably faster.
It is possible that the rewrite may have caused unintended regressions.
Also, several more patches are planned before the next stable release of
1.4.11, for more uniform handling of builtin tokens generated by the defn
macro, as well as transparent handling of embedded NUL bytes.
Additionally, there is a known testsuite failure on platforms with a
strtod implementation that is not C99 compliant. Therefore, this is a
beta release in order to achieve wider test exposure; please report any
problems to bug-m4@gnu..... When reporting, please include information
about your platform, along with the results of 'make -k check'.
[*] You can use either of the above signature files to verify that
the corresponding file (without the .sig suffix) is intact. First,
be sure to download both the .sig file and the corresponding tarball.
Then, run a command like this:
~ gpg --verify m4-1.4.10b.tar.gz.sig
If that command fails because you don't have the required public key,
then run this command to import it:
This release was bootstrapped with the following tools:
~ Autoconf 2.61a.360-45ab
~ Automake 1.10a
~ Gnulib v0.0-295-g511e2bf
* Noteworthy changes in Version 1.4.10b (2008-02-25) [beta]
~ Released by Eric Blake, based on git version 1.4.10a
** Security fixes for the -F option, for bugs present since -F was
~ introduced in 1.3: Avoid core dump with 'm4 -F file -t undefined', and
~ avoid arbitrary code execution with certain file names.
** Fix regression introduced in 1.4.9b in the `divert' builtin when more
~ than 512 kibibytes are saved in diversions on platforms like NetBSD
~ where fopen(name,"a+") seeks to the end of the file.
** The output of the `maketemp' and `mkstemp' builtins is now quoted if a
~ file was created. This is a minor security fix, because it was possible
~ (although rather unlikely) that an unquoted string could match an
~ existing macro name, such that use of the `mkstemp' output would trigger
~ inadvertent macro expansion and operate on the wrong file name.
** Enhance the `defn' builtin to support concatenation of multiple text
~ arguments, as required by POSIX. However, at this time, it is not
~ possible to concatenate a builtin macro with anything else; a warning is
~ now issued if this is attempted, although a future version of M4 may
~ lift this restriction to match other implementations.
** Enhance the `index' builtin to guarantee linear behavior and often
~ acheive sublinear results, in spite of the surprisingly large number of
~ systems with a brain-dead quadratic strstr(3).
** Enhance the `regexp' and `patsubst' builtins to cache frequently used
~ regular expressions, which speeds up typical Autoconf usage.
** Enhance the `format' builtin to warn for more suspicious usages, such as
~ missing arguments or problems parsing according to the format string.
** Enhance the `ifelse' and `shift' builtins so that tail-recursive
~ algorithms based on `$@' operate in linear, rather than quadratic, time
~ and memory.
** A number of portability improvements inherited from gnulib.
Eric Blake, on behalf of
The GNU M4 team
bug-m4@gnu.... -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org