Glibc 2.36 系统库发布

经过六个月的开发,GNU C Library (glibc) 2.36系统库已经发布,完全符合ISO C11和POSIX.1-2017标准的要求。 新版本包含 59 名开发人员的修复。

Glibc 2.36 中实现的一些改进包括:

  • 添加了对新的 DT_RELR(相对重定位)地址重定位格式的支持,该格式允许您减少以 PIE(位置无关可执行文件)模式链接的共享对象和可执行文件中相对重定位的大小。在 ELF 文件中使用 DT_RELR 字段需要在链接器中支持“-z pack-relative-relocs”选项,该选项在 binutils 2.38 版本中引入。
  • 对于Linux平台,实现了函数pidfd_open、pidfd_getfd和pidfd_send_signal,提供对pidfd功能的访问,帮助处理PID重用情况,以更准确地识别访问受监控文件的进程(pidfd与特定进程关联并且不会改变,而PID可以在与该 PID 关联的当前进程终止后附加到另一个进程)。
  • 对于Linux平台,添加了process_madvise()函数,允许一个进程代表另一进程发出madvise()系统调用,使用pidfd识别目标进程。通过 madvise(),您可以通知内核有关内存使用的特性,以优化进程内存管理;例如,根据传输的信息,内核可以启动释放额外的空闲内存。在当前进程未知优化所需信息但由单独的后台控制进程协调的情况下,可能需要由另一个进程调用 madvise() ,该后台控制进程可以独立启动从进程中删除未使用的内存。
  • 对于Linux平台,添加了process_mrelease()函数,该函数可以让您加快进程完成执行后的内存释放速度。正常情况下,资源释放和进程终止不是瞬时的,可能会因为各种原因而延迟,干扰用户空间内存早期响应系统,例如 oomd(由 systemd 提供)。通过调用 process_mrelease,此类系统可以更可预测地触发从强制进程中回收内存。
  • DNS 解析器的内置实现中添加了对“no-aaaa”选项的支持,该选项允许您禁用发送 AAAA 记录的 DNS 请求(通过主机名确定 IPv6 地址),包括在执行 NSS 时getaddrinfo() 等函数可简化问题诊断。此选项不会影响 /etc/hosts 中定义的 IPv6 地址绑定的处理以及对带有 AI_PASSIVE 标志的 getaddrinfo() 的调用。
  • 对于 Linux 平台,添加了函数 fsopen、fsmount、move_mount、fsconfig、fspick、open_tree 和 mount_setattr,提供对新内核 API 的访问,用于管理基于挂载命名空间的文件系统挂载。建议的函数允许您单独处理挂载的不同阶段(处理超级块、获取有关文件系统的信息、挂载、附加到挂载点),这些阶段之前是使用通用的 mount() 函数执行的。单独的函数提供了执行更复杂的挂载场景并单独执行操作的能力,例如重新配置超级块、启用选项、更改挂载点以及移动到另一个命名空间。此外,单独处理可以让您准确判断错误代码输出的原因,并为多层文件系统(例如overlayfs)设置多个源。
  • localedef 支持处理以 UTF-8 编码而不是 ASCII 提供的区域设置定义文件。
  • 添加了将多字节 mbrtoc8 和 c8rtomb 编码转换为 ISO C2X N2653 和 C++20 P0482R6 规范的函数。
  • 添加了对 ISO C8X N2 标准草案中定义的 char2653_t 类型的支持。
  • 添加了 arc4random、arc4random_buf 和 arc4random_uniform 函数,这些函数为 getrandom 系统调用和返回高质量伪随机数的 /dev/urandom 接口提供包装器。
  • 在Linux平台上运行时,它支持龙芯3 5000处理器中使用的LoongArch指令集架构,并实现了新的RISC ISA,类似于MIPS和RISC-V。目前的形式仅支持 64 位版本的 LoongArch (LA64)。要工作,您至少需要 binutils 2.38、GCC 12 和 Linux 内核 5.19 版本。
  • 预链接机制及其关联的 LD_TRACE_PRELINKING 和 LD_USE_LOAD_BIAS 环境变量和链接器功能已被弃用,并将在未来版本中删除。
  • 删除了用于检查 Linux 内核版本和处理 LD_ASSUME_KERNEL 环境变量的代码。构建 Glibc 时支持的内核最低版本是通过 ELF 字段 NT_GNU_ABI_TAG 确定的。
  • Linux 平台上已不再使用 LD_LIBRARY_VERSION 环境变量。

来源: opennet.ru

添加评论