diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 150 |
1 files changed, 0 insertions, 150 deletions
@@ -1,150 +0,0 @@ -GNU m4 TODO - Tasks that need implementing. -*- outline -*- -Copyright (C) 2000-2001, 2006-2008, 2010, 2013-2014, 2017 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 - - Perhaps the gnulib c-stack module or libsigsegv would be useful: - http://lists.gnu.org/archive/html/bug-gnu-utils/2008-01/msg00042.html - -* 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. - - -Local Variables: -mode: outline -outline-regexp: " *[-+*.] \\|" -End: - -Copyright (C) 2000, 2006, 2007, 2009, 2010 Free Software Foundation, -Inc. - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover -Texts. A copy of the license is included in the ``GNU Free -Documentation License'' file as part of this distribution. |