4.12. コンパイラーおよび開発ツール
システム GCC がバージョン 11.5 にリベース
RHEL 9 の GCC のシステムバージョンがバージョン 11.5 に更新されました。この更新では多数のバグが修正されました。
glibc の新しい調整可能パラメーターを使用して動的オブジェクトをより近くに配置することで、パフォーマンスが向上する
以前は、glibc の動的ローダーは、セキュリティーを強化するために、使用可能なアドレス空間全体に動的オブジェクトをランダムに配置していました。その結果、オブジェクト間が遠くなりすぎて、オブジェクト間の呼び出しが非効率的になることが少なくありませんでした。
この更新により、次の調整パラメーターを設定することで、オブジェクトをより近くに (具体的にはアドレス空間の最初の 2 GB に) 配置できるようになりました。
export GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1
export GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1
この調整パラメーターを設定すると、一部のアプリケーションで、アドレス空間配置のランダム化 (ASLR) がわずかに低下する代わりにパフォーマンスが向上する可能性があります。
Jira:RHEL-20172[1]
glibc は、Intel APX 対応関数の動的リンクをサポートするようになる
互換性のない動的リンカートランポリンが、Intel Advanced Performance Extensions (APX) アプリケーションの非互換性の原因になっている可能性が特定されました。回避策として、BIND_NOW 実行可能ファイルを使用するか、標準の呼び出し規則のみを使用できます。この更新により、glibc の動的リンカーは APX 関連のレジスターを保持します。
この変更により、スタックの最上部を超える追加の空間が必要になります。この空間を厳密に制限するユーザーは、場合によってはスタック制限を調整または評価する必要があります。
Jira:RHEL-25046[1]
glibc での AMD Zen 3 および Zen 4 のパフォーマンスが最適化される
以前は、AMD Zen 3 および Zen 4 プロセッサーは、最適な選択かどうかにかかわらず、memcpy および memmove ライブラリールーチンの Enhanced Repeat Move String (ERMS) バージョンを使用することがありました。この glibc 更新により、AMD Zen 3 および Zen 4 プロセッサーは最適なバージョンの memcpy と memmove を使用するようになりました。
Jira:RHEL-25531[1]
GDB のシステムバージョンがバージョン 14.2 にリベースされ、GDB が GCC Toolset から削除される
GDB がバージョン 14.2 に更新されました。RHEL 9.5 以降、GDB は、RHEL のマイナーリリースでシステムバージョンがリベースされた Rolling Application Stream に移行しています。したがって、GDB は RHEL 9 の GCC Toolset 14 には含まれていません。
以下の段落では、GDB 12.1 から GDB 14.2 への主な変更点を示します。
全般:
-
info breakpointsコマンドは、無効なブレークポイントの有効なブレークポイントの位置をy-状態で表示するようになりました。 -
ELF の Zstandard (
ELFCOMPRESS_ZSTD) で圧縮されたデバッグセクションのサポートが追加されました。 -
テキストユーザーインターフェイス (TUI) では、現在の位置を示すインジケーターで強調表示されるソースコードとアセンブリコードのスタイルがデフォルトで設定されなくなりました。スタイルを再度有効にするには、新しいコマンド
set style tui-current-positionを使用します。 -
新しい簡易変数
$_inferior_thread_countには、現在の inferior 内のライブスレッドの数が含まれます。 -
コード位置が複数あるブレークポイントの場合、GDB は
<breakpoint_number>.<location_number>構文を使用してコードの場所を出力するようになりました。 -
ブレークポイントにヒットすると、GDB は
$_hit_bpnumおよび$_hit_locno簡易変数をヒットしたブレークポイント番号とコード位置番号に設定するようになりました。これで、disable $_hit_bpnumコマンドを使用して最後にヒットしたブレークポイントを無効にしたり、disable $_hit_bpnum.$_hit_locnoコマンドを使用して特定のブレークポイントコードの位置のみを無効にしたりできるようになりました。 -
NO_COLOR環境変数のサポートが追加されました。 - 64 ビットを超える整数型のサポートが追加されました。
-
マルチターゲット機能設定用の新しいコマンドを使用して、リモートターゲット機能セットを設定できます (コマンドの
set remote <name>-packetとshow remote <name>-packetを参照)。 - デバッガーアダプタープロトコルのサポートが追加されました。
-
新しい
inferiorキーワードを使用して、ブレークポイントを inferior 固有のブレークポイントに設定できるようになりました (コマンドのbreakまたはwatchを参照)。 -
式の評価中にシェルコマンドを実行するための新しい便利な関数
$_shell()が使用可能になりました。
既存コマンドの変更点:
break、watch-
breakおよびwatchコマンドでthreadまたはtaskキーワードを複数回使用すると、キーワードの最後のインスタンスのスレッドまたはタスク ID が使用されるのではなく、エラーが発生するようになりました。 -
同じ
breakまたはwatchコマンドでthread、task、inferiorキーワードを複数使用できなくなりました。
-
printf、dprintf-
printfおよびdprintfコマンドは、printコマンドと同じ方法で式をフォーマットする%V出力形式を受け入れるようになりました。コマンドの後に括弧[…]で囲んだ追加の print オプションを使用して、出力形式を変更することもできます (例:printf "%V[-array-indexes on]", <array>)。
-
list-
.引数を使用して、現行フレームの実行ポイント付近の位置、または inferior が開始されていない場合はmain()関数の開始付近の位置を出力できるようになりました。 -
ファイル内で利用可能な行数より多くのソース行をリストしようとすると、警告が出され、ユーザーに
.引数を参照するよう指示されます。
-
document user-defined- ユーザー定義のエイリアスを文書化できるようになりました。
新しいコマンド:
-
set print nibbles [on|off](デフォルト:off)、show print nibbles-print/tコマンドを使用した場合に 4 ビット (ニブル) のグループでバイナリー値を表示するかどうかを制御します。 -
set debug infcall [on|off](デフォルト:off)、show debug infcall- inferior 関数呼び出しに関する追加のデバッグメッセージを出力します。 -
set debug solib [on|off](デフォルト:off)、show debug solib- 共有ライブラリーの処理に関する追加のデバッグメッセージを出力します。 -
set print characters <LIMIT>、show print characters、print -characters <LIMIT>- 文字列うち何文字を出力するか制御します。 -
set debug breakpoint [on|off](デフォルト:off)、show debug breakpoint- ブレークポイントの挿入と削除に関する追加のデバッグメッセージを出力します。 -
maintenance print record-instruction [ N ]- 指定された命令の記録された情報を出力します。 -
maintenance info frame-unwinders- 現在有効なフレームアンワインダーを優先度の高いものから順にリストします。 -
maintenance wait-for-index-cache- インデックスキャッシュへの保留中の書き込みがすべて完了するまで待機します。 -
info main- プログラムのエントリーポイントを識別するためにメインシンボルに関する情報を出力します。 -
set tui mouse-events [on|off](デフォルト:on)、show tui mouse-events- マウスクリックイベントを、TUI および Python エクステンションに送信するか (onの場合)、ターミナルに送信するか (offの場合) を制御します。
Machine Interface (MI) の変更:
- MI バージョン 1 は削除されました。
-
MI は、逆実行履歴をすべて使用すると、
no-historyが報告されるようになりました。 -
-break-insertコマンドの出力で、threadおよびtaskブレークポイントフィールドが 2 回報告されなくなりました。 - 存在しないスレッド ID でスレッド固有のブレークポイントを作成できなくなりました。
-
-stack-list-arguments、-stack-list-locals、-stack-list-variables、および-var-list-childrenコマンドの--simple-values引数は、ターゲットが simple の場合に参照型を simple として扱うようになりました。 -
-break-insertコマンドは、inferior 固有のブレークポイントを作成するための新しい-g thread-group-idオプションを受け入れるようになりました。 -
ブレークポイント作成通知と
-break-insertコマンドの出力に、メインブレークポイントと各ブレークポイントの位置のオプションフィールドinferiorを追加できるようになりました。 -
breakpoint-hitの停止理由を示す非同期レコードに、ブレークポイントの位置が複数の場合にコードの位置番号を示すオプションフィールドlocnoが含まれるようになりました。
GDB Python API の変更点:
Events
-
新しい
gdb.ThreadExitedEventイベント。 -
progspaceおよびreload属性を持つExecutableChangedEventオブジェクトを出力する新しいgdb.executable_changedイベントレジストリー。 -
新しい
gdb.events.new_progspaceおよびgdb.events.free_progspaceイベントレジストリー。NewProgpspaceEventおよびFreeProgspaceEventイベント型を出力します。両方のイベント型に、GDB に追加または GDB から削除されるgdb.Progspaceプログラムスペースを指定するための単一の属性progspaceがあります。
-
新しい
gdb.unwinder.Unwinderクラス-
name属性は読み取り専用になりました。 -
__init__関数の name 引数はstr型である必要があります。そうでない場合はTypeErrorが発生します。 -
enabled属性はbool型のみを受け入れるようになりました。
-
gdb.PendingFrameクラス-
新しいメソッド:
name、is_valid、pc、language、find_sal、block、function。これらはgdb.Frameクラスの同様のメソッドを反映しています。 -
create_unwind_info関数のframe-id引数は、pc、sp、およびspecial属性に対して整数またはgdb.Valueオブジェクトのいずれかにできるようになりました。
-
新しいメソッド:
-
gdb.PendingFrame.create_unwind_info関数に渡すことができる新しいgdb.unwinder.FrameIdクラス。 -
gdb.disassembler.DisassemblerResultクラスはサブクラス化できなくなりました。 -
gdb.disassemblerモジュールにスタイルサポートが含まれるようになりました。 -
新しい
gdb.execute_mi(COMMAND, [ARG]…)関数。GDB/MI コマンドを呼び出して結果を Python ディクショナリーとして返します。 -
新しい
gdb.block_signals()関数。GDB が処理する必要のあるすべてのシグナルをブロックするコンテキストマネージャーを返します。 -
threading.Threadクラスの新しいgdb.Threadサブクラス。startメソッドでgdb.block_signals関数を呼び出します。 -
gdb.parse_and_eval関数に、グローバルシンボルの解析を制限するための新しいglobal_contextパラメーターが追加されました。 gdb.Inferiorクラス-
新しい
arguments属性。既知の場合に inferior へのコマンドライン引数を保持します。 -
新しい
main_name属性。既知の場合に inferior のmain関数の名前を保持します。 -
新しい
clear_env、set_env、およびunset_envメソッド。inferior が開始される前にその環境を変更できます。
-
新しい
gdb.Valueクラス-
オブジェクトの値を割り当てる新しい
assignメソッド。 -
配列のような値を配列に変換する新しい
to_arrayメソッド。
-
オブジェクトの値を割り当てる新しい
gdb.Progspaceクラス-
新しい
objfile_for_addressメソッド。指定されたアドレス (存在する場合) をカバーするgdb.Objfileオブジェクトを返します。 -
Progspace.filename変数に対応するgdb.Objfileオブジェクトを保持する新しいsymbol_file属性 (ファイル名がNoneの場合はNone)。 -
新しい
executable_filename属性。exec-fileまたはfileコマンドによって設定されたファイル名の文字列を保持します (実行可能ファイルが設定されていない場合はNone)。
-
新しい
gdb.Breakpointクラス-
新しい
inferior属性。inferior 固有のブレークポイントの inferior ID (整数) が含まれます (そのようなブレークポイントが設定されていない場合はNone)。
-
新しい
gdb.Typeクラス-
新しい
is_array_likeおよびis_string_likeメソッド。型の実際の型コードにかかわらず、配列型か文字列型かを反映します。
-
新しい
-
新しい
gdb.ValuePrinterクラス。pretty-printer を適用した結果の基本クラスとして使用できます。 -
新しく実装された
gdb.LazyString.__str__メソッド。 gdb.Frameクラス-
新しい
static_linkメソッド。ネストされた関数フレームの外側のフレームを返します。 -
新しい
gdb.Frame.languageメソッド。フレームの言語の名前を返します。
-
新しい
gdb.Commandクラス-
GDB は、文字列をヘルプ出力として使用する前に、
gdb.Commandクラスとgdb.Parameterサブクラスのドキュメント文字列を再フォーマットして、各行の先頭の不要な空白を削除するようになりました。
-
GDB は、文字列をヘルプ出力として使用する前に、
gdb.Objfileクラス-
新しい
is_file属性。
-
新しい
-
新しい
gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE)関数。逆アセンブラーからアドレス、シンボル、オフセット情報を出力する際に同じ形式を使用します。 -
新しい
gdb.current_language関数。現在の言語の名前を返します。 -
GDB の逆アセンブラーをラップするための新しい Python API。
gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH)、gdb.disassembler.Disassembler、gdb.disassembler.DisassembleInfo、gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE)、gdb.disassembler.DisassemblerResultが含まれます。 -
新しい
gdb.print_options関数。gdb.Value.format_string関数で受け入れられる形式で、一般的な出力オプションのディクショナリーを返します。 gdb.Value.format_string関数-
gdb.Value.format_stringは、printまたはその他の同様の操作中に呼び出された場合に、printコマンドで提供される形式を使用するようになりました。 -
gdb.Value.format_stringは、summaryキーワードを受け入れるようになりました。
-
-
新しい
gdb.BreakpointLocationPython 型。 -
gdb.register_window_typeメソッドは、受け入れられるウィンドウ名のセットを制限するようになりました。
アーキテクチャー固有の変更:
AMD アーキテクチャーおよび Intel 64 ビットアーキテクチャー
-
libopcodesライブラリーを使用した逆アセンブラースタイルのサポートが追加されました。現在、これがデフォルトとして使用されています。set style disassembler *コマンドを使用して、逆アセンブラーの出力スタイルを変更できます。代わりに Python Pygments スタイルを使用するには、新しいmaintenance set libopcodes-styling offコマンドを使用します。
-
64 ビット ARM アーキテクチャー
- Memory Tagging Extension (MTE) のメモリータグデータをダンプするためのサポートが追加されました。
- Scalable Matrix Extension 1 および 2 (SME/SME2) のサポートが追加されました。ZA 状態での手動関数呼び出しや、DWARF に基づく Scalable Vector Graphics (SVG) の変更の追跡など、一部の機能はまだ試験版またはアルファ版と見なされています。
- Thread Local Storage (TLS) 変数のサポートが追加されました。
- ハードウェアウォッチポイントのサポートが追加されました。
64 ビット IBM Z アーキテクチャー
-
IBM Z ターゲット上の新しい
arch14命令の記録および再生のサポート (specialized-function-assist 命令NNPAを除く)。
-
IBM Z ターゲット上の新しい
IBM Power Systems (リトルエンディアン)
- POWER11 のベース有効化のサポートを追加しました。
アプリケーションストリームのローリングの詳細は、Red Hat Enterprise Linux アプリケーションストリームライフサイクル を参照してください。
Jira:RHEL-36211、Jira:RHEL-10550、Jira:RHEL-39555
elfutils がバージョン 0.191 にリベース
elfutils パッケージがバージョン 0.191 に更新されました。以下は、主な改善点です。
libdwライブラリーの変更点:-
dwarf_addrdie関数が、debug_arangesセクションがないバイナリーをサポートするようになりました。 - DWARF パッケージファイルのサポートが改善されました。
-
新しい
dwarf_cu_dwp_section_info関数が追加されました。
-
-
debuginfodサーバーのキャッシュエビクションロジックが強化され、vdso.debugなどの小さいファイル、頻繁に使用されるファイル、または遅いファイルの保持が改善されました。 -
eu-srcfilesユーティリティーは、DWARF/ELF ファイルのソースファイルを取得し、それをzipアーカイブに配置できるようになりました。
SystemTap がバージョン 5.1 にリベース
SystemTap トレーシングおよびプローブツールがバージョン 5.1 に更新されました。主な変更点は、以下のとおりです。
-
スクリプトのコンパイル中に権限を減らすための実験的な
--build-as=USERフラグ。 - ホスト PID によって識別される、コンテナー内で実行されているプローブプロセスのサポートの向上。
- ユーザー空間ハードウェアブレークポイントとウォッチポイント用の新しいプローブ。
-
--runtime=bpfモードの--remote操作のサポート。 - カーネルとユーザーのトランスポートの堅牢性の向上。
valgrind がバージョン 3.23.0 にリベース
Valgrind スイートがバージョン 3.23.0 に更新されました。主な機能拡張は、次のとおりです。
-
--track-fds=yesオプションが、ファイル記述子の二重クローズに対して警告し、抑制可能なエラーを生成し、XML 出力をサポートするようになりました。 -
--show-error-list=no|yesオプションが、抑制されたエラーも出力する新しい値allを受け入れるようになりました。 -
64 ビット IBM Z アーキテクチャーで、
Valgrindが Neural Network Processing Assist (NNPA) ファシリティーのベクトル命令 (VCNF、VCLFNH、VCFN、VCLFNL、VCRNF、NNPA(z16/arch14)) をサポートするようになりました。 -
64 ビット ARM アーキテクチャーで、
Valgrindがdotprod命令 (sdot/udot) をサポートするようになりました。 -
AMD および Intel 64 ビットアーキテクチャーで、
Valgrindが x86_64-v3 マイクロアーキテクチャーに対してより正確な命令サポートを提供するようになりました。 -
Valgrindが、メモリーの重複を検出できるwcpncpy、memccpy、strlcat、およびstrlcpy関数のラッパーを提供するようになりました。 -
Valgrindが、Linux システムコールmlock2、fchmodat2、およびpidfd_getfdをサポートするようになりました。
Jira:RHEL-29534、Jira:RHEL-10551
libabigail バージョン 2.5 にリベース
libabigail ライブラリーがバージョン 2.5 に更新されました。主な変更点は、以下のとおりです。
- 柔軟な配列データメンバーの厳密な変換の抑制仕様が改善されました。
- C++ バイナリーの pointer-to-member 型のサポートが追加されました。
-
abicompatツールのweakモードが改善されました。 -
オペレーティングシステムの ABI を管理するための新しい
abidbツール。 - 多くのバグ修正。
Jira:RHEL-30013, Jira:RHEL-7325, Jira:RHEL-7332
新しい GCC Toolset 14
GCC Toolset 14 は、最新バージョンの開発ツールを提供するコンパイラーツールセットです。これは、AppStream リポジトリー内の Software Collection の形式で Application Stream として利用できます。
以下のツールおよびバージョンは、GCC Toolset 14 で利用できます。
- GCC 14.2
-
binutils2.41 -
annobin12.70 -
dwz0.14
GDB のシステムバージョンがリベースされ、GDB は GCC Toolset に含まれなくなった 点に注意してください。
GCC Toolset 14 をインストールするには、ルートとして次のコマンドを入力します。
dnf install gcc-toolset-14
# dnf install gcc-toolset-14
GCC Toolset 14 のツールを実行するには、以下のコマンドを実行します。
scl enable gcc-toolset-14 <tool>
$ scl enable gcc-toolset-14 <tool>
GCC Toolset 14 のツールバージョンによってこのツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、以下のコマンドを実行します。
scl enable gcc-toolset-14 bash
$ scl enable gcc-toolset-14 bash
GCC Toolset 14 コンポーネントは、gcc-toolset-14-toolchain コンテナーイメージで利用できます。
詳細は、GCC Toolset 14 および GCC Toolset の使用 を参照してください。
Jira:RHEL-29758[1]、Jira:RHEL-29852
GCC Toolset 14: GCC がバージョン 14.2 にリベース
GCC Toolset 14 では、GNU Compiler Collection (GCC) がバージョン 14 2 に更新されました。
主な変更点は、以下のとおりです。
- 最適化と診断の改善
-
一連のハードニングフラグを有効化する新しい包括的な
-fhardenedオプション -
関数の途中に制御を移す攻撃を検出する新しい
-fharden-control-flow-redundancyオプション -
関数と変数のスタックスクラビングプロパティーを制御する新しい
strub型属性 -
特定の
mem*関数のインライン展開を強制する新しい-finline-stringopsオプション - 新しい OpenMP 5.1、5.2、6.0 機能のサポート
- いくつかの C23 の新機能
- 複数の新しい C++23 および C++26 機能
- いくつかの C++ 不具合報告の解決
- C++ ライブラリーにおける C++20、C++23、C++26 の実験的サポートの新規追加と改良
- 64 ビット ARM アーキテクチャーの新しい CPU のサポート
- 64 ビット Intel アーキテクチャーの複数の新しい命令セットアーキテクチャー (ISA) 拡張 (例: AVX10.1、AVX-VNNI-INT16、SHA512、SM4)
- GCC の静的アナライザーの新しい警告
- 一部の警告をエラーに変更 (詳細は、GCC 14 への移植 を参照)
- さまざまなバグ修正
GCC 14 の変更点の詳細は、アップストリームの GCC リリースノート を参照してください。
Jira:RHEL-29853[1]
GCC Toolset 14: annobin がバージョン 12.70 にリベース
GCC Toolset 14 で、annobin がバージョン 12.70 に更新されました。更新されたバイナリーテスト用の annobin ツールセットにより、さまざまなバグ修正が提供され、新しいテストが導入され、新しいバージョンの GCC、Clang、LLVM、および Go コンパイラーをビルドして使用するようにツールが更新されます。強化されたツールにより、非標準的な方法でビルドされたプログラムの新しい問題を検出できます。
Jira:RHEL-29850[1]
GCC Toolset 14: binutils がバージョン 2.41 にリベース
RHEL 9.5 は、GCC Toolset 14 binutils バージョン 2.41 とともに配布されます。新機能は次のとおりです。
-
binutilsツールは、64 ビット Intel および ARM アーキテクチャーのアーキテクチャー拡張をサポートします。 -
リンカーが、
--remap-inputs <PATTERN>=<FILE>コマンドラインオプションを受け入れるようになりました。これにより、<PATTERN>に一致する入力ファイルを<FILE>に置き換えることができます。さらに、--remap-inputs-file=<FILE>オプションを使用して、このような再マッピングディレクティブを任意の数含むファイルを指定できます。 -
ELF ターゲットの場合、リンカーのコマンドラインオプション
--print-map-localsを使用して、リンカーマップにローカルシンボルを含めることができます。 -
ほとんどの ELF ベースのターゲットでは、
--enable-linker-versionオプションを使用して、リンカーのバージョンを文字列として.commentセクションに挿入できます。 -
リンカースクリプト構文に、出力セクション用の新しいコマンド
ASCIZ "<string>"が追加されました。このコマンドは、現在の場所にゼロ終端の文字列を挿入します。 -
新しい
-z nosectionheaderリンカーコマンドラインオプションを使用して、ELF セクションヘッダーを省略できます。
Jira:RHEL-29851[1]
GCC Toolset 13: GCC が AMD Zen 5 をサポートするようになる
GCC の GCC Toolset 13 バージョンでは、AMD Zen 5 プロセッサーマイクロアーキテクチャーのサポートが追加されました。サポートを有効にするには、-march=znver5 コマンドラインオプションを使用します。
Jira:RHEL-36523[1]
LLVM Toolset が 18.1.8 に更新される
LLVM Toolset がバージョン 18.1.8 に更新されました。
LLVM の主な更新点:
-
以下の命令の定数式バリアントが削除されました。
and、or、lshr、ashr、zext、sext、fptrunc、fpext、fptoui、fptosi、uitofp、sitofp。 -
llvm.exp10組み込み関数が追加されました。 -
グローバル変数の
code_model属性が追加されました。 - AArch64、AMDGPU、PowerPC、RISC-V、SystemZ、x86 アーキテクチャーのバックエンドが改善されました。
- LLVM ツールが改善されました。
Clang の主な機能拡張:
C++20 機能のサポート:
-
Clang は、グローバルモジュールフラグメント内の宣言に対して One Definition Rule (ODR) チェックを実行しなくなりました。より厳密な動作を有効にするには、
-Xclang -fno-skip-odr-check-in-gmfオプションを使用してください。
-
Clang は、グローバルモジュールフラグメント内の宣言に対して One Definition Rule (ODR) チェックを実行しなくなりました。より厳密な動作を有効にするには、
C++23 機能のサポート:
-
ラムダでの属性の使用に関する警告するための新しい診断フラグ
-Wc++23-lambda-attributesが追加されました。
-
ラムダでの属性の使用に関する警告するための新しい診断フラグ
C++2c 機能のサポート:
-
同じスコープ内で、
_文字をプレースホルダー変数名として複数回使用できるようになりました。 - 属性が、文字列リテラルである属性パラメーター内で未評価の文字列を要求するようになりました。
- C++26 の列挙型に対する非推奨の算術変換が削除されました。
- テンプレートパラメーター初期化の仕様が改善されました。
-
同じスコープ内で、
- 変更点の完全なリストは、Clang のアップストリームのリリースノート を参照してください。
Clang の ABI の変更点:
-
x86_64 の SystemV ABI に従い、
__int128引数がレジスターとスタックスロット間で分割されなくなりました。 - 詳細は、Clang の ABI 変更点のリスト を参照してください。
後方互換性のない主な変更点:
- テンプレート化された演算子の引数の逆順に関するバグ修正により、以前は C++17 で受け入れられていたコードが C++20 では機能しなくなります。
-
GCC_INSTALL_PREFIXCMake 変数 (デフォルトの--gcc-toolchain=を設定する変数) が非推奨になり、削除される予定です。代わりに、設定ファイルで--gcc-install-dir=または--gcc-triple=オプションを指定してください。 -
プリコンパイル済みヘッダー (PCH) 生成 (
-c -xc-headerおよび-c -xc++-header) のデフォルトの拡張子名が、.gchではなく.pchになりました。 -
-include a.hがa.h.gchファイルをプローブするときに、そのファイルが Clang PCH ファイルまたは Clang PCH ファイルを含むディレクトリーでない場合、include がa.h.gchを無視するようになりました。 -
__has_cpp_attributeおよび__has_c_attributeが特定の C++-11 スタイルの属性に対して誤った値を返すバグが修正されました。 -
逆の
operator==の追加時に一致するoperator!=を検出する際のバグが修正されました。 - 関数テンプレートの名前マングリングルールが変更され、テンプレートパラメーターリストまたは requires 句で関数をオーバーロードできるようになりました。
-
-Wenum-constexpr-conversion警告が、システムヘッダーとマクロでデフォルトで有効になりました。これは、次の Clang リリースでハード (ダウングレード不可能な) エラーに変更されます。 - C++20 名前付きモジュールのインポートされたモジュールへのパスが、ハードコードできなくなりました。依存するすべてのモジュールをコマンドラインから指定する必要があります。
-
import <module>を使用してモジュールをインポートできなくなりました。Clang は明示的にビルドされたモジュールを使用します。 - 詳細は、互換性を破壊する可能性のある変更点のリスト を参照してください。
詳細は、LLVM リリースノート および Clang リリースノート を参照してください。
LLVM Toolset は Rolling Application Stream であり、最新バージョンのみがサポートされます。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Rust Toolset がバージョン 1.79.0 にリベース
Rust Toolset がバージョン 1.79.0 に更新されました。以前提供されていたバージョン 1.75.0 以降の主な機能拡張は次のとおりです。
-
新しい
offset_of!マクロ - C 文字列リテラルのサポート
-
インライン
const式のサポート - 関連型の位置における境界のサポート
- 一時的な自動有効期間延長の改善
-
unsafe前提条件のデバッグアサーション
Rust ツールセットは Rolling Application Stream であり、最新バージョンのみがサポートされます。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Go Toolset がバージョン 1.23 にリベース
RHSA-2025:3773 アドバイザリーのリリースに伴い、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サブコマンドには、参照ファイルで使用する Go のバージョンに対して新しすぎるシンボルへの参照にフラグを立てるstdversionアナライザーが含まれています。 -
cmdおよびcgo機能は、C リンカーにフラグを渡すための-ldflagsオプションをサポートしています。goコマンドは、非常に大きなCGO_LDFLAGS環境変数を使用する場合に、argument list too longエラーを回避するために、このフラグを自動的に使用します。 -
traceユーティリティーは、部分的に壊れたトレースを許容し、トレースデータを回復しようとします。これはクラッシュが発生した場合にクラッシュに至るまでのトレースを取得できるため、特に便利です。 -
未処理のパニックまたはその他の致命的なエラーの後にランタイムによって出力されるトレースバックには、
goroutineのスタックトレースを最初のgoroutineと区別するためのインデントが含まれます。 - プロファイルガイドによる最適化を使用したコンパイラービルド時間のオーバーヘッドが 1 桁のパーセンテージに削減されました。
-
新しい
-bindnowリンカーフラグにより、動的にリンクされた ELF バイナリーをビルドするときに即時の関数バインディングが有効になります。 -
//go:linknameリンカーディレクティブは、定義で//go:linknameでマークされていない標準ライブラリーおよびランタイムの内部シンボルを参照しなくなりました。 -
プログラムが
TimerまたはTickerを参照しなくなった場合、Stopメソッドが呼び出されていなくても、これらはガベージコレクションによってすぐにクリーンアップされます。TimerまたはTickerに関連付けられたタイマーチャネルは、現在バッファーなし (容量 0) になっています。これにより、ResetメソッドまたはStopメソッドが呼び出されるたびに、呼び出し後に古い値が送受信されなくなります。 -
新しい
uniqueパッケージは、interningまたはhash-consingなどの値を正規化する機能を提供します。 -
新しい
iterパッケージは、ユーザー定義のイテレーターを使用するための基本的な定義を提供します。 -
slicesおよびmapsパッケージには、イテレーターで使用するいくつかの新しい関数が導入されています。 -
新しい
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 は Rolling Application Stream であり、Red Hat は最新バージョンのみをサポートします。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Jira:RHEL-83437[1]
Go Toolset がバージョン 1.22 にリベース
Go Toolset がバージョン 1.22 に更新されました。
主な機能拡張は、次のとおりです。
- for ループ内の変数がイテレーションごとに作成されるようになりました。これにより、不慮の共有バグを防ぐことができます。さらに、for ループは整数の範囲をカバーできるようになりました。
- ワークスペース内のコマンドで、ワークスペースの依存関係にベンダーディレクトリーを使用できるようになりました。
-
go getコマンドが、従来のGOPATHモードをサポートしなくなりました。この変更は、go buildコマンドとgo testコマンドには影響しません。 -
vetツールが、for ループの新しい動作に合わせて更新されました。 - 型ベースのガベージコレクションメタデータを各ヒープオブジェクトの近くに保持することで、CPU パフォーマンスが向上するようになりました。
- インライン化の最適化が改善され、プロファイルに基づく最適化のサポートの強化によりパフォーマンスが向上しました。
-
新しい
math/rand/v2パッケージが利用可能です。 - メソッドとワイルドカードのサポートにより、HTTP ルーティングパターンが強化されました。
詳細は、アップストリームの Go リリースノートを参照してください。
Go ツールセットは Rolling Application Stream であり、最新バージョンのみがサポートされます。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Jira:RHEL-29527[1]
PCP がバージョン 6.2.2 にリベース
Performance Co-Pilot (PCP) がバージョン 6.2.2 に更新されました。利用可能であった以前のバージョン 6.2.0 への主な変更点は、以下のとおりです。
新しいツールとエージェント
-
pcp2openmetrics: Open Metrics 形式の PCP メトリクスをリモートエンドポイントにプッシュする新しいツール -
pcp-geolocate: 緯度と経度のメトリクスラベルを報告する新しいツール -
pmcheck: PCP コンポーネントを調査および制御するための新しいツール -
pmdauwsgi: uWSGI サーバーから計装をエクスポートする新しい PCP エージェント
強化されたツール
-
pmdalinux: 新しいカーネルメトリクス (hugepages、filesystems、TCP、softnet、virtual machine balloon) が追加されました。 -
pmdalibvirt: メトリクスラベルのサポートを追加し、新しいバルーン、仮想 CPU、ドメイン情報メトリクスが追加されました。 -
pmdabpf:pcp-atopユーティリティーと使用するための eBPF ネットワークメトリクスが改良されました。
Grafana がバージョン 10.2.6 にリベース
Grafana プラットフォームがバージョン 10.2.6 に更新されました。
主な機能拡張は、次のとおりです。
- 時系列およびローソク足ビジュアライゼーションの Y 軸を、Shift キーを押しながらクリックしてドラッグすることで拡大できるようになりました。
- ダッシュボード作成時のデータソースの選択が効率化されました。
- ユーザーインターフェイスが更新されました (ナビゲーションとコマンドパレットの更新など)。
-
変換に対するさまざまな改善 (
Add field from calculation変換の新しい単項演算モードなど)。 - ダッシュボードとデータの視覚化に対するさまざまな改善 (空のダッシュボードとダッシュボードパネルの再設計など)。
- 新しいジオマップパネルとキャンバスパネル。
その他の変更点:
- ユーザー、アクセス、認証、認可、セキュリティーに対するさまざまな改善。
- アラートの改善と新しいアラート機能。
- パブリックダッシュボードが利用可能になりました。
以前利用可能だった Grafana バージョン 9.2 以降の変更点の完全なリストについては、アップストリームのドキュメント を参照してください。
Jira:RHEL-31246[1]
Red Hat build of OpenJDK 17 が RHEL 9 のデフォルトの Java 実装になる
デフォルトの RHEL 9 Java 実装は、ライフサイクル終了 (EOL) に達した OpenJDK 11 から OpenJDK 17 に変更されます。この更新後、OpenJDK 17 Java Runtime Environment と OpenJDK 17 Java Software Development Kit を提供する java-17-openjdk パッケージは、java および java-devel パッケージも提供するようになります。詳細は、OpenJDK のドキュメント を参照してください。
java/bin または java-openjdk/bin を直接呼び出す RHEL 9 の既存のパッケージは、すぐに OpenJDK 17 を使用できるようになります。
java または java-devel パッケージを直接必要とする RHEL 9 の既存のパッケージ (つまり tomcat と systemtap-runtime-java) は、適切な依存関係を自動的に取得します。
Ant、Maven、および javapackages-tools パッケージを通じて間接的に Java を使用しているパッケージは、RHEL 9.5 の一般提供開始後すぐに非同期更新で完全に移行されます。
OpenJDK を初めてインストールする必要がある場合、または依存関係チェーンを通じてデフォルトパッケージがインストールされていない場合は、DNF を使用します。
dnf install java-17-openjdk-devel
# dnf install java-17-openjdk-devel
詳細は、yum を使用した RHEL への Red Hat build of OpenJDK の複数のマイナーバージョンのインストール を参照してください。
RHEL 9 の現在の java-11-openjdk パッケージは、これ以上更新されません。ただし、Red Hat は 2027 年 10 月 31 日まで、Red Hat build of OpenJDK 11 の更新を含む Extended Life Cycle support (ELS) フェーズ 1 を提供します。詳細は、Red Hat build of OpenJDK 11 Extended Lifecycle Support (ELS-1) Availability を参照してください。
OpenJDK ELS プログラムと OpenJDK ライフサイクルに固有の詳細情報は、OpenJDK のライフサイクルおよびサポートポリシー を参照してください。
java および関連コンポーネントの alternatives コマンドを manual モードに設定している場合は、更新後も OpenJDK 11 が引き続き使用されます。この場合に OpenJDK 17 を使用するには、alternatives 設定を auto に変更します。以下に例を示します。
alternatives --auto java alternatives --auto javac
# alternatives --auto java
# alternatives --auto javac
設定を確認するには、alternatives --list コマンドを使用します。
Jira:RHEL-56094[1]