dwww Home | Show directory contents | Find package

2021-05-28  Eric Blake  <eblake@redhat.com>

        version 1.4.19
        * NEWS: Record release date.

2021-05-28  Eric Blake  <eblake@redhat.com>

        tests: Skip signal detection on Haiku
        On Haiku, using 'kill -9' fromm /bin/shactually causes a process to
        die with the non-standard SIGKILLTHR 15, which causes 198.sysval to
        fail from the unexpected value.

        * doc/m4.texi (Sysval): Skip test on Haiku.
        Reported by Bruno Haible,
        https://lists.gnu.org/archive/html/bug-m4/2021-05/msg00004.html

2021-05-26  Bruno Haible  <bruno@clisp.org>

        Enable more single-thread optimizations in gnulib code
        On many systems (esp. BSD ones), building a recent m4 snapshot produces these
        warnings:

        --------------------------------------------------------------------------------
          CC       regex.o
        In file included from ../../lib/regex_internal.h:57:0,
                         from ../../lib/regex.c:70:
        ../../lib/regcomp.c: In function 'rpl_regfree':
        ../../lib/glthread/lock.h:640:38: warning: statement with no effect [-Wunused-value]
         # define glthread_lock_destroy(NAME) 0
                                              ^
        ../../lib/regex_internal.h:60:26: note: in expansion of macro 'glthread_lock_destroy'
         # define lock_fini(lock) glthread_lock_destroy (&(lock))
                                  ^
        ...
        --------------------------------------------------------------------------------
        According to the Gnulib documentation section "Optimizations of multithreaded
        code" several more optimizations can be enabled. This patch
          - enables these single-threading optimizations,
          - by doing so, gets rid of the warnings in regex.c,
          - causes no test failures.

        * configure.ac (GNULIB_REGEX_SINGLE_THREAD, GNULIB_MBRTOWC_SINGLE_THREAD,
        GNULIB_WCHAR_SINGLE_LOCALE): Define as C macros.
        Message-Id: <3311608.oHEOCP8NKg@omega>

2021-05-26  Eric Blake  <eblake@redhat.com>

        maint: Update to newer gnulib
        Gnulib has improved stack overflow detection (the c-stack module now
        uses gnulib's stripped-down libsigsegv on more platforms, without
        having to install GNU libsigsegv); with this update, GNU Linux systems
        get stack overflow protection without an external library dependency.
        * gnulib: Update to latest.
        * NEWS: Mention the impact.

2021-05-12  Eric Blake  <eblake@redhat.com>

        maint: translation string tweak
        * src/m4.c (usage): Tweak translation of a newline.
        Reported by Benno Schulenberg,
        https://lists.gnu.org/archive/html/m4-discuss/2021-05/msg00011.html

2021-05-11  Eric Blake  <eblake@redhat.com>

        maint: post-release administrivia
        * NEWS: Add header line for next release.
        * .prev-version: Record previous version.
        * cfg.mk (old_NEWS_hash): Auto-update.

        version 1.4.18d
        * NEWS: Recored release date.

2021-05-10  Eric Blake  <eblake@redhat.com>

        po: fix syntax-check
        * po/POTFILES.in: Update list to match previous patch.

        m4: translate more strings
        * src/m4.c (usage): Split large paragraphs, and mark for translation.
        (main): Translate more strings.
        * src/builtin.c: Likewise.
        * src/eval.c (evaluate): Likewise.
        * src/format.c (expand_format): Likewise.
        * src/freeze.c: Likewise.
        * src/input.c: Likewise.
        * src/macro.c: Likewise.
        * src/output.c: Likewise.
        Reported by Benno Schulenberg:
        https://lists.gnu.org/archive/html/m4-discuss/2021-05/msg00005.html

2021-05-10  Eric Blake  <eblake@redhat.com>

        maint: update gnulib
        Fix several issues reported by Bruno Haible while testing 1.4.18b:
        https://lists.gnu.org/archive/html/bug-m4/2021-05/msg00002.html
        https://lists.gnu.org/archive/html/bug-m4/2021-05/msg00003.html

        * gnulib: Bump to latest, for various fixes.
        * NEWS: Mention this.

