Re: m4p: an implementation of GNU m4 in Python

Nikolaos Chatzikonstantinou <[email protected]> Sat, 10 May 2025 14:13:52 -0400
Newsgroups gmane.comp.gnu.m4.general,gmane.comp.sysutils.automake.general
Message-ID <CAAQmeke9U5JAub751ckrUywWo+aLRmGwh6XZ6C9b9hb=g-ysVA@mail.gmail.com>
On Sat, May 10, 2025 at 2:09=E2=80=AFPM Eric Blake <[email protected]> wrot=
e:
>
> On Fri, May 09, 2025 at 04:33:44PM -0400, Nikolaos Chatzikonstantinou wro=
te:
> > Hello lists,
> >
> > I rewrote GNU m4 in Python. Long story short, I wanted to learn m4 to
> > fix some issues I had with GNU Guile and Autotools, and after
> > realizing m4 1.4 is ~8000 lines of code and reading e.g.
> > <https://www.owlfolio.org/development/autoconf-swot/> which claims
> > "Feature gaps in GNU M4 hold back development of Autoconf." I thought
> > I'd rewrite it in Rust. (It turned out to be more beneficial to
> > rewrite in Python due to faster prototyping for the time being.)
> > Eventually I plan to get back to my original purpose of fixing the
> > integration of GNU Guile and Autotools.
> >
> > You can find the project home page here,
> > <https://codeberg.org/annoyingusername/m4p> and you can install with
> > pip via `pip install m4p`.
> >
> >
> > I have not yet implemented:
> >
> > 1. traceon, traceoff, changeword, debugmode, debugfile, dumpdef
>
> traceon and dumpdef are mandated by POSIX.  Don't bother implementing
> changeword (it's already ripped out of branch-1.6).  debugmode is also
> going to be essential for controlling compatibility.

As of v0.3 the only unimplemented macro is debugmode (and I think $@
which I forgot). I will get around to it.

> > 2. Some of the command-line options.
>
> Does it handle frozen files yet?

Not yet. I estimate that in another month or so it should all come
together to the point where I'll start testing it against real uses of
m4.

Regards,
Nikolaos Chatzikonstantinou