6.12. 编译器和开发工具
glibc 现在支持用于高级调度程序选项的sched_setattr 和 schedsched_getattr
在以前的版本中,autotuneglibc 通过 HEKETI <sched.h > 中定义的功能只提供对一组有限的 Linux 调度程序选项的访问。这限制了使用直接系统调用或 Linux 内核标头访问高级调度功能所需的应用程序。
有了这个增强,来自 schedsched_setattr 和 libpmemsched_getattr 中的可扩展调度程序配置机制现在可通过 HEKETIglibc autotune <sched.h& gt; 标头文件获得。此更改包括对其他调度策略的支持,如 HEKETISCHED_DEADLINE。
因此,应用程序可以在不依赖于直接系统调用或特定于内核的标头的情况下从更广泛的调度选项中选择,从而提高了开发人员的可移植性和灵活性。
Geomap 支持为 swiggrafana-pcp中的 PCP Valkey 数据源添加
在以前的版本中,用户无法在 Grafana 中的映射上视觉化 PCP 指标,因为 PCP Valkey 数据源不提供 geomap 面板所需的 longitude 和 latitude 标签。这种限制使得在不同位置上监控系统的性能比较困难。
为 Grafana 中的 PCP 指标创建 geomap 视觉化:
- 创建新面板。
- 选择 geomap 面板类型。
- 在查询窗口中输入您要视觉化的指标,因为您要进行其他 PCP 视觉化。
- 在查询窗口下的 Format 下拉菜单中,选择 Geomap。
- Grafana 将自动检测长期和模板标签,并将数据放在映射中。
- 有关其他选项和自定义的信息,请参阅 Grafana 文档。
在这个版本中,grafana-pcp 中的 PCP Valkey 数据源包括 PCP 指标中的 longitude 和 latitude 标签,允许实例在 geomap 上准确放置。用户可以在 Grafana 中创建 geomap visualizations,以比较地理上的系统性能。
Jira:RHEL-77946[1]
llvm-toolset rebase 到 LLVM 20
criullvm-toolset 更新至 LLVM 20,在 C、C++ 和 Rust 工作流之间提供改进的代码生成、性能优化以及扩展语言前端和库支持。此 rebase 协调 RHEL 中的依赖组件,包括为 requires res to annobin, annobin bcc, HEKETIbpftrace, wagonqt5-qttools, 和 rhacmmesa。该构建通过 swigllvm-20.1.8-1.el10 验证。
主要变化有:
-
后端改进,包括
ppc64le的修复 - Clang 和 LLVM 通过优化和诊断增强,以获得常规性能和可靠性
- 工具链生态系统通过协调的软件包重建刷新,以便与 LLVM 20 的兼容性
- 继续弃用旧的目标,并与这个流中的 ARM 和 MIPS 的上游方向一致
GDB 现在支持 IBM 的 z17 CPU 架构
改进了 HEKETIgdb 软件包,以支持使用 IBM 的 z17 CPU 架构引入的新硬件指令的二进制文件。在这个版本中,开发人员和系统管理员能够调试在 RHEL 10.1 上为最新的 IBM Z 硬件编译的应用程序。
Jira:RHEL-56897[1]
GCC Toolset 15 现已正式发布
在这个版本中,RHEL 10.1 提供了 HEKETIgcc-toolset-15。工具集包括 GCC 和相关实用程序的最新支持版本,使开发人员能够利用最新的编译器技术构建、测试和部署应用程序。
Jira:RHEL-81745[1]
glibc 在 x86_64 上提供 GLIBC_ABI_GNU2_TLS 符号
x86_64 系统上的 GLIBC_ABI_GNU2_TLS 符号包含 GLIBC_ABI_GNU2_TLS 符号。使用 gnu2 线程本地存储访问惯例的程序可能需要此符号才能启动。在此次更新之前 ,如果没有提供 这个符号,受影响的程序将无法启动。在这个版本中,依赖于 GLIBC_ABI_GNU2_TLS 的程序按预期启动和运行。
glibc 为 x86_64 添加了 GLIBC_ABI_DT_X86_64_PLT 符号支持
在此次更新之前,当无法提供 GLIBC_ABI_DT_X86_64_PLT 符号时,需要 GLIBC_ABI_X86_64_PLT 符号的程序无法启动。有了这个增强,关于 x86_64 系统的 GLIBC_ABI_DT_X86_64_PLT 符号包括 GLIBC_ABI_DT_X86_64_PLT 符号。有了这个增强,需要此符号的程序现在可以按预期运行。
更新的 glibc 头文件与 Linux 6.12 UAPI 保持一致
Red Hat Enterprise Linux 10 中的 glibc 头文件被更新为包含来自 Linux 内核版本 6.12 的最新的 Linux 用户空间 API (UAPI)合并。 因此,开发人员可以在构建应用程序时访问新的和修订的 UAPI 常量,确保与最新内核功能保持一致和兼容性。
GDB 被 rebase 到版本 16.3
这个 gdb 更新至 RHEL 10.1 中的版本 16.3 提供了以下显著改进:
- 删除了对 Intel MPX 的支持。
- 添加了对标记的数据指针的支持,包括 Intel 的 Linear Address Masking (LAM)和 aarch64 的 Memory Tagging Extension (MTE)。
- 启用后台 DWARF 读取以提高性能。
增强的 Intel Process Trace (
记录 btrace):-
通过设置
记录 btrace pt event-tracing启用异步事件打印。 -
Ptwrite 有效负载现在可以在 Python 中作为
RecordAux 辅助对象访问。
-
通过设置
改进了 Python 集成:
-
停止事件现在包含一个
details属性,mirror MI "*stopped" 事件。 -
gdb.Progspace ()不再直接创建对象;对象必须使用其他 API 获取。 -
用户定义的属性可以添加到
gdb.Inferior和gdb.InferiorThread对象中。 -
引入了新的事件源:
gdb.tui_enabled。 -
添加了
gdb.record.clear,它会清除当前记录的 trace 数据。 - 添加了用于处理缺失的 objfiles 和调试信息的模块。
-
新的类
gdb.missing_debug.MissingDebugInfo可以子类来处理缺少的调试信息。 -
新属性
gdb.Symbol.is_artificial。 - 用于跨多个域的符号查找的新常数。
-
新的功能
gdb.notify_mi (NAME, DATA)会发出自定义 async 通知。 -
用于读取和写入值内容的新属性
gdb.Value.bytes。 -
添加了
gdb.interrupt以模拟 CTRL-C 中断。 -
新的属性
gdb.InferiorThread.ptid_string提供目标 ID。
-
停止事件现在包含一个
调试适配器协议(DAP)更改:
- 更新了"scopes"请求,以包含全局变量和最后一个返回值。
- "launch"和"attach"请求可以随时使用,在"configurationDone"后有效。
- "Variable"请求不再返回人工符号。
- 添加了对 "cancel" 请求的"process"事件和支持。
- "attach"请求现在支持指定程序。
- 引入了用于样式、语言帧不匹配警告、缺少 objfile 处理程序和函数调用超时的新命令。
-
增强并重命名了几个命令,包括用于免除和重命名
set unwindonsignal设置的改进错误处理,从而设置 unwind-on-signal。 -
扩展的远程数据包支持,包括用于文件状态和内存获取的新数据包,以及
克隆等新的停止原因。 - 引入了每个线程 事件报告选项和地址标记检查。
IBM z16 的 GCC 调整默认为 s390x
RHEL 10.1 中 s390x 架构上的 s390x 架构上生成的代码的默认调整现在与 IBM z16 一致。
在此次更新之前,在 gcc 中为旧的 IBM 架构设置了 s390x 代码生成的默认调整。
在这个版本中,在 RHEL 10.1 中使用 gcc on s390x 编译的代码默认为 IBM z16 调整。如果您需要针对不同的架构进行优化,可以通过在 gcc 调用过程中使用 -mtune 标志指定所需的架构来覆盖此设置。
Jira:RHEL-86679[1]
对 IBM Z z17 的初始支持添加到 wagonglibc
HEKETIglibc 中的动态加载程序被改进,以支持检测 IBM z17 CPU 或其特定功能。因此,在 wagon/usr/lib64/glibc-hwcap/z17/ 目录中安装的任何 IBM z17 优化库都会在 z17 系统上自动加载。这个版本提高了 IBM Z z17 平台的硬件兼容性和性能。
Jira:RHEL-72564[1]
Rust Toolset rebase 到版本 1.88.0
RHEL 10.1 提供了 1.88.0 中的 Rust Toolset。这个版本包括以下显著的改进:
- Rust 2024 Edition 现在稳定。这是一个主要的选择版本,可进行大量语言更改,是最新发布的最大版本。
-
利用带有允许链的 2024 版,允许 fluent
&&-chaining 在if和while条件内允许语句减少嵌套并改进可读性。 -
对于高性能计算,当启用目标功能时,您可以在安全 Rust 中直接调用多个
std::archintrinsics,这可让您直接访问特定的 CPU 功能。 -
现在,支持
asyncclosures,为异步编程提供了第一类解决方案。这些冲突允许捕获并正确表达使用 AsyncFn traits 的高法函数签名。 -
遍历广播允许协调对特征对象的引用,以引用其超级条目,简化常见模式,特别是使用任何特征。
- 现在,cargo 会自动清理其缓存,删除在 1-3 个月内无法访问的旧文件,这有助于管理磁盘空间。
Rust Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
tzdata 包括 NEWS 文件
在这个版本中,tzdata 软件包包括其 NEWS 文件以及每个发行版本,以提供时区数据更改的精确描述。因此,您可以详细介绍什么变化。用户可以检查附带的 NEWS 文件,以了解更新中更改的内容。
Jira:RHEL-105042[1]
Red Hat build of OpenJDK 25 可用
红帽推出红帽构建的 OpenJDK (Open Java Development Kit) 25 的最新长期支持(LTS)版本,这是 Java 平台标准版(Java SE)的免费开源实施。从 RHEL 10.1 开始,红帽构建的 OpenJDK 25 可用。有关 OpenJDK 生命周期、支持政策和所有支持的配置的更多信息,请参阅 OpenJDK 生命周期和支持政策。
OpenJDK 25 包括 Java 规格、多个程序错误和稳定修复以及常规性能改进和新功能,如以下改进:
- Java Flight Recorder 增强(合作抽样、方法计和追踪)
- Generational Shenandoah 垃圾收集器
- G1 垃圾收集器的后线扩展和区域固定
- Pre-Of-Time 类加载和链接
- 紧凑对象标头
- 在不固定的情况下同步虚拟线程
- 紧凑源文件和实例主方法
- 未命名的变量和模式
- 有作用域值
- 流 Gatherers
- 启动多文件源程序
有关从最后一个 LTS 版本开始的新功能的完整列表,请参阅 JDK 25 中的 JEPs,自 JDK 21 起集成。
Jira:RHEL-100678[1]