GNU C Library 2.40 已发布,GNU C Library 被设计为可移植和高性能的 C 库。它遵循所有相关标准,包括 ISO C11 和 POSIX.1-2017,也是已知的最完善的国际化接口之一,广泛应用于 GNU/Linux 系统以及其他使用 Linux 内核的系统。
此版本带来了包括对 ISO C23 标准的部分支持、一个用于测试 setuid 程序的新可调程序、改进的 64 位 Arm 向量支持,以及一些安全修复。
主要新功能包括:
- 当使用 GCC 14.1 或更高版本来使用 __builtin_stdc_bit_ceil 等内置函数时,<stdbit.h> header type-generic macros 已被更改,以便在目标文件支持时,支持具有任意精度的 unsigned __int128 和/或 unsigned _BitInt(N) 操作数。
-
GNU C 库现在支持功能测试宏 _ISOC23_SOURCE,以启用 ISO C23 标准中的功能。GNU C 库仅支持此标准中的部分功能。旧名称 _ISOC2X_SOURCE 仍受支持。C23 中的功能也可通过 _GNU_SOURCE 启用,或通过使用 GCC 选项 -std=c23、-std=gnu23、-std=c2x 或 -std=gnu2x 进行编译来启用。
-
<math.h> 中现在支持以下 ISO C23 函数系列(在 TS 18661-4:2015 中引入)。每个系列都包含 float、double、long double、_FloatN 和 _FloatNx 函数,以及 <tgmath.h> 中的 type-generic 宏。
-
指数函数:exp2m1、exp10m1。
-
对数函数:log2p1、log10p1、logp1。
-
-
可以使用新的可调参数 glibc.rtld.enable_secure 来运行程序,就像它是 setuid 进程一样。目前,这是一个测试工具,用于对 AT_SECURE 程序进行更广泛的验证测试,并非安全功能。
-
在 Linux 上,epoll header 已更新,包含 epoll ioctl 定义以及 Linux kernel 6.9 中添加的相关结构。
-
fortify 功能已得到显著增强,可用于使用 clang 针对 GNU C 库构建程序。
-
为 aarch64 的矢量库添加了许多函数: acosh、asinh、atanh、cbrt、cosh、erf、erfc、hypot、pow、sinh、tanh
-
在 x86 上,memset 现在可以使用 non-temporal stores 来提高大量写入的性能。此行为由新的可调参数 x86_memset_non_temporal_threshold 控制。
更多详细信息可参阅发布公告。