4.11. 编译器和开发工具


新模块流:swig:4.1

RHEL 8.8 引入了 Simplified Wrapper 和 Interface Generator (SWIG)版本 4.1,它作为新模块流 swig:4.1 提供。

与 RHEL 8.4 中发布的 SWIG 4.0 相比,SWIG 4.1:

  • 添加了对 Node.js 版本 12 到 18 的支持,并删除对早于 6 的 Node.js 版本的支持。
  • 添加了对 PHP 8 的支持。
  • 通过 PHP C API 完全处理 PHP 包装,默认情况下不再生成一个 .php 包装器。
  • 仅支持 Perl 5.8.0 及更新的版本。
  • 向 3.11 添加了对 Python 版本 3.9 的支持。
  • 仅支持 Python 3.3 及更新的 Python 3 版本以及 Python 2.7
  • Python 生成的代码中的各种内存泄漏提供修复。
  • 改进了对 C99、C++11、C++14 和 C++17 标准的支持,并开始实现 C++20 标准。
  • 添加对 C++ std::unique_ptr pointer 类的支持。
  • 包括 C++ 模板处理中的几个小改进。
  • 修复了各种情况下 C++ 声明用法。

要安装 swig:4.1 模块流,请使用:

# yum module install swig:4.1

如果要从以前的 swig 模块流升级,请参阅 切换到更新的流

有关 swig 模块流支持的长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Bugzilla:2139076

新模块流:jaxb:4

RHEL 8.8 引入了 Jakarta XML Binding (JAXB) 4 作为新的 jaxb:4 模块流。JAXB 是一个框架,使开发人员能够将 Java 类映射到 XML 表示法或从 XML 表示法映射到 Java 类。

要安装 jaxb:4 模块流,请使用:

# yum module install jaxb:4

Bugzilla:2055539

更新了 GCC Toolset 12

GCC Toolset 12 是一个编译器工具集,提供了开发工具的最新版本。它在 AppStream 存储库中以软件集合的形式作为应用程序流提供。

RHEL 8.8 中引入的显著变化包括:

  • GCC 编译器已更新至版本 12.2.1,它提供了上游 GCC 中提供的很多 bug 修复和增强。
  • annobin 已更新至版本 11.08。

GCC Toolset 12 提供了以下工具和版本:

工具版本

GCC

12.2.1

GDB

11.2

binutils

2.38

dwz

0.14

annobin

11.08

要安装 GCC Toolset 12,以 root 用户身份运行以下命令:

# yum install gcc-toolset-12

要从 GCC Toolset 12 运行工具:

$ scl enable gcc-toolset-12 tool

要运行一个 shell 会话,其中 GCC Toolset 12 中的工具版本会覆盖这些工具的系统版本:

$ scl enable gcc-toolset-12 bash

如需更多信息,请参阅 GCC Toolset 12

Bugzilla:2110582

glibc添加了安全改进

SafeLinking 功能已添加到 glibc 中。因此,它改进了对特定单链接列表崩溃(包括分配程序的线程本地缓存)的 malloc 系列功能的保护。

Bugzilla:1871383

改进了 glibc 动态加载程序算法

当共享对象依赖项深度嵌套时,用于处理共享对象的 glibc 动态加载程序的 O (n3)算法可能会导致应用程序启动和关闭较慢。有了这个更新,动态加载程序的算法已被改进,以使用深度优先搜索(DFS)。因此,当共享对象依赖项深度嵌套时,应用程序启动和关闭时间会大大提高。

您可以使用 glibc 运行时可调 glibc.rtld.dynamic_sort 选择动态加载程序的 O (n3)算法。可调的默认值为 2,表示新的 DFS 算法。要为兼容性选择以前的 O (n3)算法,请将可调整值设置为 1:

# GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1
# export GLIBC_TUNABLES

Bugzilla:1159809

LLVM Toolset rebase 到版本 15.0.7

LLVM Toolset 已更新至版本 15.0.7。主要变更包括:

  • -Wimplicit-function-declaration-Wimplicit-int 警告在 C99 及更新版本中默认启用。在 Clang 16 及更高版本中,这些警告将默认变为错误。

Bugzilla:2118568

Rust Toolset rebase 到版本 1.66.1

Rust Toolset 已更新到版本 1.66.1。主要变更包括:

  • thread::scope API 创建一个字典范围,其中本地变量可以被新生成的线程安全地借用,且这些线程都保证在范围结束前退出。
  • hint::black_box API 向编译器优化添加了一个障碍,这对于保留基准中的行为很有用,否则这些行为可能会被优化掉。
  • .await 关键字现在使用 IntoFuture 特征进行转换,类似于 forIntoIterator 之间的关系。
  • 通用关联类型(GAT)允许特征包含具有通用参数的类型别名,对类型和生命周期启用新抽象。
  • 新的 let-else 语句允许本地变量与条件模式匹配绑定,在模式不匹配时执行分支 else 块。
  • 标记的块允许 break 语句跳到块的末尾,可以选择包含一个表达式值。
  • rust-analyzer 是一种语言服务器协议的新实现,在很多编辑器中启用 Rust 支持。这会替换以前的 rls 软件包,但您可能需要调整编辑器配置以迁移到 rust-analyzer
  • cargo 有一个新的 cargo remove 子命令,用于从 Cargo.toml 中删除依赖项。

Bugzilla:2123899

Go Toolset rebase 到版本 1.19.4

Go Toolset 已更新到版本 1.19.4。主要变更包括:

  • 对以下软件包的安全修复:

    • crypto/tls
    • mime/multipart
    • net/http
    • path/filepath
  • 对以下的 bug 修复:

    • go 命令
    • 链接器
    • 运行时
    • crypto/x509 软件包
    • net/http 软件包
    • time 软件包

Bugzilla:2174430

tzdata 软件包现在包含 /usr/share/zoneinfo/leap-seconds.list 文件

在以前的版本中,tzdata 软件包只提供 /usr/share/zoneinfo/leapseconds 文件。有些应用程序依赖于 /usr/share/zoneinfo/leap-seconds.list 文件提供的备用格式,因此会出现错误。

有了这个更新,tzdata 软件包现在包含这两个文件,支持依赖任一格式的应用程序。

Bugzilla:2154109

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.