mirror of
https://https.git.savannah.gnu.org/git/m4.git
synced 2026-01-27 01:44:29 +00:00
* configure.ac (AM_INIT_AUTOMAKE): Require 1.10.1, and add lzma distribution. * bootstrap: Update automake requirement. (func_version): Fix --version output, broken since 2007-08-06. * HACKING: Likewise. Add lzma requirement. * Makefile.am (clean-local-src): Not needed any more with newest Automake. (clean-local): Adjust. * TODO: Remove completed item. Signed-off-by: Eric Blake <ebb9@byu.net>
140 lines
5.1 KiB
Plaintext
140 lines
5.1 KiB
Plaintext
GNU m4 TODO - Tasks that need implementing. -*- outline -*-
|
|
Copyright (C) 2000, 2001, 2006, 2007, 2008 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
|
|
|
|
+ The following patch needs to be ported from the branch:
|
|
http://lists.gnu.org/archive/html/m4-patches/2007-03/msg00005.html
|
|
May be a couple of issues in that thread.
|
|
|
|
+ The format builtin needs more power to be like printf(1):
|
|
http://lists.gnu.org/archive/html/m4-discuss/2007-05/msg00015.html
|
|
But be aware of compatibility issues in making too many changes.
|
|
|
|
+ The test case `other-tests/stackovf.test' does not work.
|
|
|
|
+ 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
|
|
|
|
|
|
* FEATURES OR PROBLEMS
|
|
|
|
+ m4 should keep an ``execution stack'' of macros, which applications could
|
|
use in their error messages.
|
|
|
|
+ Implement discarding comment delimiters with the syntax table.
|
|
|
|
+ Implement qindir. Like indir, except that the result of the macro call
|
|
is not expanded. Because the input stack might contain a file or a
|
|
string, it is probably best achieved by making note that the TOS input
|
|
should be copied rather than rescanned.
|
|
|
|
$ echo "a'b" > f
|
|
$ m4
|
|
define(a,z)dnl
|
|
include(f)dnl
|
|
z'b
|
|
indir(`include', f)dnl
|
|
z'b
|
|
qindir(`include', f)dnl
|
|
a'b
|
|
define(b,NONO)dnl
|
|
patsubst(qindir(`include', f), `b', x)
|
|
z'x
|
|
|
|
+ Use the TOS input quoting for qindir to fix this undesirable POSIX
|
|
behavior:
|
|
|
|
define(`x', -'-)
|
|
define(y, defn(`x'))
|
|
y
|
|
--'
|
|
--
|
|
Stepan Kasal <kasal@ucw.cz>
|
|
|
|
+ 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).
|
|
|
|
+ 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.). (Almost there, once argv_ref is ported).
|
|
|
|
+ The argument count limits are handled for all tokens passed around by
|
|
the internals: we should enable attaching these values to text macros
|
|
too.
|
|
|
|
+ The context parameter is just a placeholder for formerly global state.
|
|
We should be making the library reentrant so that multiple instances
|
|
of m4 can be run in the same process at the same time.
|
|
|
|
+ The path management stuff (in path.c/m4private.h) is reinventing the
|
|
wheel. There are a bunch of fast path management and search functions
|
|
in ltdl.c: These need to be sanitized, exported through ltdl.h, and
|
|
then wrapped by the m4module.h path api. path.c can probably be removed
|
|
entirely at that point.
|
|
|
|
* 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.
|
|
|
|
+ The module API should probably use functions, not data exports:
|
|
http://lists.gnu.org/archive/html/m4-patches/2007-09/msg00012.html
|
|
Actually, there are several good ideas for module in that thread.
|
|
|
|
+ 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 module loader needs to differentiate between modules that are in
|
|
memory and modules that are loaded (i.e. visible) from various context
|
|
structures.
|
|
|
|
+ The perl module should only be built if a suitable perl interpreter
|
|
is found on the build machine. For that matter, it has been a
|
|
while since the perl module has even been built, and perl has had
|
|
new releases in the meantime.
|
|
|
|
* OTHER TOOLS
|
|
|
|
+ Copy coreutils' idea of using rsync, not wget, for grabbing .po
|
|
files efficiently.
|
|
|
|
+ Use gnulib's build-aux/git-version-gen for reliable version
|
|
numbers, now that CVS timestamps are no longer available.
|