4.13. 编译器和开发工具
用于捕获 glibc
优化数据的新命令
新的 ld.so --list-diagnostics
命令可以捕获影响 glibc
优化决策的数据,如在一个机器可读的文件中的 IFUNC 选择和 glibc-hwcaps
配置。
glibc
字符串功能现在针对 Fujitsu A64FX 进行了优化
有了这个更新,glibc
字符串功能在 A64FX CPU 上展现了增加了吞吐量并减少了延迟。
(BZ#1929928)
新的具有 12 小时时钟的 UTF-8 区域设置 en_US@ampm
有了这个更新,您现在可以使用一个新的具有 12 小时时钟的 UTF-8 区域设置 en_US@ampm
。这种新的区域设置可使用 LC_TIME
环境变量与其他区域设置相结合。
libffi
的自修改代码的新位置
有了这个更新,libffi
的自修改代码利用 RHEL 8 内核中的功能来创建独立于任何文件系统的适合的文件。因此,libffi
的自修改代码不再依赖于使部分文件系统不安全。
更新了 GCC Toolset 11
GCC Toolset 11 是一个编译器工具集,提供开发工具的最新版本。它在 AppStream
存储库中以软件集合的形式作为应用程序流提供。
RHEL 8.6 中引入的显著变化包括:
- GCC 编译器已更新至版本 11.2.1 。
-
annobin
已更新至版本 10.23。
GCC 工具集 10 提供以下工具和版本:
工具 | 版本 |
---|---|
GCC | 11.2.1 |
GDB | 10.2 |
Valgrind | 3.17.0 |
SystemTap | 4.5 |
Dyninst | 11.0.0 |
binutils | 2.36.1 |
elfutils | 0.185 |
dwz | 0.14 |
make | 4.3 |
strace | 5.13 |
ltrace | 0.7.91 |
annobin | 10.23 |
要安装 GCC Toolset 11,请以 root 用户身份运行以下命令:
# yum install gcc-toolset-11
要从 GCC Toolset 11 运行工具:
$ scl enable gcc-toolset-11 tool
要运行一个 shell 会话,其中 GCC Toolset 11 的工具版本会覆盖这些工具的系统版本:
$ scl enable gcc-toolset-11 bash
有关用法的更多信息,请参阅使用 GCC Toolset。
GCC Toolset 11 组件在两个容器镜像中提供:
-
rhel8/gcc-toolset-11-toolchain
,其中包括 GCC 编译器、GDB 调试器和make
自动化工具。 -
rhel8/gcc-toolset-11-perftools
,其中包括性能监控工具,如 SystemTap 和 Valgrind。
要拉取容器镜像,以 root 身份运行以下命令:
# podman pull registry.redhat.io/<image_name>
请注意,现在只支持 GCC Toolset 11 容器镜像。之前 GCC Toolset 版本的容器镜像已弃用。
有关容器镜像的详情,请参阅 使用 GCC Toolset 容器镜像。
GDB 反汇编器现在支持新的 arch14 指令
有了这个更新,GDB 能够反汇编新的 arch14 指令。
(BZ#2012818)
LLVM 工具集 rebase 到版本 13.0.1
LLVM 工具集 已升级到版本 13.0.1。主要变更包括:
-
clang 现在 C++ 中支持带有语句属性
[[clang::musttail]]
的保证尾部调用和 C 中带有__attribute__(musttail)
的保证尾部调用。 -
clang 现在支持
-Wreserved-identifier
警告,它会在代码中使用保留标识符时警告开发人员。 -
clang 的
-Wshadow
标志现在还检查影子结构的绑定。 -
clang 的
-Wextra
现在也暗指Wnull-pointer-subtraction
。
(BZ#2001133)
Rust Toolset rebase 到 1.58.1
Rust Toolset
已 rebase 到版本 1.58.1。主要变更包括:
-
Rust 编译器现在支持语言的 2021 版,其特点是闭包中的分离捕获、用于数组的
IntoIterator
、一个新的 Cargo 功能解析器等等。 - 添加了对新自定义配置文件的 Cargo 支持。
- Cargo 去掉了重复的编译器错误。
- 添加了新的开放范围模式。
- 以格式字符串形式添加了捕获的标识符。
如需更多信息,请参阅:
(BZ#2002883)
Go Toolset 已 rebase 到版本 1.17.7
Go Toolset 已升级至 1.17.7 版本。主要变更包括:
- 添加了一个选项,来将切片转换为数组指针。
- 添加了对 //go:build 行的支持。
- 对 amd64 上功能调用性能的改进。
- 函数参数在堆栈跟踪中被格式化得更清晰。
- 包含闭包的函数可以被内联。
- 在 x509 证书解析中减少了资源消耗。
(BZ#2014088)
pcp
rebase 到 5.3.5
pcp
软件包已 rebase 到版本 5.3.5 。主要变更包括:
-
为 CPU 和磁盘饱和添加了新的
pmieconf(1)
规则。 -
提高了
pmproxy(1)
服务的稳定性和可扩展性。 -
提高了
pmlogger(1)
服务的服务延迟和健壮性。 - 添加了与电源相关的新性能指标。
-
在
pcp-htop(1)
工具中添加了新功能。 -
在
pcp-atop(1)
工具中添加了新功能。 - 更新了 Nvidia GPU 指标。
- 添加了新的 Linux 内核 KVM 和网络指标。
- 添加了一个新的 MongoDB 指标代理。
-
添加了一个新的套接字指标代理和
pcp-ss(1)
工具。 -
默认情况下,禁用了
pmcd(1)
和pmproxy(1)
Avahi 服务广告。
grafana
软件包 rebase 到版本 7.5.11
grafana
软件包已 rebase 到版本 7.5.11。主要变更包括:
-
添加了一个新的
准备时间序列
转换,用于向后兼容不支持新数据帧格式的面板。
grafana-pcp
rebase 到 3.2.0
grafana-pcp
软件包已 rebase 到版本 3.2.0。主要变更包括:
- 为 PCP Redis 添加了一个新的 MS SQL 服务器仪表盘。
- 在 PCP Vector eBPF/BCC Overview 仪表盘中添加了空直方存储桶。
-
修复了 PCP Redis 的
metric()
函数没有返回所有指标名称的错误。
js-d3-flame-graph
rebase 到 4.0.7
js-d3-flame-graph
软件包已 rebase 到版本 4.0.7。主要变更包括:
- 添加了新的蓝色和绿色配色方案。
- 添加了显示火焰图上下文的功能。
现在在 PCP 中提供功耗指标
新的 pmda-denki
性能指标域代理(PMDA)报告与功耗相关的指标。具体来说,它报告:
- 基于运行平均功率限制(RAPL)读数的消耗指标,在最近的Intel CPU 上提供
- 基于电池放电的消耗指标,在配备电池的系统上提供
(BZ#1629455)
新模块:log4j:2
AppStream 存储库中现在提供一个新的 log4j:2
模块。此模块包含 Apache Log4j 2
,它是一个 Java 日志记录工具,以及一个使您可以将日志语句输出到各种输出目标的库。
Log4j 2
比 Log4j 1
提供更显著的改进。值得注意的是,Log4j 2
对 Logback
框架引入了改进,并解决了 Logback
架构中的一些固有问题。
要安装 log4j:2
模块流,请使用:
# yum module install log4j:2
(BZ#1937468)