m4-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU M4 source repository branch, master, updated. cvs-readonly-89-


From: Eric Blake
Subject: [SCM] GNU M4 source repository branch, master, updated. cvs-readonly-89-gd77ce2b
Date: Thu, 10 Apr 2008 12:27:31 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU M4 source repository".

http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=d77ce2bf23c81091d9844c7052f50ba80005e6f6

The branch, master has been updated
       via  d77ce2bf23c81091d9844c7052f50ba80005e6f6 (commit)
      from  0b8410450c789102f46f2ee21aaeb304737e828b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d77ce2bf23c81091d9844c7052f50ba80005e6f6
Author: Eric Blake <address@hidden>
Date:   Wed Apr 9 16:51:52 2008 -0600

    Mention 1.4.11 release.
    
    * doc/m4.texinfo (History, Defn, Ifdef, Ifelse, M4wrap)
    (Extensions, Improved foreach): Distinguish 1.4.11 and 1.6.
    (Format): Add test of C99 hex-float parsing.
    * NEWS: Mention 1.4.11 release.
    * tests/builtins.at (divert): Add additional test.
    
    Signed-off-by: Eric Blake <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog         |    9 ++++++
 NEWS              |   74 ++++++++++++++++++++++++++++++++++++++++-------------
 doc/m4.texinfo    |   24 ++++++++++-------
 tests/builtins.at |    4 +++
 4 files changed, 83 insertions(+), 28 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 32593ea..1ecc606 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-04-09  Eric Blake  <address@hidden>
+
+       Mention 1.4.11 release.
+       * doc/m4.texinfo (History, Defn, Ifdef, Ifelse, M4wrap)
+       (Extensions, Improved foreach): Distinguish 1.4.11 and 1.6.
+       (Format): Add test of C99 hex-float parsing.
+       * NEWS: Mention 1.4.11 release.
+       * tests/builtins.at (divert): Add additional test.
+
 2008-04-08  Eric Blake  <address@hidden>
 
        Overhaul inter-version releases to work with git.
diff --git a/NEWS b/NEWS
index eea5287..205c651 100644
--- a/NEWS
+++ b/NEWS
@@ -205,18 +205,36 @@ promoted to 2.0.
   - FIXME: format 2 still needs to catch more missing state; once 2.0 is
     released, any further changes would introduce format 3.
 
-*** Improvements made in the 1.4.x stable series have been incorporated.
+*** Improvements made in the 1.4.x and 1.6 stable series have been
+    incorporated.
 
 
-* Noteworthy changes in Version 1.4.11 (????-??-??) [stable]
+* Noteworthy changes in Version 1.6 (????-??-??) [stable]
   Released by ????, based on git version 1.4.10b.x-*
 
-** Fix regression introduced in 1.4.10b where using `builtin' or `indir'
-   to perform nested `shift' calls triggered an assertion failure.
+** Fix regression introduced in 1.4.10b (but not present in 1.4.11) where
+   using `builtin' or `indir' to perform nested `shift' calls triggered an
+   assertion failure.
 
 ** Fix the `m4wrap' builtin to accumulate wrapped text in FIFO order, as
    required by POSIX.  The manual mentions a way to restore the LIFO order
-   present in earlier GNU M4 versions.
+   present in earlier GNU M4 versions.  NOTE: this change exposes a bug
+   in Autoconf 2.59 and earlier (which was fixed in Autoconf 2.60).
+
+   If you want your package to work with pre-installed Autoconf without
+   requiring 2.60, then add these lines to your project's configure.ac,
+   prior to calling AC_INIT:
+
+     # As long as this project is not ready to upgrade to autoconf 2.60
+     # or newer, make sure that newer M4 will still use LIFO order:
+     m4_define([m4_wrap], [m4_ifdef([_$0_text],
+       [m4_define([_$0_text], [$1]m4_defn([_$0_text]))],
+       [m4_define([_$0_text], [$1])m4_builtin([m4wrap],
+         [m4_default(m4_defn([_$0_text])m4_undefine([_$0_text]))])])])
+
+   On the other hand, if you want to install Autoconf 2.59 or earlier,
+   then apply this patch:
+     http://git.sv.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=56d42fa71
 
 ** Enhance the `ifdef', `ifelse', and `shift' builtins, as well as all
    user macros, to transparently handle builtin tokens generated by `defn'.
@@ -226,16 +244,40 @@ promoted to 2.0.
    context of a macro name, rather than acting on the empty string.  This
    was already done for `define', `pushdef', `builtin', and `indir'.
 
