The GNU C Library version 2.43 is now available

"Andreas K. Huettel" <[email protected]> Sat, 24 Jan 2026 00:18:41 +0100
Newsgroups gmane.org.fsf.announce
Organization Gentoo Linux
Message-ID <13932477.uLZWGnKmhe__36359.4322743424$1769213803$gmane$org@pinacolada>
--nextPart3025979.e9J7NaK4W3
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: "Andreas K. Huettel" <[email protected]>
Subject: The GNU C Library version 2.43 is now available
Date: Sat, 24 Jan 2026 00:18:41 +0100
Message-ID: <13932477.uLZWGnKmhe@pinacolada>
Organization: Gentoo Linux
MIME-Version: 1.0

The GNU C Library
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

The GNU C Library version 2.43 is now available.

The GNU C Library is used as *the* C library in the GNU system and
in GNU/Linux systems, as well as many other systems that use Linux
as the kernel.

The GNU C Library is primarily designed to be a portable=20
and high performance C library.  It follows all relevant=20
standards including ISO C23 and POSIX.1-2024.  It is also=20
internationalized and has one of the most complete=20
internationalization interfaces known.=20

The GNU C Library website is at http://www.gnu.org/software/libc/

Packages for the 2.43 release may be downloaded from:
        http://ftpmirror.gnu.org/libc/
        http://ftp.gnu.org/gnu/libc/

The mirror list is at http://www.gnu.org/order/ftp.html

Distributions are encouraged to track the release/* branches
corresponding to the releases they are using.  The release
branches will be updated with conservative bug fixes and new
features while retaining backwards compatibility.

NEWS for version 2.43
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Major new features:

* The ISO C23 free_sized, free_aligned_sized, memset_explicit, and
  memalignment functions have been added.

* As specified in ISO C23, the assert macro is defined to take variable
  arguments to support expressions with a comma inside a compound
  literal initializer not surrounded by parentheses.

* For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
  strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
  pointers into their input arrays now have definitions as macros that
  return a pointer to a const-qualified type when the input argument is
  a pointer to a const-qualified type.

* The ISO C23 typedef names long_double_t, _Float32_t, _Float64_t, and
  (on platforms supporting _Float128) _Float128_t, introduced in TS
  18661-3:2015, have been added to <math.h>.

* The ISO C23 optional time bases TIME_MONOTONIC, TIME_ACTIVE, and
  TIME_THREAD_ACTIVE have been added.

* On Linux, the mseal function has been added.  It allows for sealing
  memory mappings to prevent further changes during process execution,
  such as changes to protection permissions, unmapping, relocation to
  another location, or shrinking the size.

* Additional optimized and correctly rounded mathematical functions have
  been imported from the CORE-MATH project, in particular acosh, asinh,
  atanh, erf, erfc, lgamma, and tgamma.

* Optimized implementations for fma, fmaf, remainder, remaindef, frexpf,
  frexp, frexpl (binary128), and frexpl (intel96) have been added.

* The SVID handling for acosf, acoshf, asinhf, atan2f, atanhf, coshf, fmodf,
  lgammaf/lgammaf_r, log10f, remainderf, sinhf, sqrtf, tgammaf, y0/j0,
  y1/j1, and yn/jn was moved to compat symbols, allowing improvements in
  performance.

* Experimental support for building with clang has been added.  It requires
  at least clang version 18, aarch64-linux-gnu or x86_64-linux-gnu
  targets, and a libgcc compatible runtime (including libgcc_s.so for
  pthread cancellation and backtrace runtime support).

* On Linux, the openat2 function has been added.  It is an extension of
  openat and provides a superset of its functionality.  It is supported only
  in LFS mode and is a cancellable entrypoint.

* On AArch64, support for 2MB transparent huge pages has been enabled by
  default in malloc (similar to setting glibc.malloc.hugetlb=3D1 tunable).

* On AArch64 Linux targets supporting the Scalable Matrix Extension
  (SME), the clone() system call wrapper will disable the ZA state of the
  SME.

* On AArch64 targets supporting the Branch Target Identification (BTI)
  extension, it is possible to enforce that all binaries in the process
  support BTI using the glibc.cpu.aarch64_bti tunable.

* On AArch64 Linux targets supporting at least one of the branch protection
  extensions (e.g. Branch Target Identification or Guarded Control Stack), =
it
  is possible to use LD_DEBUG=3Dsecurity to make the dynamic linker show
  warning messages about loaded binaries that do not support the
  corresponding security feature.

* On AArch64, vector variants of the new C23 exp2m1, exp10m1, log10p1,
  log2p1, and rsqrt routines have been added.

* On RISC-V, an RVV-optimized implementation of memset has been added.

* On x86, support for the Intel Nova Lake and Wildcat Lake processors
  has been added.

* The test suite has seen significant improvements in particular around
  the scanf, strerror, strsignal functions and multithreaded testing.

* Unicode support has been updated to Unicode 17.0.0.

* The manual has been updated and modernized, in particular also regarding
  many of its code examples.

Deprecated and removed features, and other changes affecting compatibility:

* Support for dumped heaps has been removed.  malloc_set_state() now always
  returns the error code -1.

* The aforementioned change in ISO C23 of the declaration of bsearch,
  memchr, strchr, strpbrk, strrchr, strstr, wcschr, wcspbrk, wcsrchr,
  wcsstr, and wmemchr as const-preserving macros can lead to compilation
  issues in code not set up for it. In particular, gnulib snapshots may need
  to be updated.

* The uimaxabs function has been renamed to umaxabs, following a change
  to the name of that function in ISO C2Y.  The old function continues
  to exist as a compatibility symbol for old binaries.

* The fromfp, fromfpx, ufromfp and ufromfpx functions, and the
  corresponding functions for other floating-point types, now return
  their result in the same type as their floating-point argument, rather
  than intmax_t or uintmax_t, in accordance with a change to the
  definition of these functions in ISO C23.  Existing binaries that use
  the versions returning intmax_t or uintmax_t will continue to work.

* The support for TX lock elision of pthread mutexes has been removed on all
  architectures (powerpc, s390x, x86_64).

* The next linux 6.19 release will remove support for compat syscalls on s3=
90x.
  Therefore the s390-linux-gnu (31bit) configuration is deprecated in the
  glibc 2.43 release and will then be removed with glibc 2.44 release.
  Note that s390x-linux-gnu (64bit) remains supported.

Changes to build and runtime requirements:

* The LD_PROFILE functionality no longer has a default directory for the
  profile data it writes.  Instead, developers are required to set a
  directory explicitly using the LD_PROFILE_OUTPUT environment variable.
  To restore the previous, insecure behavior, processes can be run with
  LD_PROFILE_OUTPUT=3D/var/tmp.

Security related changes:

The following CVEs were fixed in this release, details of which can be
found in the advisories directory of the release tarball:

  GLIBC-SA-2026-0001:
    Integer overflow in memalign leads to heap corruption
    (CVE-2026-0861)

  GLIBC-SA-2026-0002:
    getnetbyaddr and getnetbyaddr_r leak stack contents to DNS resovler
    (CVE-2026-0915)

  GLIBC-SA-2026-0003:
    wordexp with WRDE_REUSE and WRDE_APPEND may return uninitialized
    memory (CVE-2025-15281)

The following bugs were resolved with this release:

  [15503] math: [arm] Support ARM VFPv4 VFMA instruction in fma
  [20473] manual: Missing word in stack allocation documentation.
  [24657] manual: Two mistakes in manual index
  [25669] dynamic-link: Provide extra information when a found library
    file is not suitable
  [28038] stdio: getdelim()/getline() does not add NUL terminator if
    first character is EOF.
  [28267] nptl: nptl: pthread_exit should set cancellation type and
    state
  [28327] math: Wrong return type for {,u}fromfp{,x} functions
  [28376] libc: [meta] Build glibc with Clang
  [29326] math: Usage of double in sqrtf
  [30635] glob: stack-overflow /build/glibc-
    SzIz7B/glibc-2.31/posix/../posix/glob.c:546:9 in glob64
  [31470] libc: inttypes.h provides incorrect macro definitions
  [31664] libc: rfe: please provide openat2()
  [31943] dynamic-link: _dl_find_object can fail if ld.so contains gaps
    between load segments
  [32339] build: iconv functions do not follow symlinks
  [32378] libc: Implement memset_explicit
  [32583] libc: setup_vdso doesn't support two PT_LOAD segments if one
    of them has zero-vaddr
  [32994] libc: pthread_rwlock_init reinitialisation during calls to
    fork()
  [33093] manual: Typo in section 16.9.8 Out-of-Band Data of the manual
  [33129] dynamic-link: Need a version tag to indicate that glibc has
    working GNU2 TLS support
  [33182] build: Some tests leave random directories under /tmp
  [33190] localedata: localedata: Add en_SE for ISO8601 date and time
  [33212] dynamic-link: Add GLIBC_ABI_DT_X86_64_PLT version to indicate
    x86_64 psABI compliance for DT_X86_64_PLT* support
  [33221] dynamic-link: Add GLIBC_ABI_GNU_TLS version to indicate the
    working GNU TLS run-time
  [33227] network: namespace violation in inet-fortified.h
  [33234] libc: s390: Test tst-locale1 fails on s390 32-bit
  [33245] nptl: nptl: error in internal cancellation syscall handling,
    corrupting copy_file_range syscall return value
  [33254] libc: tst-freopen4-mem and tst-freopen64-4-mem FAIL
  [33286] build: Test failure with glibc built with -mno-direct-extern-
    access
  [33289] localedata: Update locale data to Unicode 17.0.0
  [33300] stdio: strip --strip-unneeded "breaks" libc.a (causing
    segfault in Rust programs linked libc statically)
  [33311] build: Testing failure with clang
  [33312] build: Disable -Wimplicit-fallthrough for clang
  [33318] build: -c shouldn't be passed to LIBC_TRY_TEST_CC_OPTION
  [33325] libc: ISO C2y renamed s/uimaxabs/umaxabs/
  [33340] libc: Possible regression in 2.42 termios refactoring re non-
    standard baud rate
  [33356] nptl: creating thread stack with guardsize 0 can erroneously
    conclude MADV_GUARD_INSTALL is available
  [33361] nss: Group merge does not handle ERANGE during merge
  [33376] build: GCC 16 fails to build glibc when configured with
    --disable-default-pie --enable-profile
  [33404] dynamic-link: ld.so crashes when compiled with -Os and
    configured with --enable-stack-protector=3Dall
  [33405] math: Optimize modf/modff for x86_64-v2 aren't compiled with
    -fsignaling-nans
  [33411] math: powl() raises spurious overflow
  [33425] build: setfpucw.c:25:17: error: variable =E2=80=98cw=E2=80=99 set=
 but not used
    [-Werror=3Dunused-but-set-variable=3D]
  [33519] nss: getXXX API fails for turkish locale if nsswitch.conf
    contains "i"
  [33542] libc: x86: wmemset ifunc: stray '!' causing SSE2
  [33547] libc: microblaze: wrong __syscall_cancel_arch after
    89b53077d2a58f00e7debdfe58afabe953dac60d
  [33563] math: powf() fails for 0x1p+8192 ^ 1.0
  [33586] math: [2.43 Regression] FAIL: math/test-float64x-pow
  [33619] math: [2.43 Regression] Many math test failures on x86-64
  [33627] libc: execvp reads uninitialized memory
  [33632] nptl: Incorrect USE_64B_ATOMICS usage on struct new_sem
  [33653] time: __fts64_children_time64 Does Not Support 2038 Problem
  [33677] math: [2.43 Regression] Many math test failures
  [33715] nptl: nptl: pthread_create might act as a cancellation
    entrypoint
  [33717] nptl: nptl:
    pthread_join/pthread_timedjoin_np/pthread_clockjoin_np might not act
    as cancellation entrypoint
  [33752] manual: Doc incorrectly says double and long double may not be
    distinct
  [33814] glob: wordexp with WRDE_REUSE and WRDE_APPEND may return
    uninitialized memory

Release Notes
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

https://sourceware.org/glibc/wiki/Release/2.43

Contributors
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

This release was made possible by the contributions of many people.
The maintainers are grateful to everyone who has contributed
changes or bug reports.  These include:

Adhemerval Zanella
Alejandro Colomar
Andreas K. H=C3=BCttel
Andreas Schneider
Andreas Schwab
Arjun Shankar
Aurelien Jarno
Avinal Kumar
Ben Boeckel
Bruno Haible
Carlos O'Donell
Collin Funk
Cupertino Miranda
DJ Delorie
Davide Cavalca
Dev Jain
Diego Nieto Cid
Dylan Fleming
Eric Wong
=46lorian Weimer
=46r=C3=A9d=C3=A9ric B=C3=A9rat
H. Peter Anvin
H.J. Lu
Hasaan Khan
Henrik Lindstr=C3=B6m
James Chesterman
Jens Remus
Jiamei Xie
Jiayuan Chen
Joan Lled=C3=B3
Joe Ramsay
Jonathan Wakely
Joseph Myers
Jovan Dmitrovic
Justin King
Kacper Piwi=C5=84ski
Luc Michel
Luca Boccassi
Luna Lamb
Maciej W. Rozycki
Mike FABIAN
Osama Abdelkader
Paul Eggert
Paul Zimmermann
Peter Bergner
Pierre Blanchard
Pincheng Wang
Prasanna Paithankar
P=C3=A1draig Brady
Sachin Monga
Sam James
Samuel Thibault
Sergey Kolosov
Siddhesh Poyarekar
Stefan Liebler
Sunil K Pandey
Thiago Jung Bauermann
Uros Bizjak
Wilco Dijkstra
William Hunt
Xi Ruoyao
Xie jiamei
Yao Zihong
Yury Khrustalev
caiyinyu
gfleury
litenglong
remph

We would like to call out the following and thank them for their
tireless patch review:

Adhemerval Zanella
Andreas K. H=C3=BCttel
Arjun Shankar
Carlos O'Donell
Collin Funk
Cupertino Miranda
DJ Delorie
Eric Blake
=46angrui Song
=46lorian Weimer
=46r=C3=A9d=C3=A9ric B=C3=A9rat
gaoxiang
H.J. Lu
Joseph Myers
Mark Wielaard
Mike FABIAN
Neal Frager
Paul Eggert
Paul Zimmermann
Peter Bergner
Philippe Mathieu-Daud=C3=A9
Sam James
Samuel Thibault
Siddhesh Poyarekar
Sunil K Pandey
Uros Bizjak
Wilco Dijkstra
Xi Ruoyao
Yury Khrustalev

=2D-=20
Andreas K. H=C3=BCttel
[email protected]
Gentoo Linux developer
(council, toolchain, base-system, perl, libreoffice)

=2D-=20
PD Dr. Andreas K. H=C3=BCttel
Institute for Experimental and Applied Physics
University of Regensburg
93040 Regensburg
Germany
e-mail [email protected]
http://www.akhuettel.de/
--nextPart3025979.e9J7NaK4W3
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQKvBAABCgCZFiEE/Rnm0xsZLuTcY+rT3CsWIV7VQSoFAml0AdEbFIAAAAAABAAO
bWFudTIsMi41KzEuMTEsMiwyXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25z
Lm9wZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRGRDE5RTZEMzFCMTkyRUU0REM2M0VB
RDNEQzJCMTYyMTVFRDU0MTJBAAoJENwrFiFe1UEq0mwP/ifG8v54XHQBAcyaQBG8
ClzyfqwSVgI4yDw6UVo5FziTOTnuBAgNKMeNtdy2zfpet82NBV5ycf4qNBg8Xcmj
70MCeI1ECO2NgkrkMys09rzrz/siNvexfSlUOoV1q0Ybw4h1eHVS7enRjwgiwSXL
6Bsd1jFLxX93vxEM6UFPkJxdRT2z0J51DkIAtWiE+9ZC1D4q64pOJe+wN0/o98xl
y33lzXA6yb/8L0CQoE/SaVW/AVcgSG08xVuj/8onARwPLWujbYTxQyglvqwqckPo
KVTETvsWE6x2Ay0uqWRQ2/m/gaV3qELkjrXRPTMiwk7htKyp6HF+AyCt/esi9WNq
8ndQbUgEa76dHDnkr/e5zRG0eSa0IEAy9acDYq1GNrZxdK7X8GC8fveljgwpeD5T
JY9tbdkxPdv53i/yFOx0Ru9sgcfpZ2zxoT420l0StQnsU+5sDR3CY7agQ+lrIuSO
s6ykxcuBDd8wRNXFIPY+DCRX5ZBp4KzWUd9gNPz37wnsvHI1uw+MUvvFza3fBVsv
Mr5Itq+up4gslgzYjyP3DE4eF+FRSlqcq971KgQJLDhmPSy4g5ZwgScVFfgr1Ubk
wDM6Blma5W4MNJRb5k0OTH/mZBSa8GzPHT8L6UJGcAfCI+VDu+uKm6dzBOmJbqCd
SFxX/OXMCNtivPWXU/o2/UUi
=ZLIb
-----END PGP SIGNATURE-----

--nextPart3025979.e9J7NaK4W3--