2021-05-10  Eric Blake  <eblake@redhat.com>

        maint: update m4-latest* symlinks during upload
        Avoid the situation we had for several years where m4-latest.tar.xz
        pointed to m4-1.4.17.tar.xz in spite of m4-1.4.18.tar.xz existing.
        https://lists.gnu.org/archive/html/m4-discuss/2021-05/msg00003.html

        * cfg.mk (GNUPLOADFLAGS): Update *-latest symlinks during gnupload.

2021-05-10  Eric Blake  <eblake@redhat.com>

        maint: mention ci project
        Bruno Haible has added a continuous integration environment:
        https://lists.gnu.org/archive/html/bug-m4/2020-03/msg00000.html

        * HACKING (Continuous Integration): New section.

2021-05-10  Bruno Haible  <bruno@clisp.org>

        eval: avoid undefined behaviour when parsing -2147483648
        * src/eval.c (eval_lex): Use an unsigned variable for accumulating the
        value.
        https://lists.gnu.org/archive/html/bug-m4/2021-05/msg00001.html

2021-05-07  Eric Blake  <eblake@redhat.com>

        maint: post-release administrivia
        * NEWS: Add header line for next release.
        * .prev-version: Record previous version.
        * cfg.mk (old_NEWS_hash): Auto-update.

        version 1.4.18b
        * NEWS: Record release date.

        maint: prepare for beta release
        * all: Prefer https over http in URLs.
        * doc/m4.texi (History): Update URLs to follow redirects.
        * NEWS: Prepare for release.
        * cfg.mk (old_NEWS_hash): Regenerate via 'make update-NEWS-hash'
        * HACKING: Update URL to gnulib, drop reference to CVS.

        maint: update gnulib to latest
        * gnulib: Pick up latest in preparation for release.

