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
# dnf install gcc-toolset-13
GCC Toolset 13 からツールを実行するには、以下を使用します。
scl enable gcc-toolset-13 tool
$ scl enable gcc-toolset-13 tool
GCC Toolset 13 のツールバージョンがこれらのツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、以下を使用します。
scl enable gcc-toolset-13 bash
$ 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 に更新されました。以下は、主な改善点です。
-
valgrindmemcheckは、C 関数memalign、posix_memalign、およびaligned_allocに指定された値と、C++17 で調整されたnewOperator が有効なアラインメント値であるかどうかをチェックするようになりました。 -
valgrindmemcheckが、C++14 のサイズおよび C++17 のアライメントを扱うnewおよびdelete演算子の不一致検出をサポートするようになりました。 -
DWARF デバッグ情報の遅延読み取りのサポートが追加され、
debuginfoパッケージがインストールされている場合に起動が高速化されました。
libabigail がバージョン 2.4 にリベース
libabigail パッケージがバージョン 2.4 に更新されました。
主な機能拡張は、次のとおりです。
-
abidiffツールが 2 セットのバイナリーの比較をサポートするようになりました。 - 柔軟な配列データメンバーに関連する無害な変更レポートを抑制するためのサポートが追加されました。
-
enum型に関する無害な変更レポートを抑制するためのサポートが改善されました。 - 匿名の enum 型、union 型、struct 型への変更の表現が改善されました。