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
# yum install gcc-toolset-11要从 GCC Toolset 11 运行工具:
scl enable gcc-toolset-11 tool
$ scl enable gcc-toolset-11 tool要运行一个 shell 会话,其中 GCC Toolset 11 的工具版本会覆盖这些工具的系统版本:
scl enable gcc-toolset-11 bash
$ 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>
# 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
# yum module install log4j:2(BZ#1937468)