(m4.info.gz) History
Info Catalog
(m4.info.gz) Intro
(m4.info.gz) Preliminaries
(m4.info.gz) Invoking m4
1.2 Historical references
=========================
`GPM' was an important ancestor of `m4'. See C. Stratchey: "A General
Purpose Macro generator", Computer Journal 8,3 (1965), pp. 225 ff.
`GPM' is also succinctly described into David Gries classic "Compiler
Construction for Digital Computers".
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 `m3',
a macro processor for the AP-3 minicomputer.
Kernighan and Ritchie then joined forces to develop the original
`m4', as described in "The M4 Macro Processor", Bell Laboratories
(1977). It had only 21 builtin macros.
While `GPM' was more _pure_, `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
`m3', formed the engine for the Rational FORTRAN preprocessor, that is,
the `Ratfor' equivalent of `cpp'. Later, `m4' was used as a frontend
for `Ratfor', `C' and `Cobol'.
Rene' Seindal released his implementation of `m4', GNU `m4', in
1990, with the aim of removing the artificial limitations in many of
the traditional `m4' implementations, such as maximum line length,
macro size, or number of macros.
The late Professor A. Dain Samples described and implemented a
further evolution in the form of `M5': "User's Guide to the M5 Macro
Language: 2nd edition", Electronic Announcement on comp.compilers
newsgroup (1992).
Franc,ois Pinard took over maintenance of GNU `m4' in 1992, until
1994 when he released GNU `m4' 1.4, which was the stable release for 10
years. It was at this time that GNU Autoconf decided to require GNU
`m4' as its underlying engine, since all other implementations of `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 `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, 1.4.6, and 1.4.7.
Meanwhile, development has continued on new features for `m4', such
as dynamic module loading and additional builtins. When complete, GNU
`m4' 2.0 will start a new series of releases.
Info Catalog
(m4.info.gz) Intro
(m4.info.gz) Preliminaries
(m4.info.gz) Invoking m4
automatically generated byinfo2html