4.10. 编译器和开发工具
新的 GCC 工具集 14
GCC Toolset 14 是一个编译器工具集,提供开发工具的最新版本。它以 AppStream 存储库中的 Software Collection 的形式作为 Application Stream 提供。
以下工具和版本由 GCC Toolset 14 提供,以及 RHEA-2024:8851 公告的发布:
- GCC 14.2
- GDB 14.2
-
binutils
2.41 -
annobin
12.70 -
dwz
0.14
要安装 GCC Toolset 14,以 root 用户身份运行以下命令:
yum install gcc-toolset-14
# yum install gcc-toolset-14
要从 GCC Toolset 14 运行工具:
scl enable gcc-toolset-14 <tool>
$ scl enable gcc-toolset-14 <tool>
要运行一个 shell 会话,其中 GCC Toolset 14 中的工具版本会覆盖这些工具的系统版本:
scl enable gcc-toolset-14 bash
$ scl enable gcc-toolset-14 bash
GCC Toolset 14 组件也可以在 gcc-toolset-14-toolchain
容器镜像中找到。
如需更多信息,请参阅 GCC Toolset 14 和 使用 GCC Toolset。
Jira:RHEL-34596[1], Jira:RHEL-30411
GCC Toolset 14: GCC rebase 到版本 14.2
在 GCC Toolset 14 中,GNU Compiler Collection (GCC)已更新至版本 14.2,并发布 RHEA-2024:8864 公告。
主要变更包括:
- 优化和诊断改进
-
新的
强化型 umbrella
选项,该选项启用一组强化标记 -
new
-fharden-control-flow-redundancy
选项,用于检测将控制传输到功能中间的攻击 -
新的
strub
type 属性来控制功能和变量的堆栈清理属性 -
一个 new
-finline-stringops
选项,用于强制扩展某些mem*
功能 - 支持新的 OpenMP 5.1、5.2 和 6.0 功能
- 多个新的 C23 功能
- 多个新的 C++23 和 C++26 功能
- 几个已解决的 C++ 缺陷报告
- 新的并改进了对 C++20、C++23 和 C++26 的实验性支持
- 支持 64 位 ARM 架构中的新 CPU
- 64 位 Intel 架构中的多个新指令集架构(ISA)扩展,例如:AVX10.1、AVX-VNNI-INT16、SHA512 和 SM4
- GCC 的静态分析器中的新警告
- 某些警告被更改为错误 ; 详情请参阅 移植到 GCC 14
- 各种程序错误修复
有关 GCC 14 中更改的更多信息,请参阅上游 GCC 发行注记。
Jira:RHEL-30412[1]
GCC Toolset 14: GDB rebase 到版本 14.2
在 GCC Toolset 14 中,GDB 已更新至版本 14.2,并发布 RHBA-2024:8862 公告。以下段落列出了 GDB 12.1 后的显著变化。
概述:
-
info breakpoints
命令现在将禁用的断点的启用的断点位置显示为y-
状态。 -
添加了对使用 ELF 的 Zstandard (
ELFCOMPRESS_ZSTD
)压缩的 debug 部分的支持。 -
默认情况下,文本用户界面(TUI)不再为当前位置指示器突出显示的源代码和汇编代码设置样式。要重新启用样式,请使用新命令
set style tui-current-position
。 -
新的
$_inferior_thread_count
方便变量包含当前 下级中活跃线程的数量。 -
对于具有多个代码位置的断点,GDB 现在使用
<breakpoint_number>.<location_number>
语法打印代码位置。 -
当命中断点时,GDB 现在将
$_hit_bpnum
和$_hit_locno
方便变量设置为命中断点数和代码位置号。现在,您可以使用disable $_hit_bpnum
命令禁用最后命中的断点,或使用disable $_hit_bpnum.$_hit_locno
命令禁用特定的断点代码位置。 -
添加了对
NO_COLOR
环境变量的支持。 - 添加了对大于 64 位的整数类型的支持。
-
您可以使用多目标功能配置的新命令来配置远程目标功能集(请参阅命令中的
set remote <name>-packet
和show remote <name>-packet
)。 - 添加了对 Debugger Adapter 协议的支持。
-
现在,您可以使用新的
inferior
关键字使断点特定于下级(请参阅命令中的break
或watch
)。 -
您现在可以使用新的
$_shell()
方便函数来在表达式评估过程中执行 shell 命令。
对现有命令的更改:
break
,watch
-
现在,在
break
和watch
命令中多次使用thread
或task
关键字会导致错误,而不是使用关键字的最后一个实例的线程或任务 ID。 -
现在在同一
break
或watch
命令中使用多个thread
、task
和inferior
关键字无效。
-
现在,在
printf
,dprintf
-
printf
和dprintf
命令现在接受%V
输出格式,它与print
命令格式化表达式的方式相同。您还可以通过在命令后使用方括号[…]
中的附加打印选项来修改输出格式,例如:printf "%V[-array-indexes on]", <array>
。
-
list
-
您现在可以使用
.
参数打印当前帧内执行点附近的位置,或者,如果 inferior 尚未启动,则打印main()
函数开头附近的位置。 -
尝试列出文件中比可用的更多的源行,现在会发出一个警告,让用户参考
.
参数。
-
您现在可以使用
记录用户定义的
- 现在,可以记录用户定义的别名。
新命令:
-
set print nibbles [on|off]
(默认值:off
),show print nibbles
- 控制print/t
命令是否以四位组(nibbles)的形式显示二进制值。 -
set debug infcall [on|off]
(默认值:off
),show debug infcall
- 显示关于 inferior 功能调用的额外的调试信息。 -
set debug solib [on|off]
(默认值:off
),show debug solib
- 打印有关共享的库处理的额外的调试信息。 -
set print characters <LIMIT>
、show print characters
、print -characters <LIMIT>
- 控制可打印一个字符串的多少个字符。 -
set debug breakpoint [on|off]
(默认值:off
),show debug breakpoint
- 打印有关断点插入和删除的额外的调试信息。 -
maintenance print record-instruction [ N
- 打印给定指令的记录信息。 -
maintenance info frame-unwinders
- 以优先级顺序(第一个最高)列出当前有效的帧 unwinders。 -
maintenance wait-for-index-cache
- 等待所有等待对索引缓存的写完成。 -
info main
- 打印有关主符号的信息,以识别程序的入口点。 -
set tui mouse-events [on|off]
(默认值:on
),show tui mouse-events
- 控制鼠标点击事件是否被发送到 TUI 和 Python 扩展( 当为on
时)或终端(当为off
时)。
机器接口(MI)更改:
- MI 版本 1 已被删除。
-
MI 现在在反向执行历史记录耗尽时报告
no-history
。 -
在
-break-insert
命令的输出中,thread
和task
断点字段不再被报告两次。 - 不再对不存在的线程 ID 创建特定于线程的断点。
-
-stack-list-arguments
、-stack-list-locals
、-stack-list-variables
和-var-list-children
命令中的--simple-values
参数现在将引用类型视为 simple(如果目标是 simple)。 -
-break-insert
命令现在接受一个新的-g thread-group-id
选项,来创建特定于 inferior 的断点。 -
断点创建的通知和
-break-insert
命令的输出现在可以包括一个可选的用于主断点和每个断点位置的inferior
字段。 -
说明
breakpoint-hit
停止原因的异步记录现在包含一个可选字段locno
,在多位置断点时提供代码位置号。
GDB Python API 中的更改:
事件
-
一个新的
gdb.ThreadExitedEvent
事件。 -
一个新的
gdb.executable_changed
事件注册表,它发出具有progspace
和reload
属性的ExecutableChangedEvent
对象。 -
新的
gdb.events.new_progspace
和gdb.events.free_progspace
事件注册表,它发出NewProgpspaceEvent
和FreeProgspaceEvent
事件类型。这两个事件类型都有一个属性progspace
,来指定添加到 GDB 中,或从 GDB 删除的gdb.Progspace
程序空间。
-
一个新的
gdb.unwinder.Unwinder
类-
name
属性现在是只读的。 -
__init__
函数的 name 参数必须是str
类型,否则会引发一个TypeError
。 -
enabled
属性现在只接受bool
类型。
-
gdb.PendingFrame
类-
新方法:
name
,is_valid
,pc
,language
,find_sal
,block
和function
,它们镜像gdb.Frame
类的类似方法。 -
create_unwind_info
函数的frame-id
参数现在可以是一个整数,也可以是pc
、sp
和special
属性的gdb.Value
对象。
-
新方法:
-
一个新的
gdb.unwinder.FrameId
类,它可以传递给gdb.PendingFrame.create_unwind_info
函数。 -
gdb.disassembler.DisassemblerResult
类不能再细分。 -
gdb.disassembler
模块现在包含样式支持。 -
一个新的
gdb.execute_mi (COMMAND, [ARG]…)
函数,它调用 GDB/MI 命令,并将结果返回为一个 Python 字典。 -
一个新的
gdb.block_signals()
函数,它返回一个阻止 GDB 需要处理的任何信号的上下文管理器。 -
threading.Thread
类的一个新gdb.Thread
子类,它在start
方法中调用gdb.block_signals
函数。 -
gdb.parse_and_eval
函数有一个新的global_context
参数,来限制对全局符号的解析。 gdb.Inferior
类-
一个新
arguments
属性,其保留 inferior 的命令行参数(如果已知)。 -
一个新的
main_name
属性,它包含 inferior 的main
函数的名称(如果已知)。 -
新的
clear_env
、set_env
和unset_env
方法,它们可在启动前修改 inferior 的环境。
-
一个新
gdb.Value
类-
一个分配对象值的新的
assign
方法。 -
一个将类数组值转换为数组的新的
to_array
方法。
-
一个分配对象值的新的
gdb.Progspace
类-
一个新的
objfile_for_address
方法,它返回涵盖给定地址的gdb.Objfile
对象(如果存在)。 -
一个新的
symbol_file
属性,保存对应于Progspace.filename
变量的gdb.Objfile
对象(或None
,如果文件名为None
)。 -
一个新的
executable_filename
属性,其保存具有由exec-file
或file
命令设置的文件名的字符串,如果没有设置可执行文件,则为None
。
-
一个新的
gdb.Breakpoint
类-
一个新的
inferior
属性,其包含特定于 inferior 的断点的 inferior ID(一个整数),或None
,如果没有设置这样的断点 。
-
一个新的
gdb.Type
类-
新的
is_array_like
和is_string_like
方法,其反映一个类型可以是类似数组或类似字符串,无论类型的实际类型代码是什么。
-
新的
-
一个新的
gdb.ValuePrinter
类,可用作应用 pretty-printer 的结果的基类。 -
一个新实现的
gdb.LazyString.__str__
方法。 gdb.Frame
类-
一个新的
static_link
方法,它返回嵌套的函数帧的外部帧。 -
一个新的
gdb.Frame.language
方法,它返回帧语言的名称。
-
一个新的
gdb.Command
类-
GDB 现在重新格式化
gdb.Command
类的 doc 字符串和gdb.Parameter
子类,以便在使用字符串作为 help 输出前从每行中删除不必要的前导空格。
-
GDB 现在重新格式化
gdb.Objfile
类-
一个新的
is_file
属性。
-
一个新的
-
一个新的
gdb.format_address (ADDRESS, PROGSPACE, ARCHITECTURE)
函数,其使用与从反汇编器中打印地址、符号和偏移信息时相同的格式。 -
一个新的
gdb.current_language
函数,它返回当前语言的名称。 -
一个用于包装 GDB 的反汇编器的新 Python API,包括
gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH)
,gdb.disassembler.Disassembler
,gdb.disassembler.DisassembleInfo
,gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE)
和gdb.disassembler.DisassemblerResult
。 -
一个新的
gdb.print_options
函数,它以gdb.Value.format_string
函数接受的形式返回当前打印选项的字典。 gdb.Value.format_string
函数-
如果在
print
或其他类似的操作中被调用,GDB.Value.format_string
现在使用print
命令提供的格式。 -
gdb.Value.format_string
现在接受summary
关键字。
-
如果在
-
一个新的
gdb.BreakpointLocation
Python 类型。 -
gdb.register_window_type
方法现在限制一组可接受的窗口名称。
特定于架构的更改:
AMD 和 Intel 64 位构架
-
添加了对使用
libopcodes
库的反汇编器样式的支持,该库现在被默认使用。您可以使用set style disassembler *
命令修改反汇编器输出的样式。要使用 Python Pygments 样式,请使用新的maintenance set libopcodes-styling
命令。
-
添加了对使用
64 位 ARM 架构
- 添加了为内存标记(MTE)转储内存标签数据的支持。
- 添加了对 Scalable Matrix Extension 1 和 2 (SME/SME2)的支持。有些功能仍被视为实验性的或 alpha,例如,ZA 状态的手动函数调用,或者根据 DWARF 跟踪 Scalable Vector Graphics(SVG)更改。
- 添加了对线程本地存储(TLS)变量的支持。
- 添加了对硬件观察点的支持。
64 位 IBM Z 架构
-
对 IBM Z 目标上新
arch14
指令的记录和重播的支持,但专用的函数辅助指令NNPA
除外。
-
对 IBM Z 目标上新
IBM Power Systems, Little Endian
- 添加了对 POWER11 的基本启用支持。
Jira:RHELDOCS-18598[1], JIRA:RHEL-36225, JIRA:RHEL-36518
GCC Toolset 14: annobin
rebase 到版本 12.70
在 GCC Toolset 14 中,annobin
已更新至版本 12.70,发布 RHBA-2024:8863 公告。测试二进制文件的 annobin
工具的更新集合提供了各种 bug 修复,引入了新测试,并更新了构建和使用 GCC 的较新版本、Clang、LLVM 和 Go 编译器的工具。通过增强的工具,您可以检测以非标准方式构建的程序中的新问题。
Jira:RHEL-30409[1]
GCC Toolset 13:GCC 支持 AMD Zen 5
随着 RHBA-2024:8829 公告的发布,GCC 的 GCC Toolset 13 版本增加了对 AMD Zen 5 处理器微架构的支持。要启用支持,请使用 -march=znver5
命令行选项。
Jira:RHEL-36524[1]
LLVM Toolset 已更新至 19.1.7
LLVM Toolset 已更新至版本 19.1.7,并发布 RHBA-2025:7552 公告。
LLVM 编译器的显著变化:
- LLVM 现在使用 debug 记录,一种更有效的调试信息的表示方法。
Clang 的显著变化:
- C++14 大小的释放现在被默认启用。
- C++17 支持已完成。
- 已添加了对 C++20 支持的改进,尤其是围绕模块、概念和 Class Template Argument Deduction(CTAD)。
- 添加了对 C23、C2c、C23 和 C2y 支持的改进。
如需更多信息,请参阅 LLVM 发行注记 和 Clang 发行注记。
LLVM Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-36524[1]
LLVM Toolset 已更新至 18.1.8
LLVM 工具集已使用 RHBA-2024:8828 公告的发行版本 18.1.8 更新至版本 18.1.8。
重要的 LLVM 更新:
-
以下指令的常量表达式变体已删除:
and
,or
,lshr
,ashr
,zext
,sext
,fptrunc
,fpext
,fptoui
,fptosi
,uitofp
,sitofp
. -
添加了
llvm.exp10
内在函数。 -
添加了全局变量的
code_model
属性。 - 改进了 AArch64, AMDGPU, PowerPC, RISC-V, SystemZ 和 x86 架构的后端。
- LLVM 工具已改进。
显著的 Clang 改进:
C++20 功能支持:
-
clang 不再执行 One Definition Rule(ODR)来检查全局模块片段中的声明。要启用更严格的行为,请使用
-Xclang -fno-skip-odr-check-in-gmf
选项。
-
clang 不再执行 One Definition Rule(ODR)来检查全局模块片段中的声明。要启用更严格的行为,请使用
C++23 功能支持:
-
添加了一个新的诊断标记
-Wc++23-lambda-attributes
,以警告对 lambdas 使用属性。
-
添加了一个新的诊断标记
C++2c 功能支持:
-
clang 现在允许在同一范围内多次使用
_
字符作为占位符变量名称。 - 在是字符串文字的属性参数中,属性现在期望未评估的字符串。
- 对 C++26 中弃用的枚举的算术转换已删除。
- 改进了模板参数初始化的规范。
-
clang 现在允许在同一范围内多次使用
- 有关更改的完整列表,请参阅 Clang 的上游发行注记。
Clang 中的 ABI 变化:
-
按照 x86_64 的 SystemV ABI ,
__int128
参数不再在寄存器和堆栈插槽之间拆分。 - 如需更多信息,请参阅 Clang 中 ABI 变化的列表。
重要的后向不兼容变化:
- 模板运算符的反向参数顺序中的 bug 修复破坏了之前在 C++17 中接受的 C++20 中的代码。
-
GCC_INSTALL_PREFIX
CMake 变量(其设置默认的-gcc-toolchain=
)已被弃用,并将被删除。改为在配置文件中指定--gcc-install-dir=
或--gcc-triple=
选项。 -
预编译标头(PCH)生成(
-c -xc-header
和-c -xc++-header
)的默认扩展名称是.pch
而不是.gch
。 -
当
-include a.h
探测a.h.gch
文件时,如果a.h.gch 不是 Clang PCH 文件或包含任何 Clang PCH 文件的目录,则 include 现在忽略a.h.gch
。 -
修复了对某些 C++-11-style 属性导致
__has_cpp_attribute
和__has_c_attribute
返回错误值的 bug 。 -
在添加反向
operator==
时查找匹配的operator!=
的 bug 已修复。 - 功能模板的名称修改规则已更改为接受函数可以在其模板参数列表或 requires 子句上超载。
-
现在,在系统标头和宏上默认启用
-Wenum-constexpr-conversion
警告。在下一个 Clang 版本中,它将被转换为一个硬(不可升级)错误。 - 用于 C++20 命名的模块的导入模块的路径不再被硬编码。您必须从命令行指定所有依赖的模块。
-
不再可能使用
import <module>
来导入模块;Clang 使用明确构建的模块。 - 如需了解更多详细信息,请参阅 可能破坏更改的列表。
如需更多信息,请参阅 LLVM 发行注记 和 Clang 发行注记。
LVM Toolset 是一个滚动应用程序流,只有最新版本支持。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-30907[1]
Rust Toolset rebase 到版本 1.79.0
Rust Toolset 已更新至版本 1.79.0,并发布 RHBA-2024:8827 公告。从以前可用的 1.75.0 版本开始,显著的改进包括:
-
新的
offset_of!
宏 - 支持 C 字符串字面值
-
支持内联
const
表达式 - 支持相关类型位置中的绑定
- 改进了自动临时生命周期扩展
-
调试
unsafe
前提条件的断言
Rust Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-30073[1]
Go Toolset 已 rebase 到版本 1.23
Go Toolset 已更新至版本 1.23,并发布 RHBA-2025:3823 公告。
主要改进包括:
for-range
循环接受以下类型的迭代函数:-
func(func() bool)
-
func(func(K) bool)
func(func(K, V) bool)
调用迭代参数函数会为
for-range
循环创建迭代值。有关参考链接,请参阅 上游发行注记。
-
- Go Toolchain 可以收集使用情况和中断统计信息,以帮助 Go 团队了解 Go Toolchain 是如何使用和工作的。默认情况下,Go Telemetry 不会上传遥测数据,仅保存在本地。如需更多信息,请参阅 上游 Go Telemetry 文档。
-
go vet
子命令包含stdversion
分析器,它标记对引用文件中使用的 Go 版本而言太新的符号的引用。 -
cmd
和cgo
功能支持-ldflags
选项,来将标记传递给 C 链接器。当您使用非常大的CGO_LDFLAGS
环境变量时,go
命令会自动使用这个标志来避免argument list too long
错误。 -
trace
工具容许部分破坏的追踪,并尝试恢复追踪数据。这在崩溃时特别有用,因为您可以获得导致崩溃的追踪。 -
在未处理的 panic 或其他致命错误后打印的回溯带有缩进,以区分第一个
goroutine
中的goroutine
的堆栈追踪。 - 使用 profile-guided 优化的编译器构建时间开销被降低到个位数百分比。
-
新的
-bindnow
链接器标志在构建动态链接的 ELF 二进制文件时启用立即函数绑定。 -
//go:linkname
链接器指令不再在标准库和在其定义上没有标记//go:linkname
的运行时中引用内部符号。 -
如果程序不再引用
Timer
或Ticker
,则垃圾收集会立即清理它们,即使它们的Stop
方法还没有调用。与Timer
或Ticker
关联的计时器渠道现在未被缓冲,容量为 0。这确保每次调用Reset
或Stop
方法时,在调用后不会发送或接收过时的值。 -
新的
unique
软件包为规范化值(如interning
或hash-consing
)提供工具。 -
新的
iter
软件包提供基本的定义,来与用户定义的迭代器一起工作。 -
slices
和maps
软件包引入了几个与迭代器一起工作的新功能。 -
新的
structs
软件包为 struct 字段提供了类型,其修改包含 struct 类型的属性,如内存布局。 以下软件包中进行了细微更改:
-
archive/tar
-
crypto/tls
-
crypto/x509
-
database/sql
-
debug/elf
-
encoding/binary
-
go/ast
-
go/types
-
math/rand/v2
-
net
-
net/http
-
net/http/httptest
-
net/netips
-
path/filepath
-
reflect
-
runtime/debug
-
runtime/pprof
-
runtime/trace
-
slices
-
sync
-
sync/atomic
-
syscall
-
testing/fstest
-
text/template
-
time
-
unicode/utf16
-
如需更多信息,请参阅 上游发行注记。
Go Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-83447[1]
Go Toolset rebase 到版本 1.22
Go Toolset 已更新至 1.22 版本,并发布 RHSA-2024:8876 公告。
主要改进包括:
- for 循环中的变量现在在每个迭代创建,防止意外共享 bug。另外,对于循环,现在可以覆盖整数。
- 工作区中的命令现在可以使用工作区依赖项的厂商目录。
-
go get
命令不再支持旧的GOPATH
模式。此更改不会影响go build
和go test
命令。 -
vet
工具已更新,以匹配 for 循环的新行为。 - 通过使基于类型的垃圾回收元数据靠近每个堆对象,而提高了 CPU 性能。
- Go 现在提供改进的内联优化和更好的配置文件指导的优化支持,从而获得更高的性能。
-
新的
math/rand/v2
软件包可用。 - Go 现在提供增强的 HTTP 路由模式,支持方法和通配符。
如需更多信息,请参阅 Go 上游发行注记。
Go Toolset 是一个滚动应用程序流,仅最新版本支持。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-46972[1]
elfutils
rebase 到版本 0.190
elfutils
软件包已更新至版本 0.190。主要改进包括:
-
libelf
库现在支持相对重定位(RELR)。 -
libdw
库现在识别.debug_[ct]u_index
部分。 -
eu-readelf
工具现在支持一个新的-Ds
,--use-dynamic --symbol
选项,来通过动态片段,而不是使用 ELF 部分显示符号。 -
eu-readelf
工具现在可以显示.gdb_index
版本 9。 -
新的
eu-scrlines
工具编译与指定的 DWARF 或 ELF 文件关联的源文件的列表。 -
debuginfod
服务器模式已对文件名表示中的 60% 的压缩进行了更改(这需要重新索引)。
valgrind
更新至 3.22
valgrind
软件包已更新至版本 3.22。主要改进包括:
-
valgrind
memcheck
现在检查提供给 C 函数memalign
、posix_memalign
和aligned_alloc
的值,以及与new
运算符对齐的 C++17 是否为有效的对齐值。 -
valgrind
memcheck
现在支持对 C++14 大小的 和 C++17 对齐的new
和delete
运算符的不匹配检测。 -
添加了对 DWARF 调试信息的延迟读取的支持,从而在安装了
debuginfo
软件包时加快启动速度。
移动了 Clang 资源目录
Clang 存储其内部标头和库的 Clang 资源目录,已从 /usr/lib64/clang/17
移到 /usr/lib/clang/17
。
新的 grafana-selinux
软件包
在以前的版本中,grafana-server
的默认安装作为 unconfined_service_t
SELinux 类型运行。这个更新添加了新的 grafana-selinux
软件包,其包含 grafana-server
的 SELinux 策略,并且默认使用 grafana-server
安装了。因此,grafana-server
现在作为 grafana_t
SELinux 类型运行。
更新了 GCC Toolset 13
GCC Toolset 13 是一个编译器工具集,其提供开发工具的最新版本。它以 AppStream 存储库中的 Software Collection 的形式作为 Application Stream 提供。
RHEL 8.10 中引入的显著变化包括:
- GCC 编译器已更新至版本 13.2.1,它提供了上游 GCC 中可用的很多 bug 修复和增强。
-
binutils
现在通过-march=znver5
编译器切换支持基于znver5
核的 AMD CPU。 -
annobin
已更新至版本 12.32。 -
GCC 的
annobin
插件现在对存储在目标文件的注释默认使用更压缩的格式,使目标文件更小,链接时间更快,特别是在大型复杂的程序中。
GCC Toolset 13 提供了以下工具和版本:
工具 | 版本 |
---|---|
GCC | 13.2.1 |
GDB | 12.1 |
binutils | 2.40 |
dwz | 0.14 |
annobin | 12.32 |
要安装 GCC Toolset 13,以 root 用户身份运行以下命令:
yum install gcc-toolset-13
# yum install gcc-toolset-13
要运行 GCC Toolset 13 中的工具:
scl enable gcc-toolset-13 tool
$ scl enable gcc-toolset-13 tool
要运行一个 shell 会话,其中 GCC Toolset 13 中的工具版本会覆盖这些工具的系统版本:
scl enable gcc-toolset-13 bash
$ scl enable gcc-toolset-13 bash
如需更多信息,请参阅 GCC Toolset 13 和 使用 GCC Toolset。
Jira:RHEL-25405[1]
LLVM Toolset rebase 到版本 17.0.6
LLVM Toolset 已更新至版本 17.0.6。
主要改进包括:
- 不透明指针迁移现已完成。
- 在中端优化中删除了对传统通行管理器的支持。
Clang 更改:
- C++20 协程不再被视为实验性的。
-
改进了
std::move
函数的代码生成,以及未优化构建中类似的代码生成。
如需更多信息,请参阅 LLVM 和 Clang 上游发行注记。
Rust Toolset rebase 到版本 1.75.0
Rust Toolset 已更新至版本 1.75.0。
主要改进包括:
- 恒定的评估时间现在是无限制的
- 清理程序 panic 消息
- 货物注册认证
-
async fn
和特征中的不透明返回类型
Go Toolset rebase 到版本 1.21.0
Go Toolset 已更新至版本 1.21.0。
主要改进包括:
-
已添加了
min
、max
和clear
内置。 - 已添加了对配置文件指导的优化的官方支持。
- 现在,更精确地定义了软件包初始化顺序。
- 改进了类型延迟。
- 改进了向后兼容性支持。
如需更多信息,请参阅 Go 上游发行注记。
Jira:RHEL-11872[1]
papi
支持新的处理器微架构
有了此增强,您可以使用以下处理器微架构上存在的 papi
事件访问性能监控硬件:
- AMD Zen 4
- 第四代 Intel® Xeon® 可扩展处理器
Jira:RHEL-9336[1], Jira:RHEL-9320, Jira:RHEL-9337
ant rebase 到版本 1.10.9
ant:1.10
模块流已更新至版本 1.10.9。此版本使用提供方类和提供方参数提供对代码签名的支持。
更新的 ant:1.10
模块流仅提供 ant
和 ant-lib
软件包。与 Ant 相关的剩余软件包在不支持的 CodeReady Linux Builder (CRB)存储库中的 javapackages-tools
模块中分发,且没有被更新。
更新的 ant:1.10
模块流中的软件包无法与 javapackages-tools
模块中的软件包并行使用。如果要使用与 Ant 相关的软件包的完整集合,您必须卸载 ant:1.10
模块,并禁用它,启用 CRB 存储库,并安装 javapackages-tools
模块。
新软件包:maven-openjdk21
maven:3.8
模块流现在包含 maven-openjdk21
子软件包,它为 OpenJDK 21 提供了 Maven JDK 绑定,并配置了 Maven ,以使用系统 OpenJDK 21。
Jira:RHEL-17126[1]
cmake
rebase 到版本 3.26
cmake
软件包已更新至版本 3.26。主要改进包括:
- 添加了对 C17 和 C18 语言标准的支持。
-
cmake
现在可以查询操作系统识别信息的/etc/os-release
文件。 -
添加了对 CUDA 20 和
nvtx3
库的支持。 - 添加了对 Python 稳定的应用程序二进制接口的支持。
- 在 Simplified Wrapper 和 Interface Generator (SWIG)工具中添加了对 Perl 5 的支持。
Go Toolset rebase 到版本 1.24.4
Go Toolset 已更新至版本 1.24.4,并发布 RHSA-2025:10672 公告。
主要改进和变化包括:
语言 :
- 现在,通用类型别名被完全支持,允许类型别名参数化,以提高通用的灵活性。
工具 :
-
Go 模块系统支持
go.mod
文件中的工具
指令,支持直接管理可执行依赖关系。 -
Go
构建
、go install
和go test
命令现在支持结构化输出的 the-json
标志。 -
新的
GOAUTH
环境变量为私有模块提供增强的身份验证。
-
Go 模块系统支持
运行时和性能 :
- 运行时改进平均将 CPU 开销降低为 2-3%。
- 主要变化包括基于 Swiss Tables 的新映射实施,以及更有效的内存分配。
标准库 :
-
新的
os.Root
类型启用目录限制的文件系统访问。 -
testing.B.Loop
方法提高了基准测试。 -
runtime.AddCleanup
功能提供更灵活的最终化机制。 -
新的
弱
软件包引入了弱指针。
-
新的
加密 :
-
现在,提供了 ML-KEM 后密钥交换(
crypto/mlkem
)、HKDF、PBKDF2 和 SHA-3 的新软件包。 - Go Cryptographic 模块现在正在检查 FIPS 140-3 认证。
-
现在,提供了 ML-KEM 后密钥交换(
额外的更新 :
-
vet
工具包括一个新的分析器,用于检测测试和示例中的常见错误。 - objdump 工具现在支持更多架构。
-
Cgo
引入了改进性能和正确性的注解。
-
如需更多信息,请参阅上游发行注记。
Go Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。