6.14. コンパイラーおよび開発ツール
RHEL 10 で GCC 14.2 が導入される
RHEL 10 には、GNU Compiler Collection (GCC) バージョン 14.2 が含まれています。
GCC 13 以降の主な変更点は次のとおりです。
- 最適化と診断の改善
-
一連のハードニングフラグを有効化する新しい包括的な
-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 リリースノート を参照してください。
GCC 14 のデフォルトは x86-64-v3
RHEL 10 の GCC 14 では、デフォルトのマイクロアーキテクチャーレベルが x86-64-v3 になりました。このレベルでは、AVX および AVX2 命令セットや Fused Multiply-Add (FMA) 命令セットなどの特定の機能がデフォルトで有効になります。詳細は関連する こちらの記事 を参照してください。
GCC が IBM Power Systems ではデフォルトで IEEE128
浮動小数点形式を使用する
RHEL10 では、GCC は IBM Power Systems 上のすべての long double 浮動小数点数に対して、従来のソフトウェア専用の IBM-DOUBLE-DOUBLE
コードではなく、デフォルトで IEEE128
浮動小数点形式を使用します。その結果、long double 浮動小数点数を使用して計算を実行する C または C++ コードのパフォーマンスが向上することを確認できます。
この 128 ビット long double 浮動小数点 ABI は、RHEL 8 以前のバージョンで使用されていた浮動小数点 ABI と互換性がないことに注意してください。IEEE128
操作を実行するためのハードウェア命令のサポートは、IBM POWER9 以降で利用できます。
Jira:RHEL-24760[1]
GCC 14 が FUJITSU-MONAKA CPU をサポートする
RHEL 10.0 以降、GNU Compiler Collection (GCC) は FUJITSU-MONAKA をサポートします。その結果、-mcpu=fujitsu-monaka
コマンドラインオプションを使用して、このプラットフォーム用のコードを作成できます。
Jira:RHEL-65765[1]
GCC 14 が POWER 11 アーキテクチャーをサポートする
RHEL 10.0 以降、GNU Compiler Collection (GCC) は POWER 11 アーキテクチャーをサポートします。その結果、-mcpu=power11
コマンドラインオプションを使用して POWER 11 用のコードを作成できます。
Jira:RHEL-24762[1]
RHEL 10 には annobin
バージョン 12.55 が含まれる
RHEL 10 には annobin
バージョン 12.55 が含まれています。以前に利用可能であったバージョン 12.32 からの主な変更点は、以下のとおりです。
- GCC、Clang、LLVM、Go コンパイラーの新しいバージョンをビルドして使用するためのツールを更新
-
GCC コマンドラインオプション
-Wimplicit-int
および-Wimplicit-function-declaration
の使用の記録とテスト - LLVM のサポートの改善
- 新しいテスト
- 非推奨となった OpenSSL Engine コードが使用されているかを識別するための新しいチェック
-
複数の
--debug-rpm
オプションをサポート - さまざまなバグ修正
Jira:RHEL-526[1]
RHEL 10 には binutils
バージョン 2.41 が含まれる
RHEL 10 には binutils
バージョン 2.41 が含まれています。以前に利用可能であったバージョン 2.40 からの主な変更点は、以下のとおりです。
-
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:RHELDOCS-18761[1]
GCC は Power 10 以降の ROP 保護命令を生成できる
IBM Power 10 以降のプラットフォームには、プログラムの脆弱性を悪用するために使用される一般的なプリミティブである Return-Oriented Programming (ROP) に対する保護機能が備わっています。この機能拡張により、{{-mrop-protect}}
フラグを使用できるようになり、GCC はこれらのプラットフォーム用の ROP 保護命令を作成します。ランタイムサポートがないため、生成された命令は現時点では効果がなく、CPU はそれらを無操作 (NOP) 命令として扱うことに注意してください。ただし、開発者は {{-mrop-protect}}
フラグを使用して ROP 保護メカニズムを組み込むことができ、今後これらのプラットフォームで ROP 保護が有効になったときに、アプリケーションのセキュリティーが強化されます。
Jira:RHEL-36791[1]
binutils
が IBM Z 命令セットの arch15
エクステンションをサポートするようになる
この機能拡張により、binutils
は IBM Z プラットフォーム上の CPU の arch15
エクステンションをサポートするようになりました。開発者は、アセンブラーのソースファイルで arch15
エクステンションの新機能を使用できるようになり、更新されたコンパイラーが利用可能な場合は、コンパイルされたプログラムでも使用できます。これにより、プログラムのサイズが小さくなり、速度も速くなります。
Jira:RHEL-56896[1]
binutils
の ld
リンカーが --section-ordering-file
オプションをサポートする
デフォルトのシステムリンカーである ld.bfd
で新しい --section-ordering-file
コマンドラインオプションを使用して、互いに近接していることでメリットが得られるコードまたはデータのセクションをグループ化できるようになりました。
この機能は、キャッシュミスを減らすことでプログラムのパフォーマンスを向上させます。プロファイリングツールを使用して、時間の経過に伴うプログラムコードの使用を分析し、実行可能イメージ内のコードのグループ化を改善できます。その結果、メモリー内のプログラムのレイアウトをより細かく制御できるようになります。
--section-ordering-file
オプションは、すでにこの機能を提供している gold
および lld
リンカーとの互換性も強化します。
詳細は、ブログ記事 A practical guide to linker section ordering を参照してください。
glibc
は、Intel APX 対応関数の動的リンクをサポートするようになる
互換性のない動的リンカートランポリンが、Intel Advanced Performance Extensions (APX) アプリケーションの非互換性の原因になっている可能性が特定されました。回避策として、BIND_NOW
実行可能ファイルを使用するか、標準の呼び出し規則のみを使用できます。この更新により、glibc
の動的リンカーは APX 関連のレジスターを保持します。
この変更により、スタックの最上部を超える追加の空間が必要になります。この空間を厳密に制限するユーザーは、場合によってはスタック制限を調整または評価する必要があります。
RHEL 10 では glibc
バージョン 2.39 が提供される
RHEL 10 で GNU C ライブラリー (glibc
) バージョン 2.39 が導入される
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
を使用するようになりました。
RHEL 10 では GDB バージョン 14.2 が提供される
GDB がバージョン 14.2 に更新されました。以下の段落では、GDB 12.1 以降の主な変更点を示します。
全般:
-
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.BreakpointLocation
Python 型。 -
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 のベース有効化のサポートを追加しました。
GDB 10.2 の RHEL 9 システムバージョン以降の変更は、GDB 11.2 の GCC Toolset 12 バージョン および GDB 12.1 の GCC Toolset 13 バージョン のリリースノートを参照してください。
Jira:RHEL-33256、Jira:RHEL-39324、Jira:RHEL-24764
RHEL 10 では 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
アーカイブに配置できるようになりました。
RHEL 10 では SystemTap
バージョン 5.1 が提供される
RHEL 10 には、SystemTap
トレーシングおよびプロービングツールのバージョン 5.1 が含まれています。バージョン 5.0 以降の主な変更点は、以下のとおりです。
-
スクリプトのコンパイル中に権限を減らすための実験的な
--build-as=USER
フラグ。 - ホスト PID によって識別される、コンテナー内で実行されているプローブプロセスのサポートの向上。
- ユーザー空間ハードウェアブレークポイントとウォッチポイント用の新しいプローブ。
-
--runtime=bpf
モードの--remote
操作のサポート。 - カーネルとユーザーのトランスポートの堅牢性の向上。
RHEL 10 では 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
をサポートするようになりました。
RHEL 10 で Dyninst
バージョン 12.3.0 が導入される
RHEL 10 には Dyninst
ライブラリーバージョン 12.3.0 が含まれています。
Jira:RHEL-49597[1]
SystemTap
がバージョン 5.2 で提供される
RHEL 10.0 では、SystemTap
トレーシングおよびプロービングツールのバージョン 5.2 が提供されます。
主な機能拡張は、elfutils
0.192 に基づく debuginfod-metadata
ベースのプローブの完全な有効化です。この機能を使用すると、debuginfod
サーバーで一致するすべての名前を検索することにより、特定のバイナリーまたはライブラリーの全範囲のバージョンをターゲットとする systemtap
スクリプトを作成できます。
RHEL 10 で debugedit
5.1 が導入される
RHEL 10 には debugedit
5.1 が含まれています。主な変更点は以下のとおりです。
-
debugedit
ユーティリティーは、より高速なxxhash
アルゴリズムを使用してbuildid
を生成するようになりました。 -
find-debuginfo
ユーティリティーは、次の新しいオプションをサポートしています。 -
-v
と--verbose
を使用すると、処理されたすべてのファイルに関する出力をさらに追加します。 -
-q
と--quiet
を使用すると、エラー以外のすべての出力を抑制します。 -
find-debuginfo
ユーティリティーは、dwz
ツールにも-j
オプションを渡すようになり、並列処理が可能になりました。 -
debugedit
ユーティリティーは、圧縮された DWARF デバッグ ELF セクションを処理するようになりました。 -
debugedit
ユーティリティーは、clang
コンパイラーで使用されるように、より多くの DWARF5 構造を処理するようになりました。
RHEL 10 では elfutils バージョン 0.192 が提供される
elfutils
パッケージがバージョン 0.192 に更新されました。以下は、主な改善点です。
debuginfod
:- Fedora および RHEL の RPM IMA スキームを使用して、整合性チェックのためのファイルごとの署名検証を追加しました。
-
メタデータクエリー用の新しい API: ファイル名
buildid
。 -
カーネルの
debuginfo
パッケージからのファイルのサーバー側抽出が大幅に高速化されました。所要時間は、約 50 秒から 0.25 秒未満に短縮されました。
libdw
:-
新しい関数
dwfl_set_sysroot
、dwfl_frame_unwound_source
、およびdwfl_unwound_source_str
。
-
新しい関数
stacktrace
:-
Sysprof
プロファイラーからのスタックサンプルのストリームを処理し、それらを呼び出しチェーンに展開できる新しい実験的なツールです。--enable-stacktrace
を使用して x86 で有効にします。詳細な使用方法は、development branch のREADME.eu-stacktrace
ファイル を参照してください。 -
eu-stacktrace
ユーティリティーはテクノロジープレビューとして利用できます。詳細は、eu-stacktrace
がテクノロジープレビューとして利用可能になる を参照してください。
-
RHEL 10 では libabigail
2.6 が提供される
RHEL 10 は、libabigail
ライブラリーのバージョン 2.6 を提供します。主な変更点は、以下のとおりです。
- BPF Type Format (BTF) と Common Trace Format (CTF) を使用することで、Linux カーネルモジュール分析のサポートが向上しました。
- ミドルエンドでの内部型比較アルゴリズムが改善されました。
-
abipkgdiff
、abidw
、abilint
ユーティリティーのログが改善されました。 - 多くのバグが修正されました。
さらなる変更は、アップストリームのリリースノート を参照してください。
valgrind
がバージョン 3.24.0 で提供される
RHEL 10.0 では、バージョン 3.24.0 で valgrind
スイートが提供されます。主な機能拡張は、次のとおりです。
-
--track-fds=yes
オプションは、不正なファイル記述子を使用しているときに抑制可能なエラーを表示し、エラーを XML 出力に書き込むようになりました。このオプションを使用しない場合に表示される警告は非推奨となり、今後のバージョンで削除される予定です。 - エラーメッセージが Ada の名前デマングルをサポートするようになりました。
-
deflate-conversion
機能 (z15/arch13) は、IBM Z プラットフォームの Deflate 圧縮呼び出し (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
-
Go Toolset がバージョン 1.23 で提供される
RHEL 10.0 では、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 ライフサイクル ドキュメントを参照してください。
RHEL 10 で LLVM ツールセット 19.1.7 が導入される
RHEL 10 には LLVM Toolset version 19.1.7 が含まれています。
LLVM コンパイラーの主な変更点:
- LLVM は、デバッグ情報をより効率的に表現する デバッグレコード を使用するようになりました。
Clang の主な更新:
- C++14 サイズの割り当て解除がデフォルトで有効になりました。
- C++17 のサポートが完了しました。
- 特にモジュール、概念、Class Template Argument Deduction (CTAD) に関する C++20 へのサポートが改善されました。
- C++23、C++2c、C23、C2y のサポートが改善されました。
詳細は、LLVM リリースノート および Clang リリースノート を参照してください。
LLVM Toolset は Rolling Application Stream であり、最新バージョンのみがサポートされます。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
RHEL 10.0 には Rust Toolset バージョン 1.84.1 が含まれる
RHEL 10.0 には、Rust Toolset バージョン 1.84.1 が含まれています。以前提供されていたバージョン 1.79.0 以降の主な機能拡張は次のとおりです。
-
新しい
LazyCell
およびLazyLock
タイプは、最初の使用時まで初期化を遅延します。これらは、各インスタンスに初期化関数が含まれた以前のOnceCell
およびOnceLock
タイプを拡張します。 - 標準ライブラリーの新しいソート実装により、実行時のパフォーマンスとコンパイル時間が向上します。また、コンパレーターが完全な順序を生成していない場合を検出し、ソートされていないデータを返す代わりにパニックを発生させるようにしています。
-
不透明な戻り値の型の正確なキャプチャーが追加されました。新しい
use<..>
構文は、impl Trait
戻り値の型で使用されるジェネリックパラメーターと有効期間を指定します。 const
コードに多くの新機能が追加されました。以下に例を示します。- 浮動小数点サポート
-
インラインアセンブリーの
const
immediate - 静的なものへの参照
- ミュータブルな参照とポインター
unsafe
コードに対する多くの新機能が追加されました。次に例を示します。- 厳密な履歴管理 API
-
&raw
ポインター構文 - 静的なものを安全に処理する
-
安全でない
extern
ブロック内で安全な項目を宣言する
-
Cargo 依存関係リゾルバーはバージョンを認識するようになりました。依存関係クレートがサポートされる最小 Rust バージョンを指定している場合、Cargo は依存関係グラフを解決するときに、最新の
semver
互換のクレートバージョンを使用する代わりに、この情報を使用します。
互換性に関する注意事項:
-
WebAssembly System Interface (WASI) ターゲットが
rust-std-static-wasm32-wasi
からrust-std-static-wasm32-wasip1
に変更されました。コマンドラインで--target wasm32-wasip1
パラメーターを使用して WASI ターゲットを選択することもできます。詳細は、アップストリームブログ投稿 Changes to Rust’s WASI targets を参照してください。 -
分割されたパニックフックとパニックハンドラー引数
core::panic::PanicInfo
とstd::panic::PanicInfo
は異なる型になりました。 -
extern "C"
関数は、キャッチされないパニックが発生すると停止します。ABI 境界を越えてアンワインドできるようにするには、代わりにextern "C-unwind"
を使用します。
Rust Toolset は Rolling Application Stream であり、Red Hat は最新バージョンのみをサポートします。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Jira:RHEL-59689[1]
RHEL 10 には PCP バージョン 6.3.0 が含まれる
RHEL 10 には Performance Co-Pilot (PCP) バージョン 6.3.0 が含まれています。利用可能であった以前のバージョン 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 ネットワークメトリクスが改良されました。
Jira:RHELDOCS-18787[1]
RHEL 10 では Grafana
バージョン 10.2.6 が提供される
Grafana
プラットフォームがバージョン 10.2.6 に更新されました。
主な機能拡張は、次のとおりです。
- 時系列およびローソク足ビジュアライゼーションの Y 軸を、Shift キーを押しながらクリックしてドラッグすることで拡大できるようになりました。
- ダッシュボード作成時のデータソースの選択が効率化されました。
- ユーザーインターフェイスが更新されました (ナビゲーションとコマンドパレットの更新など)。
-
変換に対するさまざまな改善 (
Add field from calculation
変換の新しい単項演算モードなど)。 - ダッシュボードとデータの視覚化に対するさまざまな改善 (空のダッシュボードとダッシュボードパネルの再設計など)。
- 新しいジオマップパネルとキャンバスパネル。
その他の変更点:
- ユーザー、アクセス、認証、認可、セキュリティーに対するさまざまな改善。
- アラートの改善と新しいアラート機能。
- パブリックダッシュボードが利用可能になりました。
以前利用可能だった Grafana
バージョン 9.2 以降の変更点の完全なリストは、アップストリームのドキュメント を参照してください。
RHEL 10 では grafana-pcp
バージョン 5.2.2 が提供される
RHEL 10 には、grafana-pcp
プラグインバージョン 5.2.2 が同梱されています。主な変更点は、以下のとおりです。
- プラグインは、Redis の代わりに Valkey をデータソースとして使用するようになりました。その結果、PCP Redis データソースの名前が PCP Valkey に変更されました。
新しいダッシュボード:
- PCP Vector Top Consumers
- PCP Vector UWSGI の概要
- RediSearch モジュールの代替が Valkey データソースで利用可能になるまで、メトリクス検索は使用できません。
Grafana、PCP、grafana-pcp
がデータの保存に Valkey
を使用するようになる
RHEL 10 では Valkey
キー値ストアが Redis
に置き換えられます。その結果、Grafana
、PCP、grafana-pcp
プラグインは、Redis
ではなく Valkey
を使用してデータを保存するようになりました。grafana-pcp
プラグインの PCP Redis
データソースの名前が PCP Valkey
に変更されました。
RHEL 10 では zlib-ng-compat
が zlib
に置き換えられます。
新しい zlib-ng-compat
パッケージは、さまざまなプログラムで使用される汎用のロスレスデータ圧縮ライブラリーを提供します。この実装は、RHEL 9 に含まれる zlib
と比べてさまざまな利点を提供します。たとえば、zlib-ng-compat
は、利用可能な場合にハードウェアアクセラレーションをサポートし、圧縮の効率とパフォーマンスを向上させます。zlib-ng-compat
は、zlib
からスムーズに移行するように、API および ABI 互換モードで構築されています。
Jira:RHEL-24058[1]
CRB リポジトリーで利用可能な SWIG 4.3.0
Simplified Wrapper and Interface Generator (SWIG) バージョン 4.2.1 が CodeReady Linux Builder (CRB) リポジトリーで利用可能になりました。主な変更点は、以下のとおりです。
- Python 標準テンプレートライブラリー (STL) コンテナーラッパーは、Python Iterator プロトコルを使用するようになりました。
SWIG は現在以下をサポートしています。
- Python stable Application Binary Interface (ABI)
- Python 3.12 および Python 3.13
- Ruby 3.2 および Ruby 3.3
- Tcl 9.0
- PHP 8; PHP 7 のサポートは削除されました。
- C++11 の auto 変数に対して、C++14 の auto 変数と同様に後置戻り値型なしで使用できるサポートが追加されました。
- 暗黙的、デフォルト、削除されたもの、および関連する代入不可能な変数ラッパーを含む、コンストラクター、デストラクター、および代入演算子が修正されました。
- Node.js binary stable ABI Node-API をターゲットとする新しい Javascript ジェネレーターが利用可能になりました。
- 複数の非推奨機能が削除されました。
- ターゲット言語として C の実験的サポートが追加されました。
-
nspace
機能を使用する際の名前空間の処理が強化されました。 -
std::unique_ptr
、std::string_view
、std::filesystem objects
に対して STL ラッパーが強化されました。 - C++17 の折り畳み式と C++11 の後置戻り値型のサポートが追加されました。
- 文字列および文字リテラルの処理が改善されました。
CodeReady Linux Builder リポジトリーに含まれるパッケージは、サポート対象外であることに注意してください。
Jira:RHELDOCS-19059[1]
Red Hat build of OpenJDK 21 が RHEL 10 のデフォルトの Java 実装になる
デフォルトの RHEL 10 Java 実装は OpenJDK 21 です。OpenJDK 21 Java Runtime Environment と OpenJDK 21 Java Software Development Kit を提供する java-21-openjdk
パッケージを使用します。詳細は、OpenJDK のドキュメント を参照してください。
Clang と LLVM はデバッグセクションの圧縮に zstd
をサポートするようになる
デフォルトでは、Clang および LLVM ツールはデバッグセクションの圧縮アルゴリズムとして Zlib
を使用します。この機能拡張により、ユーザーは Zlib
よりも高い圧縮率を達成できる Zstandard (zstd
) アルゴリズムを代わりに使用できるようになります。
たとえば、Clang でプログラムをコンパイルするときに zstd
圧縮を使用する場合は、次のコマンドを使用します。
clang -Wa,-compress-debug-sections=zstd -Wl,--compress-debug-sections=zstd ...
$ clang -Wa,-compress-debug-sections=zstd -Wl,--compress-debug-sections=zstd ...
llvm-doc
パッケージにアップストリームドキュメントへの参照のみが含まれるようになる
以前のバージョンでは、llvm-doc
パッケージには HTML 形式の LLVM ドキュメントが含まれていました。この更新により、パッケージはアップストリームドキュメントへの参照を含む /usr/share/doc/llvm/html/index.html
ファイルのみを提供します。
RHEL 10 では cmake
のバージョン 3.30.5 が提供される
RHEL 10 には cmake
バージョン 3.30.5 が含まれています。主な変更は、アップストリームのリリースノート を参照してください。
RHEL 10 で .NET バージョン 9.0 と 8.0 を提供
自動メモリー管理と最新のプログラミング言語を備えた汎用開発プラットフォームである .NET の最新バージョン (9.0) と、現在の .NET (8.0) の長期サポートは、Red Hat Enterprise Linux (RHEL) 10 でサポートされます。.NET を使用すると、高品質のアプリケーションを効率的に構築できます。
インストールと使用方法の詳細は、.NET 9.0 および .NET 8.0 のドキュメントを参照してください。
Jira:RHELDOCS-20066[1]
RHEL 10.0 では、Go Toolset のバージョン 1.24.4 が提供される
RHSA-2025:10677 アドバイザリーのリリースに伴い、Go Toolset がバージョン 1.24.4 に更新されました。
主な機能拡張と変更点は次のとおりです。
言語:
- ジェネリック型エイリアスが完全にサポートされるようになりました。これにより、型エイリアスにパラメータを持たせることが可能になり、ジェネリックを扱う際の柔軟性が向上します。
ツール:
-
Go モジュールシステムは、
go.mod
ファイル内のtool
ディレクティブをサポートし、実行可能ファイルの依存関係を直接管理できるようにします。 -
go build
、go install
、go test
コマンドは、構造化された出力用の-json
フラグをサポートするようになりました。 -
新しい
GOAUTH
環境変数は、プライベートモジュールの強化された認証を提供します。
-
Go モジュールシステムは、
ランタイムとパフォーマンス:
- ランタイムの改善により、CPU オーバーヘッドが平均で 2-3% 削減されます。
- 主な変更点として、Swiss Tables に基づく新しいマップの実装と、より効率的なメモリー割り当てが挙げられます。
標準ライブラリー:
-
新しい
os.Root
タイプにより、ディレクトリー制限のあるファイルシステムアクセスが可能になります。 -
testing.B.Loop
メソッドによりベンチマークが改善されます。 -
runtime.AddCleanup
関数は、より柔軟なファイナライズメカニズムを提供します。 -
新しい
weak
パッケージでは、weak ポインターが導入されています。
-
新しい
暗号化:
-
ML-KEM 耐量子計算機鍵交換 (
crypto/mlkem
)、HKDF、PBKDF2、および SHA-3 の新しいパッケージが利用可能になりました。 - Go Cryptographic Module は現在、FIPS 140-3 認定に向けて審査中です。
-
ML-KEM 耐量子計算機鍵交換 (
追加の更新:
-
vet
ツールには、テストや例によくある間違いを検出するための新しいアナライザーが含まれています。 - objdump ツールは、より多くのアーキテクチャーをサポートするようになりました。
-
Cgo
では、パフォーマンスと正確性を向上させるためにアノテーションが導入されています。
-
詳細は、アップストリームのリリースノート を参照してください。
Go Toolset は Rolling Application Stream であり、Red Hat は最新バージョンのみをサポートします。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。
Jira:RHEL-101075[1]
IBM Semeru JDK が RHEL 10 で利用可能になる
IBM Semeru は、Technology Compatibility Kit (TCK) 認定済みの Java Runtime Environment (JRE) 実装です。これは Red Hat Enterprise Linux (RHEL) 10 に組み込まれており、IBM によってメンテナンスされています。java-21-ibm-semeru-certified-jdk-devel
パッケージは、RHEL Supplementary リポジトリー で提供されており、RHEL AppStream リポジトリー で提供されている Open Java Development Kit (OpenJDK) ディストリビューションの代替として利用できます。
Jira:RHELDOCS-20591[1]