4.12. コンパイラーおよび開発ツール
LLVM Toolset がバージョン 17.0.6 にリベース
LLVM Toolset がバージョン 17.0.6 に更新されました。
主な機能拡張は、次のとおりです。
- Opaque ポインターの移行が完了しました。
- ミドルエンド最適化におけるレガシーパスマネージャーのサポートが削除されました。
Clang の変更:
- C++20 コルーチンは実験的なものとはみなされなくなりました。
-
最適化されていないビルドでの
std::move
関数などのコード生成が改善されました。
詳細は、LLVM および Clang のアップストリームリリースノートを参照してください。
Rust Toolset がバージョン 1.75.0 にリベース
Rust Toolset がバージョン 1.75.0 に更新されました。
主な機能拡張は、次のとおりです。
- 定数評価時間が無制限になる
- よりクリーンなパニックメッセージ
- Cargo レジストリー認証
-
トレイト内の
async fn
と不透明な戻り値のタイプ
Go Toolset がバージョン 1.21.0 にリベース
Go Toolset がバージョン 1.21.0 に更新されました。
主な機能拡張は、次のとおりです。
-
min
、max
、clear
ビルトインが追加されました。 - プロファイルガイド最適化の公式サポートが追加されました。
- パッケージの初期化順序がより正確に定義されるようになりました。
- 型推論が改善されました。
- 下位互換性のサポートが改善されました。
詳細は、アップストリームの Go リリースノートを参照してください。
Jira:RHEL-11871[1]
Clang リソースディレクトリーが移動しました
Clang が内部ヘッダーとライブラリーを保存する Clang リソースディレクトリーが、/usr/lib64/clang/17
から /usr/lib/clang/17
に移動しました。
elfutils
がバージョン 0.190 にリベース
elfutils
パッケージが、バージョン 0.190 に更新されました。以下は、主な改善点です。
-
libelf
ライブラリーが、相対再配置 (RELR) をサポートするようになりました。 -
libdw
ライブラリーが、.debug_[ct]u_index
セクションを認識するようになりました。 -
eu-readelf
ユーティリティーが、ELF セクションを使用せずに動的セグメントを使用してシンボルを表示する、新しい-Ds
,--use-dynamic --symbol
オプションをサポートするようになりました。 -
eu-readelf
ユーティリティーが、.gdb_index
バージョン 9 を表示できるようになりました。 -
新しい
eu-scrlines
ユーティリティーは、指定された DWARF または ELF ファイルに関連付けられたソースファイルのリストをコンパイルします。 -
debuginfod
サーバースキーマが変更され、ファイル名の表現が 60% 圧縮されました (インデックスの再作成が必要です)。
systemtap
がバージョン 5.0 にリベース
systemtap
パッケージが、バージョン 5.0 に更新されました。主な機能拡張は、次のとおりです。
- カーネルとユーザー間のトランスポートの速度および信頼性の向上。
- DWARF5 debuginfo 形式のサポートの拡張。
GCC Toolset 13 の更新
GCC Toolset 13 は、最新バージョンの開発ツールを提供するコンパイラーツールセットです。これは、AppStream リポジトリー内の Software Collection の形式で Application Stream として利用できます。
RHEL 9.4 で導入された注目すべき変更点は次のとおりです。
- GCC コンパイラーがバージョン 13.2.1 に更新され、アップストリーム GCC で利用可能な多くのバグ修正と機能拡張が提供されます。
-
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 として次のコマンドを実行します。
# dnf install gcc-toolset-13
GCC Toolset 13 からツールを実行するには、以下を使用します。
$ scl enable gcc-toolset-13 tool
GCC Toolset 13 のツールバージョンがこれらのツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、以下を使用します。
$ scl enable gcc-toolset-13 bash
詳細は、GCC Toolset 13 および GCC Toolset の使用 を参照してください。
Jira:RHEL-23798[1]
GCC と -fstack-protector
フラグを使用してコンパイルすると、64 ビット ARM での動的スタック割り当ての保護に失敗しなくなる
以前は、64 ビット ARM アーキテクチャーでは、-fstack-protector
フラグを指定したシステム GCC コンパイラーは、C99 可変長配列または alloca()
割り当てオブジェクトを含む関数でバッファーオーバーフローを検出できませんでした。その結果、攻撃者はスタック上に保存されたレジスターを上書きする可能性があります。この更新により、64 ビット ARM でのバッファーオーバーフロー検出が修正されました。その結果、システム GCC でコンパイルされたアプリケーションはより安全になります。
Jira:RHEL-17638[1]
GCC ツールセット 13: GCC と -fstack-protector
フラグを使用してコンパイルすると、64 ビット ARM での動的スタック割り当ての保護に失敗しなくなる
以前は、64 ビット ARM アーキテクチャーでは、-fstack-protector
フラグを指定した GCC コンパイラーは、C99 可変長配列または alloca()
割り当てオブジェクトを含む関数でバッファーオーバーフローを検出できませんでした。その結果、攻撃者はスタック上に保存されたレジスターを上書きする可能性があります。この更新により、64 ビット ARM でのバッファーオーバーフロー検出が修正されました。その結果、GCC でコンパイルされたアプリケーションはより安全になります。
pcp
がバージョン 6.2.0 に更新される
pcp
パッケージがバージョン 6.2.0 に更新されました。以下は、主な改善点です。
-
pcp-htop
は、ユーザー定義のタブをサポートするようになりました。 -
pcp-atop
は、新しい棒グラフ視覚化モードをサポートするようになりました。 - OpenMetrics PMDA メトリクスラベルとロギングが改善されました。
- 追加の Linux カーネル仮想メモリーメトリクスが追加されました。
新しいツール:
-
pmlogredact
-
pcp-buddyinfo
-
pcp-meminfo
-
pcp-netstat
-
pcp-slabinfo
-
pcp-zoneinfo
-
Jira:RHEL-2317[1]
新しい grafana-selinux
パッケージ
以前は、grafana-server
のデフォルトのインストールは unconfined_service_t
SELinux タイプとして実行されていました。この更新では、grafana-server
用の SELinux ポリシーが含まれ、grafana-server
とともにデフォルトでインストールされる、新しい grafana-selinux
パッケージが追加されます。その結果、grafana-server
は grafana_t
SELinux タイプとして実行されるようになりました。
papi
は、新しいプロセッサーマイクロアーキテクチャーをサポートする
この機能拡張により、次のプロセッサーマイクロアーキテクチャー上の papi
イベントプリセットを使用して、パフォーマンス監視ハードウェアにアクセスできるようになります。
- AMD Zen 4
- 第 4 世代 Intel® Xeon® スケーラブルプロセッサー
Jira:RHEL-9333[1]、Jira:RHEL-9335、Jira:RHEL-9334
新しいパッケージ: maven-openjdk21
maven:3.8
モジュールストリームに、maven-openjdk21
サブパッケージが含まれるようになりました。このサブパッケージは、OpenJDK 21 用の Maven JDK バインディングを提供し、システム OpenJDK 21 を使用するように Maven を設定します。
Jira:RHEL-13046[1]
新しいパッケージ: libzip-tools
RHEL 9.4 では、zipcmp
、zipmerge
、ziptool
などのユーティリティーを提供する libzip-tools
パッケージが導入されています。
cmake
がバージョン 3.26 にリベース
cmake
パッケージがバージョン 3.26 に更新されました。以下は、主な改善点です。
- C17 および C18 の言語規格のサポートが追加されました。
-
cmake
は、/etc/os-release
ファイルでオペレーティングシステムの識別情報をクエリーできるようになりました。 -
CUDA 20 および
nvtx3
ライブラリーのサポートが追加されました。 - Python 安定アプリケーションバイナリーインターフェイスのサポートが追加されました。
- Simplified Wrapper and Interface Generator (SWIG) ツールに Perl 5 のサポートが追加されました。
valgrind
が 3.22 に更新される
valgrind
パッケージがバージョン 3.22 に更新されました。以下は、主な改善点です。
-
valgrind
memcheck
は、C 関数memalign
、posix_memalign
、およびaligned_alloc
に指定された値と、C++17 で調整されたnew
Operator が有効なアラインメント値であるかどうかをチェックするようになりました。 -
valgrind
memcheck
は、C++14 サイズおよび C++17 に揃えられたnew
およびdelete
Operator の不一致検出をサポートするようになりました。 -
DWARF デバッグ情報の遅延読み取りのサポートが追加され、
debuginfo
パッケージがインストールされている場合に起動が高速化されました。
libabigail
がバージョン 2.4 にリベース
libabigail
パッケージがバージョン 2.4 に更新されました。
主な機能拡張は、次のとおりです。
-
abidiff
ツールが 2 セットのバイナリーの比較をサポートするようになりました。 - 柔軟な配列データメンバーに関連する無害な変更レポートを抑制するためのサポートが追加されました。
-
enum
型に関する無害な変更レポートを抑制するためのサポートが改善されました。 - 匿名の enum 型、union 型、struct 型への変更の表現が改善されました。