3.13. 编译器和开发工具


LLVM Toolset 已更新至 19.1.7

LLVM Toolset 已更新至版本 19.1.7。

LLVM 编译器的显著变化:

  • LLVM 现在使用 debug 记录,一种更有效的调试信息的表示方法。

Clang 的显著变化:

  • C++14 大小的释放现在被默认启用。
  • C++17 支持已完成。
  • 已添加了对 C++20 支持的改进,尤其是围绕模块、概念和 Class Template Argument Deduction(CTAD)。
  • 添加了对 C++23、C++2c、C23 和 C2y 支持的改进。

如需更多信息,请参阅 LLVM 发行注记Clang 发行注记

LLVM Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。

Jira:RHEL-57460

llvm-doc 软件包现在只包含对上游文档的引用。

在以前的版本中,llvm-doc 软件包包含 HTML 格式的 LLVM 文档。有了此更新,软件包只提供 /usr/share/doc/llvm/html/index.html 文件,其包含对上游文档的引用。

Jira:RHEL-68696

Clang 和 LLVM 现在支持用于 debug 部分压缩的 zstd

默认情况下,Clang 和 LLVM 工具使用 Zlib 作为 debug 部分压缩的算法。有了此增强,用户可以使用 Zstandard (zstd)算法,该算法可以达到比 Zlib 更高的压缩率。

例如,如果您想在使用 Clang 编译程序时使用 zstd 压缩,请使用以下命令:

$ clang -Wa,-compress-debug-sections=zstd -Wl,--compress-debug-sections=zstd ...
Copy to Clipboard Toggle word wrap

Jira:RHEL-70328

Rust Toolset rebase 到版本 1.84.1

Rust Toolset 已更新到版本 1.84.1。自之前可用的版本 1.79.0 以来的显著改进包括:

  • 新的 LazyCellLazyLock 类型会延迟初始化,直到第一次使用为止。它们使用每个实例中包含的初始化功能扩展了之前的 OnceCellOnceLock 类型。
  • 标准库中的新排序实现提高了运行时性能和编译时间。它们还会尝试检测比较器没有产生总顺序的情况,从而使其 panic 而不是返回未排序的数据。
  • 添加了对不透明返回类型的精确捕获。新的 use<..> 语法指定了 impl Trait 返回类型中使用的通用参数和生命周期。
  • 添加了 const 代码的许多新功能,例如:

    • 浮点支持
    • 直接用于内联汇编的 const
    • 对静态的引用
    • 可变引用和指针
  • 添加了 不安全 代码的许多新功能,例如:

    • 严格的来源 API
    • &raw 指针语法
    • 安全寻址静态
    • 在不安全的 extern 块中声明安全项
  • Cargo 依赖项解析器现在是版本感知的。如果依赖项 crate 指定了其最低支持的 Rust 版本,则 Cargo 会在解析依赖关系图时使用此信息,而不是使用最新的兼容 semver 的 crate 版本。

兼容性备注:

  • WebAssembly System Interface(WASI)目标从 rust-std-static-wasm32-wasi 变为 rust-std-static-wasm32-wasip1。您还可以通过在命令行上使用 --target wasm32-wasip1 参数来选择 WASI 目标。如需更多信息,请参阅 对 Rust 的 WASI 目标的更改 上游博客文章。
  • 分割的 panic 钩子和 panic 处理程序参数 core::panic::PanicInfostd::panic::PanicInfo 现在是不同的类型。
  • extern "C" 功能会在未捕获的 panics 上中止进程。使用 extern "C-unwind" 来允许跨 ABI 边界的展开。

Rust Toolset 是滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。

Jira:RHEL-61964

pcp 已 rebase 到版本 6.3.2

Performance Co-Pilot (PCP)已更新至版本 6.3.2。与之前可用的 6.2.2 版本相比,显著的变化包括:

  • pmdaopenmetrics: 现在默认添加了 Virtual Large Language Model (vLLM)指标。
  • pmdalinux :添加了对 Hyper-V 气球指标的支持。
  • pmdalinux :更新了网络和 巨页 内核指标。
  • pmdaamdgpu: 这个新代理从 libdrmlibdrm-amdgpu 库中收集指标。
  • pmdabpftrace :这个代理和许多或较慢的 bpftrace 脚本的启动已被修复。
  • pmdaproc :此代理现在从 Linux fdinfo 接口的 AMD GPU 中收集新指标。
  • pmdahacluster: 指标已更新,以支持新的 Pacemaker 版本。
  • pmdastatsd: 修复了一个 bug ,以避免在负载下崩溃。
  • pcp-htop: 添加了 AMD GPU 指标支持。
  • pcp-htop: Platform 设置已被修复,以启用屏幕标签页。
  • pcp-xsos :添加了这个工具。详情请查看 pcp-xsos 提供了系统的快速摘要
  • pmrep: 更新了多个配置文件指标集。
  • pmlogconf: 更新了多个配置文件自动记录。
  • libpcppmcd: 添加了几个安全强化改进。
  • libpcppmlogger: 添加了对可选的归档的 zstd 压缩的支持。

