商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 硬件相关 > GNU C Library 2.43 发布

GNU C Library 2.43 发布

  发布于2026-08-17 阅读(0)

扫一扫,手机访问

GNU C Library 2.43 正式发布了。作为 GNU/Linux 系统最底层的基石,glibc 一直以高度的可移植性和高性能著称,同时严格遵循 ISO C11 和 POSIX.1-2017 等权威标准,国际化支持也做得相当成熟。这次更新带来了不少硬核变化,下面挑重点说说。 **标准兼容方面**,这次引入了 ISO C23 中定义的几个新函数:`free_sized`、`free_aligned_sized`、`memset_explicit` 和 `memalignment`,内存管理更灵活也更安全。另外,`assert` 宏现在支持可变参数形式,按 C23 规范确保在复合字面量初始化器中能正确处理带逗号的表达式。还有一批函数——`bsearch`、`memchr`、`strchr`、`strpbrk`、`strrchr`、`strstr`、`wcschr`、`wcspbrk`、`wcsrchr`、`wcsstr` 和 `wmemchr`——都实现了类型安全宏:如果输入参数指向 const 限定类型,返回的指针也会带上 const 限定,这能避免不少隐性 bug。 **数学库的改进**也相当亮眼。`` 新增了 C23 引入的类型别名:`long_double_t`、`_Float32_t`、`_Float64_t`,以及在支持 `_Float128` 的平台上新增了 `_Float128_t`。更重要的是,数学函数的精度和性能继续提升——CORE-MATH 项目的成果进一步集成,`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 兼容逻辑被迁移到了兼容符号层,主路径的执行效率明显提高。 **新系统调用和 Linux 特性**方面,Linux 平台新增了 `mseal` 系统调用封装函数,可以对内存映射区域施加“密封”保护——一旦密封,运行时就不能再改权限、不能解除映射、不能迁移、也不能缩小尺寸,这对安全敏感场景很有价值。此外,还引入了 `openat2` 函数,作为 `openat` 的功能增强版,提供更丰富的打开选项,不过只在 LFS(Large File Support)模式下启用,并且是线程可取消接口。AArch64 架构下,`malloc` 默认启用了 2MB 透明巨页支持,效果等同于手动设置 `glibc.malloc.hugetlb=1`,性能提升立竿见影。 **架构与编译器支持**也有不少新动作。AArch64 平台新增了 C23 标准函数 `exp2m1`、`exp10m1`、`log10p1`、`log2p1` 和 `rsqrt` 的向量化实现。对于支持 Scalable Matrix Extension(SME)的 AArch64 Linux 目标,`clone()` 系统调用封装器会在子进程中自动禁用 SME 的 ZA 寄存器状态。如果启用 Branch Target Identification(BTI)扩展,可以通过 `glibc.cpu.aarch64_bti` 可调参数强制要求所有加载的二进制文件支持 BTI。另外,在支持分支保护(BTI 或 Protected Control Stack)的 AArch64 平台上,如果设置 `LD_DEBUG=security`,动态链接器会对不满足安全特性的二进制文件发出明确警告。RISC-V 这边,新增了基于 RVV(RISC-V Vector Extension)优化的 `memset` 实现。x86 架构则新增了 Intel Nova Lake 和 Wildcat Lake 处理器的指令集与微架构特性支持。 **编译工具链方面**,新增了对 Clang 18 及以上版本的实验性支持(目前适配 `aarch64-linux-gnu` 和 `x86_64-linux-gnu` 架构),不过需要依赖与 `libgcc` 兼容的运行时环境(包括 `libgcc_s.so`,用于 pthread 取消和回溯支持)。测试框架也做了全面升级,尤其在 `scanf`、`strerror`、`strsignal` 和多线程场景下的覆盖深度和稳定性验证方面下了功夫。Unicode 数据和处理逻辑已经同步到最新的 Unicode 17.0.0 标准。官方手册也完成了重构和现代化更新,大量代码示例依据新特性和最佳实践做了重写和校验。 完整的更新日志和源代码可以从官方公告页面获取,这里就不一一展开了。
本文转载于:https://www.php.cn/faq/2036964.html?uid=1246273 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注