[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Changes to m4/doc/m4.texinfo,v [branch-1_4]
From: |
Eric Blake |
Subject: |
Changes to m4/doc/m4.texinfo,v [branch-1_4] |
Date: |
Sun, 18 Jun 2006 21:36:11 +0000 |
CVSROOT: /sources/m4
Module name: m4
Branch: branch-1_4
Changes by: Eric Blake <ericb> 06/06/18 21:36:09
Index: doc/m4.texinfo
===================================================================
RCS file: /sources/m4/m4/doc/m4.texinfo,v
retrieving revision 1.1.1.1.2.20
retrieving revision 1.1.1.1.2.21
diff -u -b -r1.1.1.1.2.20 -r1.1.1.1.2.21
--- doc/m4.texinfo 16 Jun 2006 03:09:14 -0000 1.1.1.1.2.20
+++ doc/m4.texinfo 18 Jun 2006 21:36:09 -0000 1.1.1.1.2.21
@@ -100,8 +100,10 @@
@end example
@noindent
if you want this feature compiled in. The current implementation
-slows down @code{m4} considerably and is hardly acceptable. So, it
-might go away, do not count on it yet.
+slows down @code{m4} considerably and is hardly acceptable. In the
+future, @code{m4} 2.0 will come with a different set of new features
+that provide similar capabilities, but without the inefficiencies, so
+changeword will go away and you should not count on it.
@menu
* Preliminaries:: Introduction and preliminaries
@@ -228,8 +230,8 @@
Compatibility with other versions of @code{m4}
-* Extensions:: Extensions in GNU m4
-* Incompatibilities:: Facilities in System V m4 not in GNU m4
+* Extensions:: Extensions in GNU M4
+* Incompatibilities:: Facilities in System V m4 not in GNU M4
* Other Incompatibilities:: Other incompatibilities
@end detailmenu
@@ -289,22 +291,56 @@
@node History, Invoking m4, Intro, Preliminaries
@section Historical references
-The historical notes included here are fairly incomplete, and not
-authoritative at all. Please knowledgeable users help us to more
-properly write this section.
-
@code{GPM} has been an important ancestor of @code{m4}. See
C. Stratchey: ``A General Purpose Macro generator'', Computer Journal
8,3 (1965), pp. 225 ff. @code{GPM} is also succinctly described into
David Gries classic ``Compiler Construction for Digital Computers''.
-While @code{GPM} was @emph{pure}, @code{m4} was meant to deal more
-with the true intricacies of real life: macros could be recognized
-with being pre-announced, skipping whitespace or end-of-lines was
-made easier, more constructs were builtin instead of derived, etc.
-
-Originally, @code{m4} was the engine for Rational FORTRAN preprocessor,
-that is, the @code{ratfor} equivalent of @code{cpp}.
+The classic B. Kernighan and P.J. Plauger: ``Software Tools'',
+Addison-Wesley, Inc. (1976) describes and implements a Unix
+macro-processor language, which inspired Dennis Ritchie to write
address@hidden, a macro processor for the AP-3 minicomputer.
+
+Kernighan and Ritchie then joined forces to develop the original
address@hidden, as described in ``The M4 Macro Processor'', Bell
+Laboratories (1977) which had only 21 builtin macros.
+
+While @code{GPM} was more @emph{pure}, @code{m4} is meant to deal with
+the true intricacies of real life: macros can be recognized without
+being pre-announced, skipping whitespace or end-of-lines is easier,
+more constructs are builtin instead of derived, etc.
+
+Originally, the Kernighan and Plauger macro-processor, and then
address@hidden formed the engine for the Rational FORTRAN preprocessor,
+that is, the @code{Ratfor} equivalent of @code{cpp}. Later, @code{m4}
+was used as a frontend for @code{Ratfor}, @code{C} and @code{Cobol}.
+
+Ren@'e Seindal released his implementation of @code{m4}, GNU @code{m4},
+in 1990, with the aim of removing the artificial limitations in many
+of the traditional @code{m4}'s: like maximum line length, macro size,
+number of macros and so on.
+
+The late Professor A. Dain Samples described and implemented a further
+evolution in the form of @code{M5}: ``User's Guide to the M5 Macro
+Language: 2nd edition'', Electronic Announcement on comp.compilers
+newsgroup (1992).
+
+Fran@,{c}ois Pinard took over maintainance of GNU @code{m4} in 1992, until
+1994 when he released GNU @code{m4} 1.4, which was the stable release
+for 10 years. It was at this time that GNU Autoconf decided to require
+GNU @code{m4} as its underlying engine, since all other implementations
+of @code{m4} had too many limitations.
+
+More recently, in 2004, Paul Eggert released 1.4.1 and 1.4.2 which
+addressed some long standing bugs in the venerable 1.4 release.
+Then in 2005 Gary V. Vaughan collected together the many
+patches to GNU @code{m4} 1.4 that were floating around the net and
+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.
+
+Meanwhile, development has continued on new features for @code{m4}, such
+as dynamic module loading and additional builtins. When complete, GNU
address@hidden 2.0 will start a new series of releases.
@node Invoking m4, Bugs, History, Preliminaries
@section Invoking @code{m4}
@@ -1986,9 +2022,10 @@
The macro @code{changeword} and all associated functionality is
experimental. It is only available if the @code{--enable-changeword}
option was given to @code{configure}, at GNU @code{m4} installation
-time. The functionality might change or even go away in the future.
address@hidden not rely on it}. Please direct your comments about it the
-same way you would do for bugs.
+time. The functionality will go away in the future, to be replaced by
+other new features that are more efficient at providing the same
+capabilities. @emph{Do not rely on it}. Please direct your comments
+about it the same way you would do for bugs.
@end quotation
A file being processed by @code{m4} is split into quoted strings, words
@@ -2095,7 +2132,8 @@
the macro is @emph{used}.
You should note that using @code{changeword} will slow @code{m4} down
-by a factor of about seven.
+by a factor of about seven, once it is changed to something other
+than the default regular expression.
@node M4wrap, , Changeword, Input Control
@section Saving input
@@ -3100,6 +3138,10 @@
@result{}
ifelse(sysval, 0, zero, non-zero)
@result{}non-zero
+syscmd(`exit 2')
address@hidden
+sysval
address@hidden
syscmd(`true')
@result{}
sysval
@@ -3410,8 +3452,8 @@
is made to summarize these here.
@menu
-* Extensions:: Extensions in GNU m4
-* Incompatibilities:: Facilities in System V m4 not in GNU m4
+* Extensions:: Extensions in GNU M4
+* Incompatibilities:: Facilities in System V m4 not in GNU M4
* Other Incompatibilities:: Other incompatibilities
@end menu
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/15
- Changes to m4/doc/m4.texinfo,v [branch-1_4],
Eric Blake <=
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/22
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/22
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/23
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/27
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/27
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/29
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/30
- Changes to m4/doc/m4.texinfo,v [branch-1_4], Eric Blake, 2006/06/30