Jira:RHEL-58953

glibc 库包含改进的 IBM POWER10 优化

有了此增强,glibc 库改进了对 IBM POWER10 平台的硬件支持。因此,strcmp ()memchr () API 的性能在这个平台上已被显著改进。

Jira:RHEL-24740[1]

Valgrind 已 rebase 到版本 3.24.0

valgrind 套件已更新至版本 3.24.0。主要改进包括:

  • 在使用错误的文件描述符时, --track-fds=yes 选项现在显示可抑制的错误,并将错误写入 XML 输出。如果您不使用该选项,则显示的警告将被弃用,并将在以后的版本中删除。
  • 错误消息现在支持 Ada 名称解析。
  • deflate-conversion 工具(z15/arch13)现在支持 IBM Z 平台上的放气压缩调用(DFLTCC)指令。
  • 在 IBM Z 平台上,valgrind 现在支持消息安全辅助(MSA)工具及其 1-9 扩展提供的指令。
  • Valgrind 现在支持以下新的 Linux 系统调用:

    • open_tree
    • move_mount
    • fsopen
    • fsconfig
    • fsmount
    • fspick
    • landlock_create_ruleset
    • landlock_add_rule
    • landlock_restrict_self

Jira:RHEL-64070

libabigail 已 rebase 到版本 2.6

libabigail 库已更新至版本 2.6。主要变更包括:

  • 使用 BPF 类型格式(BTF)和通用跟踪格式(CTF)来更好地支持 Linux 内核模块分析。
  • 改进了中间的内部类型比较算法。
  • 改进了 abipkgdiffabidwabilint 工具中的日志记录
  • 多个 bug 修复。

有关进一步的更改,请参阅 上游发行注记

Jira:RHEL-64069

SystemTap 已 rebase 到版本 5.2

SystemTap 追踪和探测工具已更新至版本 5.2。

一个显著的增强是基于 debuginfod-metadata 探测的全面激活,基于 elfutils 0.192。使用此功能,您可以编写一个 systemtap 脚本,通过搜索 debuginfod 服务器查找所有匹配名称,来将给定二进制或库的所有版本作为目标。

Jira:RHEL-64066

elfutils 已 rebase 到版本 0.192

elfutils 软件包已更新至版本 0.192。主要改进包括:

  • debuginfod 服务现在可以执行每个文件签名验证,来使用 RHEL 中的 RPM Integrity Measurement Architecture(IMA)方案来检查完整性。
  • 添加了一个新的 debuginfod API 来查询服务器元数据,如从文件名查询构建 ID。
  • debuginfod 服务器端从内核 debuginfo 软件包中提取文件现在非常快
  • dwfl_set_sysroot,dwfl_frame_unwound_sourcedwfl_unwound_source_str 函数已添加到 libdw 库中。
  • eu-stacktrace 工具作为技术预览提供。详情请查看 eu-stacktrace 作为技术预览提供

Jira:RHEL-64067

现在,ld 链接器会检测应用程序是否对内存区域使用了读、写和执行权限

同时具有读、写和执行权限的内存区域是一个潜在的攻击点,因为缓冲区溢出可以允许可执行代码注入到内存中,然后执行。

有了此增强,ld 链接器会检测应用程序是否使用了具有这 3 个权限的内存区域,并向应用程序报告以下错误:

ld: error: <file_name> has a LOAD segment with RWX permissions
Copy to Clipboard Toggle word wrap

您可以使用带有 -no-error-rwx-segments 选项的 ld 来抑制错误。但是,如果链接器没有报告此错误,要防止应用程序中的潜在风险,请修改源代码,并更改您构建应用程序的方式,以便消除问题。

Jira:RHEL-59802[1]

ld 链接器现在会检测应用程序是否使用一个可执行堆栈