+** A number of portability improvements inherited from gnulib.
+
 * Noteworthy changes in Version 1.4.10b (2008-02-25) [beta]
   Released by Eric Blake, based on git version 1.4.10a
 
+Note that M4 1.4.10b was released prior to 1.4.11, and includes all the
+features of 1.4.11 except for C99 parsing in the `format' builtin.  It also
+contains the following beta features that were deemed worth deferring until
+1.6:
+
+** Further enhance the `index' builtin to often achieve sublinear results.
+
+** 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.
+
+* Noteworthy changes in Version 1.4.11 (2008-04-02) [stable]
+  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.
+   or darwin 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
@@ -249,19 +291,15 @@ promoted to 2.0.
    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
-   achieve sublinear results, in spite of the surprisingly large number of
-   systems with a brain-dead quadratic strstr(3).
+** Enhance the `format' builtin to parse all C99 floating point numbers,
+   even on platforms where strtod(3) is buggy, although the replacement
+   function does have the known issue of rounding errors when parsing
+   some decimal floating point values.  This fixes testsuite failures
+   introduced in 1.4.9b.
 
-** 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.
+** Enhance the `index' builtin to guarantee linear behavior, in spite of
+   the surprisingly large number of systems with a brain-dead quadratic
+   strstr(3).
 
 ** A number of portability improvements inherited from gnulib.
 
diff --git a/doc/m4.texinfo b/doc/m4.texinfo
index 6e836f6..9198a09 100644
--- a/doc/m4.texinfo
+++ b/doc/m4.texinfo
@@ -413,9 +413,11 @@ addressed some long standing bugs in the venerable 1.4 
release.  Then in
 released 1.4.3 and 1.4.4.  And in 2006, Eric Blake joined the team and
 prepared patches for the release of 1.4.5, 1.4.6, 1.4.7, and 1.4.8.
 More bug fixes were incorporated in 2007, with the releases of 1.4.9 and
-1.4.10.  In 2008, Eric additionally rewrote the scanning engine to
-reduce recursive evaluation from quadratic to linear complexity for
-1.4.11.  The 1.4.x branch remains open for bug fixes.
+1.4.10, closing the series with 1.4.11 in 2008.
+
+Additionally, in 2008, Eric rewrote the scanning engine to reduce
+recursive evaluation from quadratic to linear complexity, released as M4
+1.6.  The 1.x branch series remains open for bug fixes.
 
 Meanwhile, development was underway for new features for @code{m4},
 such as dynamic module loading and additional builtins, practically
@@ -2281,7 +2283,7 @@ defn([l], [r])
 Using @code{defn} to generate special tokens for builtin macros will
 generate a warning in contexts where a macro name is expected.  But in
 contexts that operate on text, the builtin token is just silently
-converted to an empty string.  As of M4 1.4.11, expansion of user macros
+converted to an empty string.  As of M4 1.6, expansion of user macros
 will also preserve builtin tokens.  However, any use of builtin tokens
 outside of the second argument to @code{define} and @code{pushdef} is
 generally not portable, since earlier @acronym{GNU} M4 versions, as well
@@ -2899,7 +2901,7 @@ ifdef(`no_such_macro', `yes', `no', `extra argument')
 @result{}no
 @end example
 
-As of M4 1.4.11, @code{ifdef} transparently handles builtin tokens
+As of M4 1.6, @code{ifdef} transparently handles builtin tokens
 generated by @code{defn} (@pxref{Defn}) that occur in either
 @var{string}, although a warning is issued for invalid macro names.
 
@@ -3015,7 +3017,7 @@ ifelse(`foo', `bar', `3', `gnu', `gnats', `6', `7', `8')
 @result{}7
 @end example
 
