This is to announce m4-1.4.21, a stable release.

This release is being made mainly to cater to recent glibc changes in
light of the C23 language standard.  However, it also includes fixes
for some corner-case bugs in eval and when using the defn macro on
builtins.

There have been 19 commits by 2 people in the 39 weeks since 1.4.20.

See the NEWS below for a brief summary.

Thanks to everyone who has contributed!
The following people contributed changes to this release:

  Eric Blake (14)
  Paul Eggert (5)

Eric Blake
 [on behalf of the m4 maintainers]
==================================================================

Here is the GNU m4 home page:
    https://gnu.org/s/m4/

Here are the compressed sources:
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.gz   (3.4MB)
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.bz2   (2.5MB)
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.xz   (2.0MB)

Here are the GPG detached signatures:
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.gz.sig
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.bz2.sig
  https://ftpmirror.gnu.org/m4/m4-1.4.21.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

Here are the SHA256 and SHA3-256 checksums:

  File: m4-1.4.21.tar.gz
  SHA256 sum:   38ae59f7a30bf9c108193cc5c25fbb06014f21e230c7ede2eff614f7b7c37ed8
  SHA3-256 sum: 15e3726714fd70bfe4436a4f3214bbc007cb88eaaf00a119d302fb2c2cb3e60d

  File: m4-1.4.21.tar.bz2
  SHA256 sum:   dc487e11d2f0c9e01555bb1af26be4eae983ec8f0726746505b4327186eb21fc
  SHA3-256 sum: bf7ce4a68d060833e75741523d3d65a7eca329ace27689f5979a2803a42b9aae

  File: m4-1.4.21.tar.xz
  SHA256 sum:   f25c6ab51548a73a75558742fb031e0625d6485fe5f9155949d6486a2408ab66
  SHA3-256 sum: 17470ef40b4c09ef424e76e1418ffba4a2eb5b68ad9ca23cbd2659461468afed

Verify the SHA256 checksum with either sha256sum, sha256, or
'shasum -a 256'.

Verify the SHA3-256 checksum with 'cksum -a sha3 -l 256 --base64'
from coreutils-9.8.

Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify m4-1.4.21.tar.gz.sig

The signature should match the fingerprint of the following key:

  pub   rsa2048/0xA7A16B4A2527436A 2010-04-16 [SC]
        Key fingerprint = 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A
  uid                   [ unknown] Eric Blake <[email protected]>
  uid                   [ unknown] Eric Blake (Free Software Programmer) 
<[email protected]>
  uid                   [ unknown] [jpeg image of size 6874]
        Key fingerprint = 4441 8D9D 02D6 9912 052A  708E D205 1C2F D2E4 726C
  
  pub   rsa2048/0xA7A16B4A2527436A 2010-04-16 [SC]
        Key fingerprint = 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A
  uid                   [ unknown] Eric Blake (Free Software Programmer) 
<[email protected]>
  uid                   [ unknown] Eric Blake <[email protected]>
  uid                   [ unknown] [jpeg image of size 6874]
        Key fingerprint = 4441 8D9D 02D6 9912 052A  708E D205 1C2F D2E4 726C

If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to retrieve
or refresh it, and then rerun the 'gpg --verify' command.

  gpg --locate-external-key [email protected]

  gpg --recv-keys A7A16B4A2527436A

  wget -q -O- 
'https://savannah.gnu.org/project/release-gpgkeys.php?group=m4&download=1' | 
gpg --import -

As a last resort to find the key, you can try the official GNU
keyring:

  wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
  gpg --keyring gnu-keyring.gpg --verify m4-1.4.21.tar.gz.sig

This release is based on the m4 git repository, available as

  git clone https://https.git.savannah.gnu.org/git/m4.git

with commit fe2f13ab9ab9b3e712c6529f0b2a49a81feb6ce2 tagged as v1.4.21.

For a summary of changes and contributors, see:

  https://gitweb.git.savannah.gnu.org/gitweb/?p=m4.git;a=shortlog;h=v1.4.21

or run this command from a git-cloned m4 directory:

  git shortlog v1.4.20..v1.4.21

This release was bootstrapped with the following tools:
  Autoconf 2.72.90
  Automake 1.18.1
  Gnulib 2026-02-03 c6842ec25c6d5b1596da4eb6b68603f9578b23e9

NEWS

* Noteworthy changes in release 1.4.21 (2026-02-06) [stable]

** Fix the `eval' builtin to reject input like `0x' that C does not
   accept as an integer literal, rather than silently treating it as zero
   (present since "the beginning").

** Fix the `define' and `pushdef' builtins to always warn when attempting
   to concatenate the result of using the `defn' macro on a builtin macro
   with anything else.  This is a counterpart to the change in m4 1.4.11
   that issues a warning when `defn' with multiple arguments attempts to
   perform concatenation.  Attempting to use the output of `defn' anywhere
   other than a lone argument during macro definition has never been
   portable, but now the outcome is always the remaining text, rather
   than being dependent on whether `defn' was used before or after the
   other text (present since "the beginning").

** Port to glibc 2.43, which implements functions like strchr as macros
   when compiled with a C23 compiler.


-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org


Reply via email to