This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=e173b6eba5a368103502f281805dd38489475447 The branch, master has been updated via e173b6eba5a368103502f281805dd38489475447 (commit) via 1cb7815415079b947f6974d7708d6da4a659783a (commit) from 0706b4d0de3ff3d43661911899f8eaf25498adb7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e173b6eba5a368103502f281805dd38489475447 Author: Eric Blake <[EMAIL PROTECTED]> Date: Mon Jan 14 21:55:45 2008 -0700 * TODO: Update with some newer URLs. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> commit 1cb7815415079b947f6974d7708d6da4a659783a Author: Eric Blake <[EMAIL PROTECTED]> Date: Mon Jan 14 21:43:02 2008 -0700 Verify linear `index'. * tests/builtins.at (index): New test. (translit): Make test take longer, to make quadratic algorithms more apparent. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 9 +++++++++ TODO | 33 ++++++++++++++++++++++++++------- tests/builtins.at | 51 +++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 78 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index b3f48a2..f7e861b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-01-15 Eric Blake <[EMAIL PROTECTED]> + + * TODO: Update with some newer URLs. + + Verify linear `index'. + * tests/builtins.at (index): New test. + (translit): Make test take longer, to make quadratic algorithms + more apparent. + 2007-12-20 Eric Blake <[EMAIL PROTECTED]> Stage 9: share rather than copy single-arg refs. diff --git a/TODO b/TODO index 43eaa47..78ee259 100644 --- a/TODO +++ b/TODO @@ -1,12 +1,18 @@ GNU m4 TODO - Tasks that need implementing. -*- outline -*- -Copyright (C) 2000, 2001, 2006, 2007 Free Software Foundation, Inc. +Copyright (C) 2000, 2001, 2006, 2007, 2008 Free Software Foundation, Inc. Tell the maintainers at <[EMAIL PROTECTED]> 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 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. @@ -51,7 +57,8 @@ for any of these ideas or if you have others to add. patsubst(qindir(`include', f), `b', x) z'x - + Use the TOS input quoting for qindir to fix this bug: + + Use the TOS input quoting for qindir to fix this undesirable POSIX + behavior: define(`x', -'-) define(y, defn(`x')) @@ -74,7 +81,7 @@ for any of these ideas or if you have others to add. + 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.). + 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 @@ -100,6 +107,10 @@ for any of these ideas or if you have others to add. 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') @@ -115,9 +126,17 @@ for any of these ideas or if you have others to add. structures. + The perl module should only be built if a suitable perl interpreter - is found on the build machine. + 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 - + Automake 1.5 doesn't seem to like pkglibexec_LTLIBRARIES += - See modules/Makefile.am. + + Automake 1.11 will allow some Makefile.am cleanups: + http://lists.gnu.org/archive/html/m4-patches/2007-08/msg00008.html + + + 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. diff --git a/tests/builtins.at b/tests/builtins.at index c68ab33..b8d5386 100644 --- a/tests/builtins.at +++ b/tests/builtins.at @@ -1,5 +1,5 @@ # Hand crafted tests for GNU M4. -*- Autotest -*- -# Copyright (C) 2001, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2001, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is part of GNU M4. # @@ -524,6 +524,36 @@ AT_CLEANUP ## ----- ## +## index ## +## ----- ## + +AT_SETUP([index]) + +dnl This used to be quadratic, taking millions of comparisons, +dnl but should now operate in linear time with only several thousand checks. +AT_DATA([in], [M4_ONE_MEG_DEFN[dnl +index(substr(f, `0', `500000')-, substr(f, `0', `100000')-) +]]) +AT_CHECK_M4([in], [0], [[400000 +]]) + +dnl This validates that index is 8-bit safe. +AT_DATA([in], [[index(`1«2', `»') +index(`1«2', `«') +index(`1«2', `«1') +index(`1«2', `«2') +]]) +AT_CHECK_M4([in], [0], [[-1 +1 +-1 +1 +]]) + +AT_CLEANUP + + + +## ----- ## ## indir ## ## ----- ## @@ -1071,15 +1101,20 @@ z tmfs not fnix ]]) -dnl This used to be quadratic, taking more than 25 million comparisons, +dnl This used to be quadratic, taking millions of comparisons, dnl but should now operate in linear time with only several thousand checks. -AT_DATA([[in]], -[[translit(`a]m4_for([i],[1],[5000],[],[[b]])[', - `]m4_for([i],[1],[5000],[],[[a]])[b', - `c]m4_for([i],[1],[5000],[],[[d]])[') +AT_DATA([in], [M4_ONE_MEG_DEFN[dnl +define(`a_', translit(substr(f, `0', `50000'), ` +', `a'))dnl +define(`b_', translit(substr(f, `0', `50000'), ` +', `b'))dnl +define(`d_', translit(substr(f, `0', `50000'), ` +', `d'))dnl +define(`c'd_, `pass')dnl +translit(`a'b_, a_`b', `c'd_) +]]) +AT_CHECK_M4([in], [0], [[pass ]]) -AT_CHECK_M4([in], [0], [[c]m4_for([i],[1],[5000],[],[[d]]) -]) dnl This validates that ranges are built using unsigned chars. AT_DATA([in], [[translit(`«abc~', `~-»') hooks/post-receive -- GNU M4 source repository