如果由于缓冲区溢出,放在内存可执行区域中的堆栈是潜在的攻击点,可执行代码放在这里。

有了此增强,ld 链接器会检测应用程序是否是使用可执行堆栈创建的,并报告错误,例如:

error: creating an executable stack because of -z execstack command line option
error: <file>: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)
error: <file>: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
Copy to Clipboard Toggle word wrap

您可以将 ld-no-error-execstack 选项一起使用来抑制错误。但是,如果 ld 报告了错误,要防止应用程序中的潜在风险,最好是修改源代码并更改构建机器,以便其不使用可执行堆栈。

Jira:RHEL-59801[1]

binutils 现在支持 IBM Z 指令集的 arch15 扩展

有了此增强,binutils 支持 IBM Z 平台上的 arch15 扩展 CPU。开发人员现在可以使用汇编源文件中的 arch15 扩展提供的新功能,或者当更新的编译器可用时,也可以在编译的程序中使用这些新功能。这可以产生更小、更快的程序。

Jira:RHEL-50068[1]

boost-devel 软件包提供 BoostConfig.cmake 和其他官方 CMake 脚本

此增强在 boost-devel 软件包中添加了 BoostConfig.cmake 和其他官方 CMake 脚本。CMake 在一些情况下使用这些脚本来测试 boost 功能是否存在。因此,测试 boost 功能的 CMake 项目现在可以更加稳健地工作。

Jira:RHEL-67177

Go Toolset 已 rebase 到版本 1.23

Go Toolset 已更新到版本 1.23。主要改进包括:

  • 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 版本太新符号的引用。
  • cmdcgo 功能支持 -ldflags 选项,来将标记传递给 C 链接器。当您使用非常大的 CGO_LDFLAGS 环境变量时,go 命令会自动使用这个标志来避免 argument list too long 错误。
  • trace 工具容许部分破坏的追踪,并尝试恢复追踪数据。这在崩溃时特别有用,因为您可以获得导致崩溃的追踪。
  • 在未处理的 panic 或其他致命错误后打印的回溯带有缩进,以区分第一个 goroutine 中的 goroutine 的堆栈追踪。
  • 使用 profile-guided 优化的编译器构建时间开销被降低到个位数百分比。
  • 新的 -bindnow 链接器标志在构建动态链接的 ELF 二进制文件时启用立即函数绑定。
  • //go:linkname 链接器指令不再在标准库和在其定义上没有标记 //go:linkname 的运行时中引用内部符号。
  • 如果程序不再引用 TimerTicker,则垃圾收集会立即清理它们,即使它们的 Stop 方法还没有调用。与 TimerTicker 关联的计时器渠道现在未被缓冲,容量为 0。这确保每次调用 ResetStop 方法时,在调用后不会发送或接收过时的值。
  • 新的 unique 软件包为规范化值(如 interninghash-consing)提供工具。
  • 新的 iter 软件包提供基本的定义,来与用户定义的迭代器一起工作。
  • slicesmaps 软件包引入了几个与迭代器一起工作的新功能。
  • 新的 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-62392[1]

glibc 现在支持 GB18030-2022 编码标准

此增强更新了版本 2005 到 2022 中 glibc 中的 GB18030 编码标准的支持。使用 2022 版本,您可以使用 31 个新的转码关系以及这个标准引入的附加字符和代码点。

Jira:RHEL-56032[1]

Go Toolset rebase 到版本 1.24.4

Go Toolset 已更新至版本 1.24.4,并发布 RHSA-2025:10676 公告。

主要改进和变化包括:

  • 语言

    • 现在,通用类型别名被完全支持,允许类型别名参数化,以提高通用的灵活性。
  • 工具

    • Go 模块系统支持 go.mod 文件中的 工具 指令,支持直接管理可执行依赖关系。
    • Go 构建go installgo test 命令现在支持结构化输出的 the -json 标志。
    • 新的 GOAUTH 环境变量为私有模块提供增强的身份验证。
  • 运行时和性能

    • 运行时改进平均将 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 认证。
  • 额外的更新

    • vet 工具包括一个新的分析器,用于检测测试和示例中的常见错误。
    • objdump 工具现在支持更多架构。
    • Cgo 引入了改进性能和正确性的注解。

如需更多信息,请参阅上游发行注记

Go Toolset 是一个滚动应用程序流,红帽只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。

Jira:RHEL-101074[1]

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat