-
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=1 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=security 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.