GNU m4

TODO - Things still to be done

General info

What is m4
Features
Uses of m4

Documentation

Manual

Source files

README
TODO
NEWS
ChangeLog
Contributors
Browse it

The Future

Modules
Visions

Feedback

Mailing-lists
Feedback
DiscussionáForum

Development

Download
Known bugs

Examples

This site

Sponsor Links

Posters Shop
Movie Posters
Celebrity Photos
Art Prints
College Posters
Tanya Chalkin Kiss
Johnny Depp
Orlando Bloom
Kill Bill: Volume 2
Framed Art Prints

GNU m4 TODO - Tasks that need implementing.		-*- outline -*-
Copyright 2000, 2001 Free Software Foundation, Inc.

Tell the maintainers at <bug-m4@gnu.org> if you feel like volunteering
for any of these ideas or if you have others to add.

* KNOWN BUGS

  + m4wrap.1.test fail on Solaris 2.6 using egcs 1.1a compiler (Erick B).

  + The test case `other-tests/stackovf.test' does not work.

  + Some characters, such as comma, are still hardcoded, and do not
    follow changes in the syntax table.

  + sigstack/sigaltstack and ENOSYS

      When sigstack or sigaltstack fail with errno == ENOSYS, m4 should
      fall back silently to not using an alternate signal stack.
      Otherwise, problems arise in at least the following case: glibc
      2.1 test releases, built with Linux 2.1 headers (as recommended
      for glibc 2.1), so the library has sigstack and sigaltstack, but
      run with a Linux 2.0 kernel, so the kernel support is not present
      and ENOSYS is returned.

      (GNU m4 1.4k, built with glibc 2.0.100 (itself built with Linux
      2.1.126 headers), and running on Linux 2.0.36pre15.)

      -- 
      Joseph S. Myers
      jsm28@cam.ac.uk

  + stack overflow is basically broken

    The routines to detect stack overflow throuh segv  are basically
    broken. The idea may be fine, but it ends up calling a sigv handler
    that uses gettext, printf, stdout... all of which are definitely NOT
    sig-safe.  Pity, because the hardcode routine is basically very careful
    to use write(2), to avoid this.

    I haven't checked that translation magic is signal-safe.
    - I doubt it;
    - stdio is not signal-safe in any kind of portable setting anyways.
    --
    Marc Espie
    espie@schutzenberger.liafa.jussieu.fr

  + ~/src/ace % m4 --trace undefine -dV                       nostromo Err 1$
    m4 debug: NONE: 0: input read from stdin
    undefine(`undefine')
    m4trace:stdin:1: -1- id 1: undefine ...
    m4trace:stdin:1: -1- id 1: undefine(`undefine') -> ???
    m4trace:stdin:1: -1- id 1: p@8(...)

    --
    Akim Demaille
    akim@epita.fr


* FEATURES OR PROBLEMS

  + Implement discarding comment delimiters with the syntax table.

  + The $ used in user defined macros cannot be changed through
    changesyntax.  It should be handled as a modifier.

  + If configured --with-gmp for multiple precision arithmetic there are
    some warnings, but it passes the tests.

  + Make m4 show include dependencies like gcc so Makefile targets are
    updated When their (included) input files are updated (Erick B).

  + Sort out all the weird forms of interaction between changesyntax,
    changecom and changequote.  What happens if you install a quote with
    changequote and removes it with changesyntax and vice versa.

  + Add support for wide character sets.


* OPTIMIZATION AND CLEAN UP

  + Have NULs go really undisturbed through GNU m4
	GNU m4 is lousy regarding NULs in streams (this would require
	maintaining the string lengths, and avoiding strlen, strcpy,
	etc.).

  + The argument count limits are handled for all tokens passed around by
    the internals:  we should enable attaching these values to text macros
    too.

* MODULE SPECIFIC ISSUES

  + Some way of linking a module statically is needed, for systems
    without support for dynamic loading.

  + Some sort of module interface versioning system needs to be implemented
    in the module loader and the freezer so that m4 can tell if it is being
    asked to load a frozen file that requires versions of modules with
    interface versions unsupported by the current release.

  + Setting of the module search path within m4 scripts:

	append(__modulepath__, `/some/modules/live/here')

  + Module autoloader.  This would allow an m4 core with no builtins except
    for loadmodule().  A default startup script would mark the recognised
    set of builtins for autoload from the installed module directory on first
    use.  A new cli parameter would inhibit initialisation from this script,
    so that customised m4 interpreters could be built on the fly!

  + The perl module should only be built if a suitable perl interpreter
    is found on the build machine.

* OTHER TOOLS

  + Automake 1.5 doesn't seem to like pkglibexec_LTLIBRARIES +=
    See modules/Makefile.am.