-As of M4 1.4.11, @code{ifelse} transparently handles builtin tokens
+As of M4 1.6, @code{ifelse} transparently handles builtin tokens
 generated by @code{defn} (@pxref{Defn}).  Because of this, it is always
 safe to compare two macro definitions, without worrying whether the
 macro might be a builtin.
@@ -5235,7 +5237,7 @@ not if @code{m4exit} is used to exit @code{m4}.
 
 It is safe to call @code{m4wrap} from wrapped text, where all the
 recursively wrapped text is deferred until the current wrapped text is
-exhausted.  As of M4 1.4.11, when @code{m4wrap} is not used recursively,
+exhausted.  As of M4 1.6, when @code{m4wrap} is not used recursively,
 the saved pieces of text are reread in the same order in which they were
 saved (FIFO---first in, first out), as required by @acronym{POSIX}.
 
@@ -6677,6 +6679,8 @@ ifelse(format(`%.1A', `1.999'), `0X1.0P+1', `success',
        format(`%.1A', `1.999'), `0X2.0P+0', `success',
        format(`%.1A', `1.999'))
 @result{}success
+format(`%g', `0xa.P+1')
address@hidden
 @end example
 
 Using the @code{forloop} macro defined earlier (@pxref{Forloop}), this
@@ -8308,7 +8312,7 @@ of @samp{-} on the command line.
 @item
 @acronym{POSIX} requires @code{m4wrap} (@pxref{M4wrap}) to act in FIFO
 (first-in, first-out) order, and most other implementations obey this.
-However, versions of @acronym{GNU} @code{m4} earlier than 1.4.11 used
+However, versions of @acronym{GNU} @code{m4} earlier than 1.6 used
 LIFO order.  Furthermore, @acronym{POSIX} states that only the first
 argument to @code{m4wrap} is saved for later evaluation, but
 @acronym{GNU} @code{m4} saves and processes all arguments, with output
@@ -8774,14 +8778,14 @@ foreachq(`x', ``1', `2', `3', `4'', `x
 @result{}4
 @end example
 
-Prior to M4 1.4.11, every instance of @samp{$@@} was rescanned as it was
+Prior to M4 1.6, every instance of @samp{$@@} was rescanned as it was
 encountered.  Thus, the @file{foreachq3.m4} alternative used much less
 memory than @file{foreachq2.m4}, and executed as much as 10% faster,
 since each iteration encountered fewer @samp{$@@}.  However, the
 implementation of rescanning every byte in @samp{$@@} was quadratic in
 the number of bytes scanned (for example, making the broken version in
 @file{foreachq.m4} cubic, rather than quadratic, in behavior).  Once the
-underlying M4 implementation was improved in 1.4.11 to reuse results of
+underlying M4 implementation was improved in 1.6 to reuse results of
 previous scans, both styles of @code{foreachq} become linear in the
 number of bytes scanned, and the difference in timing is no longer
 noticeable; in fact, after the change, the @file{foreachq2.m4} version
diff --git a/tests/builtins.at b/tests/builtins.at
index 34143a1..14be12d 100644
--- a/tests/builtins.at
+++ b/tests/builtins.at
@@ -287,6 +287,10 @@ hello world
 ]])
 
 dnl Test large diversions, which were broken in m4 1.4.8-1.4.10.
+AT_CHECK([echo 'divert(1)hi
+format(%1000000d, 1)' | m4 | sed 1q], [0], [[hi
+]])
+
 AT_DATA([in.m4], [M4_ONE_MEG_DEFN[divert(`2')f`'dnl
 divert(`1')hello
 divert(`3')goodbye


hooks/post-receive
--
GNU M4 source repository




reply via email to

[Prev in Thread] Current Thread [Next in Thread]