GNU C Library 2.42 已发布,GNU C Library 被设计为可移植和高性能的 C 库。它遵循所有相关标准,包括 ISO C11 和 POSIX.1-2017,也是已知的最完善的国际化接口之一,广泛应用于 GNU/Linux 系统以及其他使用 Linux 内核的系统。
新版本包括新增多个数学函数,termios.h 接口支持任意波特率,基于 SFrame 的堆栈跟踪支持(详见本文),内存保护页支持以及一些安全修复。
主要新功能:
- <math.h> 中现在支持下列 ISO C23 function families(在 TS 18661-4:2015 中引入)。 每个系列包括float、double、long double、_FloatN 和 _FloatNx,以及 <tgmath.h> 中的一个类型通用宏。
- 幂和绝对值函数:compoundn、pown、powr、rootn, 平方根。
- 在 Linux 上,添加了 pthread_gettid_np 函数。
- 现在支持 ISO C2Y family of unsigned abs functions,即 uabs、ulabs、ullabs 和 uimaxabs。
- 在 Linux 上,<termios.h> 接口现在支持任意波特率; speed_t 被重新定义为简单的波特率,指定为 unsigned int,与内核接口匹配。
- malloc(tcache)中的线程本地缓存现在支持大块缓存。可通过将 tunabl glibc.malloc.tcache_max 设置为较大值(最大值为 4194304)来启用该功能。对于较小的数据块,Tcache 的速度也明显更快。
- 新的配置选项“--enable-sframe”可用于启用 GNU C 库的 SFrame 支持。SFrame 是一种新的堆栈跟踪信息格式,可用于反跟踪。 它需要最低版本为 2.45 的 binutils。
- pthread_create 添加了通过 madvise 和 MADV_GUARD_INSTALL flag 对轻量级堆栈保护页面的支持。
- 从 CORE-MATH 项目中导入了更多经过优化和正确舍入的数学函数,特别是 acospif、asinpif、atanpif、atan2pif、cospif、sinpif、tanpif。
- 测试套件已得到显著扩展,包括 printf 和 scanf 函数族的多种变体功能。
- 对手册进行了大幅扩展和更新,特别是线程、终端、文件系统、资源和数学章节。
- 已添加代码来检测 x86-64 Intel Arrow Lake、Panther Lake、 Clearwater Forest 和 Diamond Rapids 微架构。
- 关于 S390,增加了对新 z17 平台的支持。
已弃用和删除的功能以及其他影响兼容性的更改:
- glibc.rtld.execstack tunable 现在支持兼容模式,允许程序通过动态加载的共享库获得可执行堆栈。
- 在 Linux 上,<termio.h> header 和 <sys/ioctl.h> 中的 struct termio 定义已被删除。自 1988 年第一版 POSIX.1 以来,termio 接口就已过时,取而代之的是 <termios.h>。
- 在所有架构上,pthread mutexes 的 TX lock elision 的支持已被弃用,并将在下一版本中删除。
- 在支持 Scalable Matrix Extension (SME) 的 AArch64 Linux targets 上,setjmp 和 sigsetjmp 将禁用 SME 的 ZA 状态。
构建和运行时要求的变更:
- 现在需要 GCC 12.1 或更高版本来构建 GNU C Library。
- 现在需要 GNU Binutils 2.39 或更高版本来构建 GNU C Library。
更多详情可查看此处。
还没有评论,来说两句吧...