2021-05-07  Eric Blake  <eblake@redhat.com>

        maint: update bootstrap, (re-)enable po file generation
        In commit 4694c4e67, I disabled bootstrap pulling in po files, because
        I got an error while attempting to get them, and remembered that while
        the experimental 2.0 has a .pot file, branch-1.4 (and the 1.4.18
        release) historically did not.  Basically, since the translation
        project does not have any m4.pot corresponding to a released m4 that
        needs it, they deleted tp/latest/m4, and with nothing to pull from,
        rsync fails.  I did not, however, realize that commit 610290de had
        intentionally added translation support, such that m4 1.4.19 WILL have
        translations; so until I get that directory reinstated by releasing
        1.4.18b, I'll just use './bootstrap --skip-po'.

        Meanwhile, Gary's upstream bootstrap has had some commits
        (https://github.com/gnulib-modules/bootstrap.git)
        Regenerate them via:
        for f in gl/build-aux/*; do cp ~/bootstrap/build-aux/$(basename $f) $f; done
        gl/build-aux/inline-source gl/build-aux/bootstrap.in > bootstrap

        * gl/build-aux/*: Sync from upstream.
        * bootstrap: Regenerate.
        * bootstrap.conf (m4_bootstrap_options_prep): Re-enable po.
        * NEWS: Document this as intentional.
        Fixes: 4694c4e67

2021-05-07  Eric Blake  <eblake@redhat.com>

        maint: fix syntax-check issues
        * src/Makefile.am (m4_LDADD): Rename...
        (LDADD): ...to this, and use spelling that satisfies syntax-check.
        * po/POTFILES.in: Update to satisfy syntax-check.
        * cfg.mk (old_NEWS_hash): Update with 'make update-NEWS-hash'.

        maint: bump copyright year
        * all: Use 'make update-copyright' to add 2021.

        README: add GNU Project notice
        * README: Add section to attract more people towards the GNU project.
        Inspired by a suggestion from Jose E. Marchesi <jemarch@gnu.org> on
        the gnu-prog-discuss mailing list.

2021-04-22  Eric Blake  <eblake@redhat.com>

        m4: change command-line -H default
        * src/m4.h (HASHMAX): Bump to ~64k.
        * doc/m4.texi (Limits control): Document it.
        * NEWS: Likewise.

        maint: another gnulib update
        * gnulib: Update to latest, to fix build on rawhide.

2021-04-21  Eric Blake  <eblake@redhat.com>

        symtab: use less memory in pushdef stacks
        No need to xstrdup identical names when we can share the same name
        across the pushdef stack.

        * src/symtab.c (free_symbol): Don't free shared name.
        (lookup_symbol): Share name across pushdef stack.

2021-04-21  Eric Blake  <eblake@redhat.com>

        symtab: make symtab private
        No need for a leaky abstraction of freezing to have to duplicate how
        our symbol hash table is organized; use the public function
        hack_all_symbols instead.  This will make it easier to refactor the
        symbol table (such as automatic resizing, or switching to a trie).

        * src/m4.h (symtab, SYMBOL_NEXT): Make private.
        * src/freeze.c (produce_frozen_state): Split out...
        (freeze_symbol): ...new helper, for use by hack_all_symbols.
        * src/symtab.c (lookup_symbol, symtab_print_list): Update to treat
        next as internal-only code.

2021-04-21  Eric Blake  <eblake@redhat.com>

        symtab: sort by hash before name
        It is faster to do an integer compare than a string compare when
        managing hash table collisions (reserving a string compare for ties).
        Testing with CFLAGS=-DDEBUG_SYM=1 and 'time M4=src/m4 autoconf -f',
        the results are noticeable; on my machine, execution speeds up from
        2.3s to 2.2s, and the debug trace that used to report:

        m4: lookup mode 0 called 1243301 times, 7859589 compares, 6734330 misses, 23941043 bytes

        now reports

        m4: lookup mode 0 called 1243301 times, 1125259 compares, 0 misses, 12433237 bytes

        * src/m4.h (struct symbol): Add hash member.
        * src/symtab.c (lookup_symbol): Sort by hash first, then name.
        (symtab_print_list): Add hash debug.

2021-04-21  Eric Blake  <eblake@redhat.com>

        maint: switch from git:// to https:// for gnulib submodule
        https:// is nicer than git:// for a transport for avoiding
        man-in-the-middle attacks, provided that the server is using a
        new-enough version of git to make https:// efficient (which
        savannah does).
        * .gitmodules: Prefer better URL.

2021-04-21  Paul Eggert  <eggert@cs.ucla.edu>

        maint: port to Solaris 10
        Add libraries needed by current Gnulib.
        * src/Makefile.am (m4_LDADD): Add LIB_CLOCK_GETTIME,
        LIB_GETRANDOM, LIB_HARD_LOCALE, LIB_POSIX_SPAWN,
        LIB_SETLOCALE_NULL, LIBUNISTRING, INTL_MACOSX_LIBS.
        These are all needed by current Gnulib, according to gnulib-tool.
        LIB_CLOCK_GETTIME is certainly needed for Solaris 10; otherwise
        the m4 link fails with clock_gettime not found.

        maint: port to macOS 11.2.3 (arm64)
        * m4/gnulib-cache.m4: Add fopen-gnu, replacing cloexec and fopen.
        Avoid getopt-posix-tests, since they are not needed for m4
        and currently fail on macOS 11.2.3 (arm64).
        * src/builtin.c (m4_incr, m4_decr): Avoid undefined behavior
        on integer overflow that causes tests to fail on macOS.
        * src/debug.c (debug_set_output):
        * src/output.c (m4_tmpfile, m4_tmpopen):
        * src/path.c (m4_fopen):
        Use GNU fopen with "e" rather than set_cloexec_flag.  This is
        simpler, and works around a Gnulib bug on macOS with fopen
        being replaced by rpl_fopen sometimes but not other times.
        * src/freeze.c (produce_frozen_state): Use GNU fopen with "e";
        no need to expose the fd to subprocesses.

        build: update gnulib submodule to latest

2021-04-17  Eric Blake  <eblake@redhat.com>

        symtab: drop redundant symbol flag
        In writing the previous patch, I noticed that the shadow flag is only
        ever set when a pushdef stack is present, which makes it redundant now
        that the pushdef stack is separate from the hash collision stack.

        * src/m4.h (SYMBOL_SHADOWED): Delete.
        * src/builtin.c (dump_symbol): Simplify, now that hack_all_symbols
        no longer visits shadowed macros.
        * src/symtab.c (lookup_symbol, symtab_print_list): Simplify.

2021-04-17  Eric Blake  <eblake@redhat.com>

        symtab: better handling of macro stacks
        I ran into a scenario where running a program took 22s with the
        default -H509, but less than a second with -H517 [1].  The culprit?  A
        collision between 'stack' and 'substr' in the default hash table size
        caused lookups for substr to get progressively slower as pushdef stack
        got deeper.  This is easy enough to fix, and may also make it easier
        to dynamically grow the hashtable.

        [1] https://lists.gnu.org/archive/html/bug-m4/2021-04/msg00000.html

        * src/m4.h (struct symbol): Add stack member.
        * src/symtab.c (lookup_symbol): Separate stack from bucket list.
        (symtab_print_list): Update traversal to match.
        * src/freeze.c (produce_frozen_state): Likewise.
        (reverse_symbol_list): Reverse stack, not bucket.

2021-04-17  Eric Blake  <eblake@redhat.com>

        input: optimize macro tail-call memory usage
        I encountered an m4 program that performed over 20 million iterations
        of a tail-call recursion paradigm.  Without this patch, memory usage
        grew to over 6 gigabytes, pausing the program for several seconds when
        the recursion finally ended just to reclaim the memory.  But with the
        patch, m4 never needed more than 3 megabytes of resident memory.

        * src/input.c (push_string_init): Prune empty string blocks before
        starting another one.

2021-04-17  Eric Blake  <eblake@redhat.com>

        maint: update gnulib and fix build failures
        I got failures when trying to bootstrap:

        bootstrap: getting translations into po/.reference for m4...
        receiving incremental file list
        rsync: change_dir "/latest/m4" (in tp) failed: No such file or directory (2)

        since m4-1.4 has no translation files, and the translation project
        dropped the stale .po files for the unreleased 1.9 development branch.

        Once that was fixed, I also got compilation failures, from an
        incomplete update to the gnulib execute module:

        builtin.c: In function 'm4_syscmd':
        builtin.c:968:44: error: passing argument 3 of 'execute' from incompatible pointer type [-Werror=incompatible-pointer-types]
          968 |   status = execute (ARG (0), SYSCMD_SHELL, prog_args, NULL, false,
              |                                            ^~~~~~~~~
              |                                            |
              |                                            const char **

        Fixes: 4e5c2c0157

        * gnulib: Update to latest.
        * bootstrap.conf (copyright_holder): Silence bootstrap warning.
        (m4_bootstrap_options_prep): Turn off po update.

2020-12-12  Bruno Haible  <bruno@clisp.org>

        Update after gnulib changed.
        * src/builtin.c (m4_syscmd): Update 'execute' invocation.
        (m4_esyscmd): Update 'create_pipe_in' invocation.
        * po/POTFILES.in: Remove lib/w32spawn.h. Add lib/openat-die.c, lib/os2-spawn.c.

2020-08-23  Paul Eggert  <eggert@cs.ucla.edu>

        * HACKING: Autoconf 2.64 required now.

2020-08-23  Bruno Haible  <bruno@clisp.org>

        build: Fix bootstrap failure with the newest gnulib.
        * configure.ac: Require Autoconf 2.64 at least.

2020-07-17  Paul Eggert  <eggert@cs.ucla.edu>

        Port recent changes to AIX 7.1
        * src/Makefile.am (m4_LDADD): Add LIB_MBRTOWC, LIB_SETLOCALE.
        AIX 7.1 needs these to get the pthread support linked in.

2020-07-13  Paul Eggert  <eggert@cs.ucla.edu>

        Support gettext and proper names
        This way, ‘m4 --version’ outputs “Written by René Seindal”
        instead of “Written by Rene' Seindal” when in a UTF-8 locale.
        As the Translation project adds translations, NLS should
        get better.
        * .gitignore: Add translation-related file names.
        * AUTHORS, ChangeLog-2014, NEWS, README, acinclude.m4, c-boxes.el:
        Spell “François” and “René” without ASCIIfying.
        * HACKING: Add Gettext as a prereq.
        * Makefile.am (SUBDIRS): Add po.
        * configure.ac: Do not use -Wvla.  Add AM_GNU_GETTEXT
        and AM_GNU_GETTEXT_VERSION calls.
        * lib/Makefile.am (MAINTAINERCLEANFILES): Define to empty.
        * m4/gnulib-cache.m4: Add configmake, gettext-h, propername,
        and setlocale modules.
        * po/POTFILES.in: New file.
        * src/Makefile.am (m4_LDADD): Add $(LIBICONV), $(LIBINTL).
        * src/m4.c: Include configmake.h, propername.h.
        (main): Set the locale.
        * src/m4.h: Include locale.h, gettext.h.
        (textdomain, bindtextdomain) [!ENABLE_NLS]: Provide defaults.
        (_): Now an alias for gettext, instead of a no-op.

        Use c-ctype.h instead of ctype.h
        This simplifies the code a bit, and prepares for setlocale.
        * m4/gnulib-cache.m4: Add c-ctype module.
        * src/builtin.c (numeric_arg, m4_undivert, expand_user_macro):
        * src/eval.c (eval_lex):
        * src/format.c (arg_int, arg_long, arg_double, expand_format):
        * src/freeze.c (GET_NUMBER): m
        * src/input.c (next_token, peek_token):
        * src/macro.c (expand_argument):
        Prefer c-ctype macros to ctype macros.
        Omit now-unnecessary calls to to_uchar.
        * src/m4.h: Include c-ctype.h instead of ctype.h.

2020-07-11  Paul Eggert  <eggert@cs.ucla.edu>

        Regenerate bootstrap

        Convert m4.texi from Latin-1 to UTF-8
        * HACKING: Texinfo 4.11 and Autoconf 2.63 are now prereqs.
        * doc/m4.texi: Convert to UTF-8.

2020-07-05  Paul Eggert  <eggert@cs.ucla.edu>

        Port to recent GCC with --enable-gcc-warnings
        * m4/gnulib-cache.m4: Add attribute, verify.
        * src/m4.c (m4_failure, m4_failure_at_line): New functions.
        These replace all uses of M4ERROR ((EXIT_FAILURE, ...)) and
        M4ERROR_WITH_LINE ((EXIT_FAILURE, ...), so that the compiler can
        deduce they do not return.
        * src/m4.h: Include attribute.h, verify.h.
        (M4_GNUC_ATTRIBUTE, M4_GNUC_UNUSED, M4_GNUC_PRINTF)
        (M4_GNUC_NORETURN, M4_GNUC_PURE): Remove.
        All uses replaced by corresponding attributes from attribute.h.
        Also, use attribute.h’s FALLTHROUGH macro as needed in all files.
        * src/macro.c (expand_macro): Cast to uintptr_t instead of to char *
        to pacify GCC alignment warning.

        maint: update copyright date
        Arrived at via:
        make update-copyright
        gl/build-aux/inline-source gl/build-aux/bootstrap.in > bootstrap

        build: adjust to gnulib changes
        * configure.ac: Require Autoconf 2.63; needed by Gnulib.
        * m4/gnulib-cache.m4: Regenerate.

2020-07-05  Bruno Haible  <bruno@clisp.org>

        Update after gnulib changed
        * src/output.c (m4_tmpfile, m4_tmpopen): Update fopen_temp invocations.
        * gl/lib/clean-temp.c.diff: Remove file, no longer needed.

2020-07-05  Paul Eggert  <eggert@cs.ucla.edu>

        build: update gnulib submodule to latest

2017-01-02  Eric Blake  <eblake@redhat.com>

        maint: bump copyright year
        Needed to keep 'make syntax-check' passing.

        * gnulib: Update to latest.
        * bootstrap: Regenerate.
        * all files: Use 'make update-copyright' to bump year.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: post-release administrivia
        * NEWS: Add header line for next release.
        * .prev-version: Record previous version.
        * cfg.mk (old_NEWS_hash): Auto-update.

        version 1.4.18
        * NEWS: Record release date.

        doc: abbreviate and update release history
        * doc/m4.texi (History): Shorten, and call out today's release.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: automate creation of release tag
        The gnulib makefile was already set up to automate things with
        'make release ...', but we were still doing things by hand, and
        thereby risking missing some steps.

        * m4/gnulib-cache.m4 (gl_MODULES): Import do-release-commit-and-tag.
        * gnulib: Update, for latest version of the script.
        * HACKING: Mention its use.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: generate ChangeLog from git commits
        Follow the practice set in numerous other GNU projects, where
        the ChangeLog (since 2015) is generated from git commit messages.
        This avoids duplication or subtle differences between the two,
        as well as making it easier to merge patches across branches
        (as good as Bruno Haible's 'git-merge-changelog' helper program
        is, it still doesn't handle cross-branch cherry-picks very well).

        * ChangeLog: Move...
        * ChangeLog-2014: ...to this.
        * Makefile.am (EXTRA_DIST): Ship renamed file.
        (gen-ChangeLog): New rule, copied mostly from coreutils.
        (dist-hook): Generate the ChangeLog.
        * m4/gnulib-cache.m4 (gl_MODULES): Import gitlog-to-changelog.
        * .gitignore: Ignore ChangeLog.
        * .gitattributes: Likewise.
        * HACKING: Reword to match new procedure, and simplify by
        referring to an external description of ChangeLog style.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: summarize highlights of pending release
        * NEWS: Add some blurbs.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: make silent builds the default
        The user still has full control over verbosity levels, both setting
        their per-project defaults at configure time (or even in a config.site
        file), as well as a per-run override. But these days, most projects
        are defaulting to silent rules without user intervention.

        * configure.ac (AM_SILENT_RULES): Add, to match what most projects
        are doing these days.

2016-12-31  Eric Blake  <eblake@redhat.com>

        maint: release no longer creates a diff file
        Ever since commit f1cf390 (1.4.14 release), we no longer create
        diff files as part of the release process.  These days, it is
        assumed that it is easier to download a fresh tarball rather
        than to try and use a diff file to patch an older tarball.

2016-12-30  Eric Blake  <eblake@redhat.com>

        doc: drop obsolete @setcontentsaftertitlepage
        texinfo 6.1 complains (during 'make dvi'):

        /home/eblake/m4-1.4/doc/./m4.texi:9: @setcontentsaftertitlepage has been remove
        d as a Texinfo command; move your @contents command if you want the contents af
        ter the title page..

        It turns out that eliminating the command has no effect - modern
        tools correctly emit the contents in-place, right after the title
        page, so it was leftover cruft from an older time.

        * doc/m4.texi: Satisfy newer texinfo.

2016-12-29  Eric Blake  <eblake@redhat.com>

        build: update to latest gnulib
        I hit a weird failure during 'make check', and traced it to a recent
        gnulib regression in parallel test safety.  Pick up the gnulib fix.

        * gnulib: Update to latest, to fix failure in getopt tests.

2016-12-29  Eric Blake  <eblake@redhat.com>

        maint: regenerate bootstrap
        Missed during the copyright update.

        * bootstrap: Regenerate.

2016-12-29  Eric Blake  <eblake@redhat.com>

        maint: bump copyright year
        Sadly, there's no commit in 2015, which means we don't get to benefit
        from using a copyright range.

        Done with 'make update-copyright'.

        * all files: Version control now has a commit in 2016.

2016-12-29  Eric Blake  <eblake@redhat.com>

        gnulib: Update to latest
        * gnulib: Update to latest.
        * m4/gnulib-cache.m4: Regenerate.
        * src/macro.c (expand_macro): Deal with obstack API change.
        * src/builtin.c (mkstemp_helper): Likewise.

Generated by dwww version 1.15 on Fri May 24 02:19:11 CEST 2024.