3.13. コンパイラーおよび開発ツール
LLVM Toolset が 19.1.7 に更新される
LLVM Toolset がバージョン 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 ライフサイクル ドキュメントを参照してください。
llvm-doc
パッケージにアップストリームドキュメントへの参照のみが含まれるようになる
以前のバージョンでは、llvm-doc
パッケージには HTML 形式の LLVM ドキュメントが含まれていました。この更新により、パッケージはアップストリームドキュメントへの参照を含む /usr/share/doc/llvm/html/index.html
ファイルのみを提供します。
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 ...
Rust Toolset がバージョン 1.84.1 にリベース
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 ライフサイクル ドキュメントを参照してください。
PCP がバージョン 6.3.2 にリベース
Performance Co-Pilot (PCP) がバージョン 6.3.2 に更新されました。利用可能であった以前のバージョン 6.2.2 からの主な変更点は、以下のとおりです。
-
pmdaopenmetrics
: 仮想大規模言語モデル (vLLM) メトリクスがデフォルトで追加されるようになりました。 -
pmdalinux
: Hyper-V バルーンメトリクスのサポートが追加されました。 -
pmdalinux
: ネットワークとhugepages
カーネルメトリクスが更新されました。 -
pmdaamdgpu
: この新しいエージェントは、libdrm
およびlibdrm-amdgpu
ライブラリーからメトリクスを収集します。 -
pmdabpftrace
: 多数のまたは遅いbpftrace
スクリプトでのこのエージェントの起動が修正されました。 -
pmdaproc
: このエージェントは、Linuxfdinfo
インターフェイスから AMD GPU の新しいメトリクスを収集するようになりました。 -
pmdahacluster
: 新しい Pacemaker バージョンをサポートするためにメトリクスが更新されました。 -
pmdastatsd
: 負荷がかかったときにクラッシュを回避するようにバグを修正しました。 -
pcp-htop
: AMD GPU メトリクスのサポートが追加されました。 -
pcp-htop
: プラットフォーム設定が修正され、画面タブが有効になりました。 -
pcp-xsos
: このユーティリティーが追加されました。詳細は、pcp-xsos
がシステムの迅速な概要を提供する を参照してください。 -
pmrep
: 多数の設定ファイルメトリクスセットが更新されました。 -
pmlogconf
: 多数の設定ファイルの自動レコードが更新されました。 -
libpcp
およびpmcd
: セキュリティー強化のためのいくつかの改善が追加されました。 -
libpcp
およびpmlogger
: アーカイブのオプションのzstd
圧縮のサポートが追加されました。
glibc
ライブラリーの IBM POWER10 の最適化が改善される
この機能拡張により、glibc
ライブラリーにおける IBM POWER10 プラットフォームのハードウェアサポートが改善されました。その結果、このプラットフォームでは strcmp()
および memchr()
API のパフォーマンスが大幅に向上しました。
Jira:RHEL-24740[1]
valgrind
がバージョン 3.24.0 にリベース
valgrind
スイートがバージョン 3.24.0 に更新されました。主な機能拡張は、次のとおりです。
-
--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
-
libabigail
がバージョン 2.6 にリベース
libabigail
ライブラリーがバージョン 2.6 に更新されました。主な変更点は、以下のとおりです。
- BPF Type Format (BTF) と Common Trace Format (CTF) を使用することで、Linux カーネルモジュール分析のサポートが向上しました。
- ミドルエンドでの内部型比較アルゴリズムが改善されました。
-
abipkgdiff
、abidw
、abilint
ユーティリティーのログが改善されました。 - 多くのバグが修正されました。
さらなる変更は、アップストリームのリリースノート を参照してください。
SystemTap
がバージョン 5.2 にリベース
SystemTap
トレーシングおよびプローブツールがバージョン 5.2 に更新されました。
主な機能拡張は、elfutils
0.192 に基づく debuginfod-metadata
ベースのプローブの完全な有効化です。この機能を使用すると、debuginfod
サーバーで一致するすべての名前を検索することにより、特定のバイナリーまたはライブラリーの全範囲のバージョンをターゲットとする systemtap
スクリプトを作成できます。
elfutils
がバージョン 0.192 にリベース
elfutils
パッケージがバージョン 0.192 に更新されました。以下は、主な改善点です。
-
debuginfod
サービスは、RHEL の RPM Integrity Measurement Architecture (IMA) スキームを使用してファイルごとの署名検証を実行し、整合性をチェックできるようになりました。 -
ファイル名からビルド ID をクエリーするなど、サーバーのメタデータをクエリーするための新しい
debuginfod
API が追加されました。 -
カーネル
debuginfo
パッケージからのDebuginfod
サーバー側ファイル抽出が大幅に高速化されました。 -
dwfl_set_sysroot
、dwfl_frame_unwound_source
、およびdwfl_unwound_source_str
関数がlibdw
ライブラリーに追加されました。 -
eu-stacktrace
ユーティリティーはテクノロジープレビューとして利用できます。詳細は、eu-stacktrace
がテクノロジープレビューとして利用可能になる を参照してください。
ld
リンカーは、アプリケーションがメモリーリージョンに対して読み取り、書き込み、実行権限を使用しているかを検出するようになる
読み取り、書き込み、実行の権限を同時に持つメモリーリージョンは、バッファーオーバーフローによって実行可能コードがメモリーに注入され、実行される可能性があるため、潜在的な攻撃ポイントとなります。
この機能拡張により、ld
リンカーは、アプリケーションがこれらの 3 つの権限を持つメモリーリージョンを使用しているかを検出し、アプリケーションに対して次のエラーを報告します。
ld: error: <file_name> has a LOAD segment with RWX permissions
ld: error: <file_name> has a LOAD segment with RWX permissions
ld
を -no-error-rwx-segments
オプションとともに使用して、エラーを抑制できます。ただし、リンカーがこのエラーを報告した場合にアプリケーションの潜在的なリスクを防ぐために、ソースコードを修正し、ビルド方法を変更して問題を解消してください。
Jira:RHEL-59802[1]
ld
リンカーは、アプリケーションが実行可能スタックを使用しているかを検出するようになる
バッファーのオーバーランにより実行可能なコードが配置される場合、メモリーの実行可能領域に保持されるスタックは、潜在的な攻撃ポイントになります。
この機能拡張により、ld
リンカーはアプリケーションが実行可能スタックを使用して作成されているかを検出し、次のようなエラーを報告します。
error: creating an executable stack because of -z execstack command line option error: <file>: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section) error: <file>: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
error: creating an executable stack because of -z execstack command line option
error: <file>: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)
error: <file>: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
-no-error-execstack
オプションを指定して ld
を使用すると、エラーを抑制できます。ただし、ld
がエラーを報告した場合にアプリケーションの潜在的なリスクを防ぐために、ソースコードを変更し、実行可能なスタックを使用しないようにビルドマシンを変更することが推奨されます。
Jira:RHEL-59801[1]
binutils
が IBM Z 命令セットの arch15
エクステンションをサポートするようになる
この機能拡張により、binutils
は IBM Z プラットフォーム上の CPU の arch15
エクステンションをサポートするようになりました。開発者は、アセンブラーのソースファイルで arch15
エクステンションの新機能を使用できるようになり、更新されたコンパイラーが利用可能な場合は、コンパイルされたプログラムでも使用できます。これにより、プログラムのサイズが小さくなり、速度も速くなります。
Jira:RHEL-50068[1]
boost-devel
パッケージが BoostConfig.cmake
とその他の公式 CMake スクリプトを提供する
この機能拡張により、BoostConfig.cmake
およびその他の公式 CMake スクリプトが boost-devel
パッケージに追加されます。CMake は、boost
機能が存在するかをテストするために、これらのスクリプトを使用します。その結果、boost
機能をテストする CMake プロジェクトがより堅牢に機能するようになりました。
Go Toolset がバージョン 1.23 にリベース
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-62392[1]
glibc
が GB18030-2022 エンコード標準をサポートするようになる
この機能拡張により、glibc
の GB18030 エンコード標準のサポートがバージョン 2005 から 2022 に更新されます。バージョン 2022 では、この標準によって導入された 31 個の新しいトランスコーディング関係と追加の文字およびコードポイントを使用できます。
Jira:RHEL-56032[1]
Go Toolset がバージョン 1.24.4 にリベース
RHSA-2025:10676 アドバイザリーのリリースに伴い、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-101074[1]