GNU C Library 2.43 正式发布。该库旨在兼顾可移植性与高性能,严格遵循多项权威标准,涵盖 ISO C11 和 POSIX.1-2017,并以其高度成熟的国际化支持而著称,是 GNU/Linux 及其他基于 Linux 内核系统的基石组件。
核心更新亮点如下:
free_sized、free_aligned_sized、memset_explicit 以及 memalignment 函数。assert 宏现已支持可变参数形式,以确保在复合字面量初始化器中能正确处理未加括号且含逗号的表达式。bsearch、memchr、strchr、strpbrk、strrchr、strstr、wcschr、wcspbrk、wcsrchr、wcsstr 和 wmemchr 等函数,在返回指向输入数组内部指针时,已实现为类型安全宏:当输入参数为指向 const 限定类型的指针时,对应宏将返回同样具有 const 限定的指针类型。<math.h></math.h> 中新增 ISO C23 引入的类型别名:long_double_t、_Float32_t、_Float64_t,以及在支持 _Float128 的平台上提供的 _Float128_t(源自 TS 18661-3:2015)。TIME_MONOTONIC、TIME_ACTIVE 和 TIME_THREAD_ACTIVE。mseal 系统调用封装函数,用于对内存映射区域施加“密封”保护,防止运行时发生权限变更、解除映射、迁移或缩小尺寸等操作。acosh、asinh、atanh、erf、erfc、lgamma 和 tgamma 等,均已实现符合 IEEE 754 要求的正确舍入。fma、fmaf、remainder、remainderf、frexpf、frexp、frexpl(binary128)及 frexpl(intel96)提供了全新优化实现。acosf、asinhf、atan2f、atanhf、coshf、fmodf、lgammaf/lgammaf_r、log10f、remainderf、sinhf、sqrtf、tgammaf、y0/j0、y1/j1 与 yn/jn 的 SVID 兼容逻辑迁移至兼容符号层,显著提升主路径执行效率。aarch64-linux-gnu 和 x86_64-linux-gnu 架构,依赖与 libgcc 兼容的运行时环境(含 libgcc_s.so,用于 pthread 取消与回溯支持)。openat2 函数,作为 openat 的功能增强版,提供更丰富的打开选项;仅在 LFS(Large File Support)模式下启用,且为线程可取消接口。malloc 默认启用 2MB 透明巨页支持(效果等同于设置 glibc.malloc.hugetlb=1 tunable)。clone() 系统调用封装器将在子进程中自动禁用 SME 的 ZA 寄存器状态。
glibc.cpu.aarch64_bti 可调参数强制要求所有加载的二进制文件具备 BTI 支持能力。LD_DEBUG=security 后,动态链接器将对不满足安全特性的二进制文件发出明确警告。exp2m1、exp10m1、log10p1、log2p1 与 rsqrt 的向量化实现。memset 实现。scanf、strerror、strsignal 及多线程相关场景的覆盖深度与稳定性验证。更多信息请参阅官方公告。
源码下载地址:点击下载