4.9. コンパイラーおよび開発ツール


glibc の Intel® Xeon® v5 ベースのハードウェアでの文字列およびメモリールーチンのパフォーマンスが向上

以前は、文字列およびメモリールーチン用に glibc によって使用されるデフォルトのキャッシュ量により、Intel® Xeon® v5 ベースのシステムで、パフォーマンスが予想よりも低下していました。今回の更新では、パフォーマンスを向上させるために使用するキャッシュの量が調整されました。

Bugzilla:2180462

GCC はレジスター引数の保持をサポートするようになる

今回の更新により、引数レジスターの内容をスタックに保存し、適切な Call Frame Information (CFI) を生成して、アンワインダーがパフォーマンスに悪影響を与えることなく CFI を特定できるようになりました。

Bugzilla:2168205[1]

新しい GCC Toolset 13

GCC Toolset 13 は、最新バージョンの開発ツールを提供するコンパイラーツールセットです。これは、AppStream リポジトリー内の Software Collection の形式で Application Stream として利用できます。

GCC コンパイラーがバージョン 13.1.1 に更新され、アップストリームの GCC で利用できる多くのバグ修正と機能拡張が提供されています。

次のツールとバージョンが GCC Toolset 13 によって提供されます。

ツールバージョン

GCC

13.1.1

GDB

12.1

binutils

2.40

dwz

0.14

annobin

12.20

GCC Toolset 13 をインストールするには、root として次のコマンドを実行します。

# yum install gcc-toolset-13

GCC Toolset 13 からツールを実行するには、以下を使用します。

$ scl enable gcc-toolset-13 tool

GCC Toolset 13 のツールバージョンがこれらのツールのシステムバージョンをオーバーライドするシェルセッションを実行するには、以下を使用します。

$ scl enable gcc-toolset-13 bash

詳細は、https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset-13_assembly_additional-toolsets-for-development[GCC Toolset 13] および GCC Toolset の使用 を参照してください。

Bugzilla:2171898[1]、Bugzilla:2171928、Bugzilla:2188490

GCC Toolset 13: GCC がバージョン 13.1.1 にリベース

GCC Toolset 13 では、GNU Compiler Collection (GCC) がバージョン 13.1.1 に更新されました。主な変更点は、以下のとおりです。

一般的な改善

  • OpenMP:

    • OpenMP 5.0: Fortran は、いくつかの非長方形ループネストをサポートするようになりました。このようなサポートは、GCC 11 で C/C++ に追加されました。
    • 多くの OpenMP 5.1 機能が追加されました。
    • OpenMP 5.2 機能の初期サポートが追加されました。
  • 新しいデバッグ情報圧縮オプション値 -gz=zstd が利用できるようになりました。
  • -Ofast-ffast-math、および -funsafe-math-optimizations オプションでは、-shared オプションを使用して共有オブジェクトを生成するときに、浮動小数点環境を変更するためのスタートアップコードが追加されなくなりました。
  • GCC は、静的分析ツール (GCC の -fanalyzer など) の結果をキャプチャーするのに適した JSON ベース形式の、Static Analysis Results Interchange Format (SARIF) を使用して、診断を出力できるようになりました。SARIF を使用して、他の GCC 警告やエラーを機械可読形式でキャプチャーすることもできます。
  • リンクタイム最適化の改善が実装されました。

新しい言語と言語固有の改善

C ファミリー:

  • 新しい -Wxor-used-as-pow オプションは、ユーザーが指数を意図した可能性がある排他的論理和 (^) 演算子の使用について警告します。
  • ファイル記述子である int 引数を文書化するために、3 つの新しい関数属性が追加されました。

    • attribute((fd_arg(N)))
    • attribute((fd_arg_read(N)))
    • attribute((fd_arg_write(N)))

    これらの属性は、ファイル記述子の誤用を検出するために -fanalyzer によっても使用されます。

  • 新しいステートメント属性、attribute((assume(EXPR))); が、C++23 移植性の前提のために追加されました。この属性は、C または以前の C++ でもサポートされています。
  • GCC は、配列の要素にアクセスする目的で、構造体の最後の配列を柔軟な配列メンバーとして扱うタイミングを制御できるようになりました。デフォルトでは、集合体の最後の配列はすべて柔軟な配列メンバーとして扱われます。新しいコマンドラインオプション -fstrict-flex-arrays を使用して、どの配列メンバーを柔軟な配列として扱うかを制御します。

C:

  • いくつかの C23 機能が実装されました。

    • nullptr 定数が導入されました。
    • 基礎となる型を指定するために列挙が強化されました。
    • 可変個引数パラメーターリストの要件が緩和されました。
    • オブジェクト定義の型推論を有効にする auto 機能が導入されました。
    • オブジェクト定義に constexpr 指定子が導入されました。
    • 複合リテラル用のストレージクラス指定子が導入されました。
    • typeof オブジェクト (以前はエクステンションとしてサポート) と typeof_unqual オブジェクトが導入されました。
    • 新しいキーワード alignasalignofboolfalsestatic_assertthread_local、および true を追加しました。
    • 関数が呼び出し元に実行を返さないことを指定する [[noreturn]] 属性を追加しました。
    • 空のイニシャライザー括弧のサポートが追加されました。
    • STDC_VERSION_*_H ヘッダーバージョンマクロのサポートが追加されました。
    • ATOMIC_VAR_INIT マクロを削除しました。
    • <stddef.h> ヘッダーに unreachable マクロを追加しました。
    • トライグラフを削除しました。
    • プロトタイプ化されていない関数を削除しました。
    • %wN および %wfN 形式の長さ修飾子の -Wformat オプションを使用した printf および scanf 形式のチェックを追加しました。
    • Unicode Standard Annex (UAX) 31 の識別子構文のサポートが追加されました。
    • C23 で採用されている既存の機能は、C23 要件に従うように調整されており、-std=c2x -Wpedantic オプションを使用して診断されることはありません。
  • 新しい -Wenum-int-mismatch オプションは、列挙型と整数型の間の不一致について警告します。

C++:

  • -fexcess-precision オプションを使用して、excess precision サポートを実装しました。これは、-std=c++17 のような厳密な標準モードではデフォルトで有効化されています。デフォルトは -fexcess-precision=standard になります。-std=gnu++20 のような GNU 標準モードでは、デフォルトは -fexcess-precision=fast となり、以前の動作が復元されます。

    -fexcess-precision オプションは、次のアーキテクチャーに影響します。

    • x87 演算を使用する Intel 32 および 64 ビット、場合によっては Motorola 68000 では、floatdouble 式が long double 精度で評価されます。
    • 64 ビット IBM Z システムでは、float 式が double 精度で評価されます。
    • std::float16_t または std::bfloat16_t 型をサポートするいくつかのアーキテクチャーでは、これらの型は float 精度で評価されます。
  • 以下を含む C++23 の実験的サポートが改善されました。

    • 複合ステートメントの末尾にラベルのサポートが追加されました。
    • 一時オブジェクトへの参照バインディングを検出するための型特性を追加しました。
    • 揮発性複合操作のサポートが再導入されました。
    • #warning ディレクティブのサポートが追加されました。
    • 区切られたエスケープシーケンスのサポートが追加されました。
    • 名前付きユニバーサル文字エスケープのサポートが追加されました。
    • char8_t タイプの互換性と移植性に関する修正を追加しました。
    • 静的 operator() 関数オブジェクトを追加しました。
    • 暗黙的なムーブを簡略化しました。
    • 式内の等価性の書き換えは、以前より互換性を破壊しにくくなりました。
    • エンコード不可能なワイド文字リテラルとワイド複数文字リテラルを削除しました。
    • constexpr 関数の制限をいくつか緩和しました。
    • 拡張浮動小数点型と標準名。
    • 移植可能な前提条件を実装しました。
    • 移植可能なソースファイルのエンコード標準として UTF-8 のサポートを追加しました。
    • 静的 operator[] の添字演算子の多次元サポートを追加しました。
  • 新しい警告:

    • -Wself-move は、std::move を使用して値がそれ自体に移動されると警告します。
    • -Wdangling-reference は、有効期間が終了した一時オブジェクトに参照がバインドされている場合に警告します。
    • -Wpessimizing-move および -Wredundant-move 警告は、より多くのコンテキストで警告するように拡張されました。
  • 新しい -nostdlib++ オプションを使用すると、C++ 標準ライブラリーで暗黙的にリンクせずに、g++ とのリンクが可能になります。

libstdc++ ランタイムライブラリーの変更

  • 以下を含む C++20 の実験的サポートが改善されました。

    • <format> ヘッダーと std::format 関数を追加しました。
    • <chrono> ヘッダーに、std::chrono::utc_clock クロック、その他のクロック、タイムゾーン、および std::format 関数のサポートが追加されました。
  • 以下を含む C++23 の実験的サポートが改善されました。

    • <ranges> ヘッダーへの追加: views::zipviews::zip_transformviews::adjacentviews::adjacent_transformviews::pairwiseviews::slideviews::chunkviews::chunk_byviews::repeatviews::chunk_byviews::cartesian_productviews::as_rvalueviews::enumerate, views::as_const
    • <algorithm> ヘッダーへの追加: ranges::containsranges::contains_subrangeranges::iotaranges::find_lastranges::find_last_ifranges::find_last_if_notranges::fold_leftranges::fold_left_firstranges::fold_rightranges::fold_right_lastranges::fold_left_with_iterranges::fold_left_first_with_iter
    • std::expected クラステンプレートのモナド操作のサポート。
    • constexpr 修飾子を std::bitsetstd::to_chars、および std::from_chars 関数に追加しました。
    • 拡張浮動小数点型のライブラリーサポートを追加しました。
  • Library Fundamentals Technical Specification (TS) のバージョン 3 から <experimental/scope> ヘッダーのサポートが追加されました。
  • Concurrency TS のバージョン 2 から <experimental/synchronized_value> ヘッダーのサポートが追加されました。
  • フリースタンディング環境で以前は利用できなかった多くの機能のサポートが追加されました。以下に例を示します。

    • std::tuple クラステンプレートをフリースタンディング環境でのコンパイルに使用できるようになりました。
    • libstdc++ ライブラリーは、std::arraystd::string_view などのコンポーネントをフリースタンディング環境のサブセットに追加します。
    • libstdc++ ライブラリーは -ffreestanding コンパイラーオプションを尊重するようになったため、libstdc++ ライブラリーのフリースタンディング環境でのインストールを別途ビルドする必要がなくなりました。-ffreestanding を指定してコンパイルすると、libstdc++ ライブラリーが完全なホスト型実装としてビルドされた場合でも、フリースタンディング環境のサブセットで利用可能な機能が制限されます。

新しいターゲットとターゲット固有の改善

64 ビット ARM アーキテクチャー

  • -march= オプションの armv9.1-aarmv9.2-a、および armv9.3-a 引数のサポートが追加されました。

32 ビットおよび 64 ビットの AMD および Intel アーキテクチャー:

  • C と C++ の両方の場合、__bf16 型は、Streaming SIMD Extensions 2 以降が有効になっているシステムでサポートされます。
  • 実際の __bf16 型が AVX512BF16 命令組み込みに使用されるようになりました。以前は、short の typedef である __bfloat16 が使用されていました。GCC 12 を GCC 13 にアップグレードするときに、AVX512BF16 関連のソースコードを調整してください。
  • 次の Intel 命令をサポートするための新しいInstruction Set Architecture (ISA) エクステンションが追加されました。

    • AVX-IFMA の命令組み込みは、-mavxifma コンパイラースイッチを通じて使用できます。
    • AVX-VNNI-INT8 の命令組み込みは、-mavxvnniint8 コンパイラースイッチを通じて使用できます。
    • AVX-NE-CONVERT の命令組み込みは、-mavxneconvert コンパイラースイッチを通じて使用できます。
    • CMPccXADD の命令組み込みは、-mcmpccxadd コンパイラースイッチを通じて使用できます。
    • AMX-FP16 の命令組み込みは、-mamx-fp16 コンパイラースイッチを通じて使用できます。
    • PREFETCHI の命令組み込みは、-mprefetchi コンパイラースイッチを通じて使用できます。
    • RAO-INT の命令組み込みは、-mraoint コンパイラースイッチを通じて使用できます。
    • AMX-COMPLEX の命令組み込みは、-mamx-complex コンパイラースイッチを通じて使用できます。
  • GCC は、-march=znver4 コンパイラースイッチを通じて、znver4 コアに基づく AMD CPU をサポートするようになりました。このスイッチにより、GCC は自動ベクトル化時に 512 ビットベクトルの使用を考慮します。

静的アナライザーの改善

  • 静的アナライザーは 20 件の新しい警告を取得しました。

    • -Wanalyzer-allocation-size
    • -Wanalyzer-deref-before-check
    • -Wanalyzer-exposure-through-uninit-copy
    • -Wanalyzer-imprecise-fp-arithmetic
    • -Wanalyzer-infinite-recursion
    • -Wanalyzer-jump-through-null
    • -Wanalyzer-out-of-bounds
    • -Wanalyzer-putenv-of-auto-var
    • -Wanalyzer-tainted-assertion
    • ファイル記述子の誤用に関する 7 つの新しい警告:

      • -Wanalyzer-fd-access-mode-mismatch
      • -Wanalyzer-fd-double-close
      • -Wanalyzer-fd-leak
      • -Wanalyzer-fd-phase-mismatch (例: ソケットで listen を呼び出す前のソケットでの accept の呼び出し)
      • -Wanalyzer-fd-type-mismatch (例: データグラムソケットでのストリームソケット操作の使用)
      • -Wanalyzer-fd-use-after-close
      • -Wanalyzer-fd-use-without-check

        • また、openclosecreatdupdup2dup3pipepipe2read、および write 関数の動作の特殊ケーシングの処理も実装されました。
    • <stdarg.h> ヘッダーの誤用に関する 4 つの新しい警告:

      • -Wanalyzer-va-list-leak は、va_start マクロまたは va_copy マクロの後に va_end マクロがないことを警告します。
      • -Wanalyzer-va-list-use-after-va-end は、va_end マクロが呼び出された va_list オブジェクトタイプで使用されている va_arg または va_copy マクロについて警告します。
      • -Wanalyzer-va-arg-type-mismatch タイプは、プロシージャー間の実行パスでの va_arg マクロの使用状況を、実際に可変個引数呼び出しに渡されたパラメーターの型と照合してチェックします。
      • -Wanalyzer-va-list-exhausted は、プロシージャー間実行パス内の va_list オブジェクトタイプで va_arg マクロが何度も使用されている場合に警告します。
  • その他多数の改善。

後方互換性のない変更

C++ の場合、std::coutstd::cin などのグローバル iostream オブジェクトの構築は、<iostream> ヘッダーを含むすべてのソースファイルではなく、標準ライブラリー内で行われるようになりました。この変更により、C++ プログラムの起動パフォーマンスが向上しますが、ランタイムに正しいバージョンの libstdc++.so が使用されない場合、GCC 13.1 でコンパイルされたコードがクラッシュすることになります。ランタイムに正しい libstdc++.so を使用する方法の詳細は、ドキュメント を参照してください。将来の GCC リリースではこの問題が軽減され、互換性のない以前の libstdc++.so ではプログラムをまったく実行できなくなります。

Bugzilla:2172091[1]

GCC Toolset 13: annobin がバージョン 12.20 にリベース

GCC Toolset 13 は、annobin パッケージのバージョン 12.20 を提供します。主な機能拡張は、次のとおりです。

  • annobin ノートを別のデバッグ情報ファイルに移動するためのサポートが追加されました。これにより、実行可能バイナリーのサイズが縮小されます。
  • 新しい小さな note フォーマットのサポートが追加されたことで、個別の debuginfo ファイルのサイズが縮小され、これらのファイルの作成にかかった時間が短縮されました。

Bugzilla:2171923[1]

GCC Toolset 13: GDB がバージョン 12.1 にリベース

GCC Toolset 13 は、GDB バージョン 12.1 を提供します。

主なバグ修正と機能拡張は、以下のとおりです。

  • GDB では、デフォルトでソースコードと逆アセンブラーのスタイルが設定されるようになりました。スタイリングが GDB の自動化またはスクリプト作成を妨げる場合は、maint set gnu-source-highlight enabled off および maint set style disassembler enabled off コマンドを使用してスタイル設定を無効にできます。
  • GDB は、内部エラーが発生するたびにバックトレースを表示するようになりました。これがスクリプトまたは自動化に影響する場合は、maint set backtrace-on-fatal-signal off コマンドを使用して、この機能を無効にすることができます。

C/C++ の改善:

  • GDB は、C++ テンプレートに関係する関数または型を関数のオーバーロードと同様に扱うようになりました。パラメーターリストを省略して、複数のテンプレートタイプで構成される型や関数などのテンプレート関数のファミリーにブレークポイントを設定できます。タブ 補完にも同様の改善が加えられました。

ターミナルユーザーインターフェイス (TUI):

  • tui layout

    tui focus

    tui refresh

    tui window height
    これらは、それぞれ古い layoutfocusrefreshwinheight TUI コマンドの新しい名前です。古い名前は、これらの新しいコマンドのエイリアスとしてまだ存在しています。

  • tui window width

    winwidth

    ウィンドウが水平モードでレイアウトされている場合、新しい tui window width コマンドまたは winwidth エイリアスを使用して、TUI ウィンドウの幅を調整します。

  • info win

    このコマンドの出力には、TUI ウィンドウの幅に関する情報が含まれるようになりました。

Machine Interface (MI) の変更:

  • MI インタープリターのデフォルトバージョンが 4 (-i=mi4) になりました。
  • フラグのない -add-inferior コマンドは、現在の下位コマンドの接続を継承するようになりました。これにより、バージョン 10 より前の GDB の動作が復元されます。
  • -add-inferior コマンドは、接続なしで新しい下位コマンドを起動させる --no-connection フラグを受け入れるようになりました。
  • ブレークポイント出力の script フィールド (MI 3 以前では構文的に不正確) は、MI 4 ではリストになりました。これは次のコマンドとイベントに影響します。

    • -break-insert
    • -break-info
    • =breakpoint-created
    • =breakpoint-modified

      以前の MI バージョンでの新しい動作を有効にするには、-fix-breakpoint-script-output コマンドを使用します。

新しいコマンド:

  • maint set internal-error backtrace [on|off]

    maint show internal-error backtrace

    maint set internal-warning backtrace [on|off]

    maint show internal-warning backtrace

    GDB は、内部エラーまたは内部警告が発生したときに、自身のバックトレースを出力できるようになりました。これは、内部エラーの場合はデフォルトで有効化され、内部警告の場合はデフォルトで無効化されています。

  • exit

    既存の quit コマンドに加えて、新しい exit コマンドを使用して GDB を終了できます。

  • maint set gnu-source-highlight enabled [on|off]

    maint show gnu-source-highlight enabled
    ソースコードにスタイリングを追加するために、GNU Source Highlight ライブラリーを有効または無効化します。無効にすると、ライブラリーは利用可能であっても使用されません。GNU Source Highlight ライブラリーが使用されない場合は、代わりに Python Pygments ライブラリーが使用されます。

  • set suppress-cli-notifications [on|off]

    show suppress-cli-notifications

    CLI に対して通知の出力を抑制するかどうかを制御します。CLI 通知は、選択したコンテキスト (現在の下位、スレッド、フレームなど) を変更したとき、またはデバッグ中のプログラムが停止したときに (ブレークポイントに到達した、ソースステッピングの完了、または割り込みなどにより) 発生します。

  • set style disassembler enabled [on|off]

    show style disassembler enabled

    有効化すると、GDB が Python サポートでコンパイルされており、Python Pygments パッケージが利用可能な場合、コマンドは逆アセンブラー出力にスタイリングを適用します。

変更したコマンド:

  • set logging [on|off]

    非推奨となり、set logging enabled [on|off] コマンドに置き換えられました。

  • print

    /x のような基数変更形式を使用した浮動小数点値の出力は、目的の基数で値の基礎となるバイトを表示するように変更されました。

  • clone-inferior

    clone-inferior コマンドにより、TTYCMD、および ARGs の設定が、元の下位設定から新しい設定にコピーされるようになりました。set environment コマンドまたは unset environment コマンドを使用して加えられた環境変数へのすべての変更も、新しい下位環境変数にコピーされます。

Python API:

  • 新しい gdb.add_history() 関数は、gdb.Value オブジェクトを取り、それが表す値を GDB の履歴リストに追加します。この関数は、履歴リスト内の新しい項目のインデックスである整数を返します。
  • 新しい gdb.history_count() 関数は、GDB の値履歴内の値の数を返します。
  • 新しい gdb.events.gdb_exiting イベントは、GDB 終了コードの値を含む読み取り専用属性 exit_code を持つ gdb.GdbExitingEvent オブジェクトを使用して呼び出されます。このイベントは、GDB が終了する前の、GDB が内部状態のクリーンアップを開始する前にトリガーされます。
  • 新しい gdb.architecture_names() 関数は、考えられるすべての Architecture.name() 値を含むリストを返します。各エントリーは文字列です。
  • 新しい gdb.Architecture.integer_type() 関数は、サイズと符号付きかどうかを指定して整数型を返します。
  • 新しい gdb.TargetConnection オブジェクトタイプは、(info connection コマンドで表示される) 接続を表します。サブクラス gdb.RemoteTargetConnection は、remote 接続および extended-remote 接続を表します。
  • gdb.Inferior 型には、gdb.TargetConnection オブジェクトのインスタンスである connection プロパティーがあり、この下位型によって使用される接続になります。下層に接続がない場合、これは None にすることができます。
  • 新しい gdb.events.connection_removed イベントレジストリーは、接続が GDB から削除されると gdb.ConnectionEvent イベントを発行します。このイベントには、connection プロパティー、つまり削除される接続の gdb.TargetConnection オブジェクトがあります。
  • 新しい gdb.connections() 関数は、現在アクティブなすべての接続のリストを返します。
  • 新しい gdb.RemoteTargetConnection.send_packet(PACKET) メソッドは、既存の maint packet CLI コマンドと同等です。これを使用して、指定したパケットをリモートターゲットに送信できます。
  • 新しい gdb.host_charset() 関数は、現在のホスト文字セットの名前を文字列として返します。
  • 新しいgdb.set_parameter(NAME, VALUE) 関数は、GDB パラメーター NAMEVALUE に設定します。
  • 新しい gdb.with_parameter (NAMEVALUE) 関数は、GDB パラメーター NAME を一時的に VALUE に設定してから、コンテキストが終了するとリセットするコンテキストマネージャーを返します。
  • gdb.Value.format_string メソッドは、ブール値である styling 引数を取るようになりました。true の場合、返される文字列には、スタイリングを適用するためのエスケープシーケンスを含めることができます。スタイリングは、GDB でスタイリングがオンになっている場合にのみ存在します (help set styling を参照してください)。false の場合 (スタイル 引数が指定されていない場合のデフォルト)、返される文字列にはスタイリングは適用されません。
  • 新しい読み取り専用属性 gdb.InferiorThread.details は、追加のターゲット固有のスレッド状態情報を含む文字列か、そのような追加情報がない場合は None になります。
  • 新しい読み取り専用属性 gdb.Type.is_scalar は、スカラー型の場合は True、その他すべての型の場合は False です。
  • 新しい読み取り専用属性 gdb.Type.is_signed は、Type.is_scalarTrue の場合にのみ読み取られる必要があり、符号付き型の場合は True、その他すべての型の場合は False になります。非スカラー型に対してこの属性を読み取ろうとすると、ValueError が発生します。
  • Python で実装された GDB および MI コマンドを追加できるようになりました。

詳細は、アップストリームのリリースノートを参照してください。

What has changed in GDB?

Bugzilla:2172095[1]

GCC Toolset 13: binutils がバージョン 2.40 にリベース

GCC Toolset 13 は、binutils パッケージバージョン 2.40 を提供します。主な機能拡張は、次のとおりです。

リンカー:

  • リンカーの新しい -w (--no-warnings) コマンドラインオプションは、警告メッセージやエラーメッセージの生成を抑制します。これは、動作しないことがわかっているバイナリーを作成する必要がある場合に役立ちます。
  • ELF リンカーは、次の場合に警告メッセージを生成するようになりました。

    • スタックが実行可能な場合。
    • ReadWriteeXecute の 3 つのパーミッションセットをすべて備えたメモリー常駐セグメントを作成する場合。
    • eXecute パーミッションセットを使用してスレッドローカルデータセグメントを作成する場合。

      --no-warn-exec-stack または --no-warn-rwx-segments オプションを使用すると、これらの警告を無効にできます。

  • リンカーは、作成するバイナリーに任意の JSON 形式のメタデータを挿入できるようになりました。

その他のツール:

  • Portable Executable (PE) 形式ファイルのファイルヘッダーとセクションヘッダーのフィールドを表示する、objdump ツールの新しい --private オプション。
  • ELF ファイルから ELF セクションヘッダーを削除するための、objcopy ユーティリティーおよび strip ユーティリティー用の新しい --strip-section-headers コマンドラインオプション。
  • objdump ユーティリティーの新しい --show-all-symbols コマンドラインオプションは、アドレスに一致する最初のシンボルのみを表示するデフォルト機能とは対照的に、逆アセンブル時に指定されたアドレスに一致するすべてのシンボルを表示します。
  • nm ユーティリティーに新しい -W (--no-weak) オプションを追加し、弱いシンボルを無視します。
  • objdump ユーティリティーは、一部のアーキテクチャーの逆アセンブラー出力の構文強調表示をサポートするようになりました。--disassembler-color=MODE コマンドラインオプションを使用します。MODE は、次のいずれかになります。

    • off
    • color - このオプションは、すべてのターミナルエミュレーターでサポートされています。
    • extended-color - このオプションは、すべてのターミナルエミュレーターでサポートされていない 8 ビットカラーを使用します。

Bugzilla:2171924[1]

GCC Toolset 13: annobin がバージョン 12.20 にリベース

GCC Toolset 13 は、annobin パッケージのバージョン 12.20 を提供します。主な機能拡張は、次のとおりです。

  • annobin ノートを別のデバッグ情報ファイルに移動するためのサポートが追加されました。これにより、実行可能バイナリーのサイズが縮小されます。
  • 新しい小さなメモ形式のサポートが追加されたことで、個別の debuginfo ファイルのサイズが縮小され、これらのファイルの作成にかかった時間が短縮されました。

Bugzilla:2171921[1]

Valgrind がバージョン 3.21.0 にリベース

Valgrind がバージョン 3.21.0 に更新されました。主な機能拡張は、次のとおりです。

  • --vgdb-stop-at=event1,event2,…​ オプションの新しい abexit 値は、ゼロ以外の終了コードなどでプログラムが異常終了したときに gdbserver ユーティリティーに通知します。
  • 新しい --enable-debuginfod=[yes|no] オプションは、DEBUGINFOD_URLS 環境変数にリストされている debuginfod サーバーを使用して、Valgrind で実行されているプログラムに不足している DWARF debuginfo 情報を取得するように Valgrind に指示します。このオプションのデフォルト値は yes です。

    注記

    DEBUGINFOD_URLS 環境変数は、デフォルトでは設定されません。

  • vgdb ユーティリティーは、--multi オプションを指定して呼び出された場合に、拡張リモートプロトコルをサポートするようになりました。このモードでは GDB run コマンドがサポートされているため、1 つのターミナルから GDB と Valgrind を実行できます。
  • --realloc-zero-bytes-frees=[yes|no] オプションを使用すると、malloc() 呼び出しをインターセプトするツールのサイズ 0 の realloc() 関数の動作を変更できます。
  • memcheck ツールは、サイズ 0 の realloc() 関数の使用のチェックを実行するようになりました。この機能を無効にするには、新しい --show-realloc-size-zero=[yes|no] スイッチを使用します。
  • helgrind ツールの新しい --history-backtrace-size=value オプションを使用して、以前のアクセスのスタックトレースに記録するエントリーの数を設定できます。
  • --cache-sim=[yes|no] cachegrind オプションはデフォルトで no になり、その結果、デフォルトでは命令キャッシュ読み取りイベントのみが収集されるようになりました。
  • cg_annotatecg_diff、および cg_merge cachegrind ユーティリティーのソースコードが書き直されたため、ユーティリティーのコマンドラインオプションの処理がより柔軟になりました。たとえば、--show-percs--no-show-percs オプションのほか、既存の --show-percs=yes--show-percs=no オプションもサポートされるようになりました。
  • cg_annotate cachegrind ユーティリティーは、差分 (--diff--mod-filename、および --mod-funcname オプションを使用) とマージ (複数のデータファイルを渡すことによる) をサポートするようになりました。さらに、cg_annotate は、ファイルおよび関数レベルでより多くの情報を提供するようになりました。
  • DHAT ツールに対する新しいユーザー要求により、メモリーブロックのアクセスカウントヒストグラムの 1024 バイト制限をオーバーライドできるようになります。

次の新しいアーキテクチャー固有の命令セットがサポートされるようになりました。

  • 64 ット ARM:

    • v8.2 スカラーおよびベクトルの Floating-point Absolute Difference (FABD)、Floating-point Absolute Compare Greater than or Equal (FACGE)、Floating-point Absolute Compare Greater Than (FACGT)、および Floating-point Add (FADD) 命令。
    • v8.2 Floating-point (FP) 比較命令と条件付き比較命令。
    • v8.2 Floating-point (FP) 比較命令のゼロバリアント。
  • 64-ビット IBM Z:

    • miscellaneous-instruction-extensions facility 3 および vector-enhancements facility 2 のサポート。これにより、-march=arch13 または -march=z15 オプションを使用してコンパイルされたプログラムを Valgrind で実行できるようになります。
  • IBM Power:

    • ISA 3.1 のサポートが完了しました。
    • ISA 3.0 は、deliver a random number (darn) 命令をサポートするようになりました。
    • ISA 3.0 は、System Call Vectored (scv) 命令をサポートするようになりました。
    • ISA 3.0 は、コピー、貼り付け、および cpabort 命令をサポートするようになりました。

Bugzilla:2124345

systemtap がバージョン 4.9 にリベース

systemtap パッケージがバージョン 4.9 にアップグレードされました。主な変更点は、以下のとおりです。

  • 新しい Language-Server-Protocol (LSP) バックエンドにより、LSP 対応エディターでの systemtap スクリプトのインタラクティブなドラフト作成が容易になります。
  • Python/Jupyter インタラクティブノートブックフロントエンドへのアクセス。
  • DWARF 5 ビットフィールドの処理が改善されました。

Bugzilla:2186932

elfutils がバージョン 0.189 にリベース

elfutils パッケージがバージョン 0.189 に更新されました。主な改善点とバグ修正は次のとおりです。

libelf
elf_compress ツールは、ELFCOMPRESS_ZSTD ELF 圧縮タイプをサポートするようになりました。
libdwfl
dwfl_module_return_value_location 関数は、DW_TAG_unspecified_type タイプのタグを指す DWARF Information Entries (DIEs) に対して 0 (戻り値のタイプなし) を返すようになりました。
eu-elfcompress
-t および --type= オプションは、zstd 引数を介して Zstandard (zstd) 圧縮形式をサポートするようになりました。

Bugzilla:2182060

libpfm がバージョン 4.13 にリベース

libpfm パッケージがバージョン 4.13 に更新されました。この更新により、libpfm は、次のプロセッサーマイクロアーキテクチャーのパフォーマンス監視ハードウェアネイティブイベントにアクセスできるようになります。

  • AMD Zen 4
  • ARM Neoverse N1
  • ARM Neoverse N2
  • ARM Neoverse V1
  • ARM Neoverse V2
  • 第 4 世代 Intel® Xeon® スケーラブルプロセッサー
  • IBM z16

Bugzilla:2185653, Bugzilla:2111987, Bugzilla:2111966, Bugzilla:2111973, Bugzilla:2109907, Bugzilla:2111981, Bugzilla:2047725

papi は、新しいプロセッサーマイクロアーキテクチャーをサポートする

この機能拡張により、次のプロセッサーマイクロアーキテクチャー上の papi イベントプリセットを使用して、パフォーマンス監視ハードウェアにアクセスできるようになります。

  • ARM Neoverse N1
  • ARM Neoverse N2
  • ARM Neoverse V1
  • ARM Neoverse V2

Bugzilla:2111982[1]、Bugzilla:2111988

papi は、64 ビット ARM の高速パフォーマンスイベントカウント読み取り操作をサポートするようになる

以前の 64 ビット ARM プロセッサーでは、すべてのパフォーマンスイベントカウンターの読み取り操作で、リソースを大量に消費するシステムコールを使用する必要がありました。papi は、64 ビット ARM 用に更新され、パフォーマンスカウンターで自身を監視するプロセスが、パフォーマンスイベントカウンターのより高速なユーザー空間読み取りを使用できるようになりました。/proc/sys/kernel/perf_user_access パラメーターを 1 に設定すると、papi が 2 つのカウンターを読み取るための平均クロックサイクル数が 724 サイクルから 29 サイクルに減少します。

Bugzilla:2161146[1]

LLVM Toolset がバージョン 16.0.6 にリベース

LLVM Toolset がバージョン 16.0.6 に更新されました。

主な機能拡張は、次のとおりです。

  • 最適化の改善
  • 新しい CPU 拡張のサポート
  • 新しい C++ バージョンへのサポートの改善

後方互換性のない注目すべき変更は次のとおりです。

  • Clang のデフォルトの C++ 標準は、gnu++14 ではなく gnu++17 になりました。
  • -Wimplicit-function-declaration-Wimplicit-int、および -Wincomplicit-function-pointer-types オプションは、C コードのデフォルトでエラーになるようになりました。これは、configure スクリプトの動作に影響を与える可能性があります。

デフォルトでは、Clang 16 は、GCC Toolset 13 によって提供される libstdc++ ライブラリーバージョン 13 と binutils 2.40 を使用します。

詳細は、LLVM リリースノート および Clang リリースノート を参照してください。

Bugzilla:2178806

Rust Toolset がバージョン 1.71.1 にリベース

Rust Toolset がバージョン 1.71.1 に更新されました。主な変更点は、以下のとおりです。

  • パフォーマンスを向上させるための multiple producer, single consumer (mpsc) チャネルの新しい実装
  • crates.io レジストリーをより効率的に使用するための新しい Cargo sparse インデックスプロトコル
  • ワンタイム値の初期化のための新しい OnceCell および OnceLock タイプ
  • Foreign Function Interface (FFI) 境界にまたがる強制アンワインドの使用を可能にする新しい C-unwind ABI 文字列

詳細は、一連のアップストリームリリース発表を参照してください。

Bugzilla:2191740

Rust profiler_builtins ランタイムコンポーネントが利用可能になる

この機能拡張により、Rust profile_builtins ランタイムコンポーネントが利用できるようになりました。このランタイムコンポーネントは、次のコンパイラーオプションを有効にします。

-C instrument-coverage
カバレッジプロファイリングを有効にします。
-C profile-generate
プロファイルガイド付きの最適化を有効にします。

Bugzilla:2213875[1]

Go Toolset がバージョン 1.20.10 にリベース

Go Toolset がバージョン 1.20.10 に更新されました。

主な機能拡張は、次のとおりです。

  • 内部表現に依存せずにスライスと文字列を処理するための新しい関数が unsafe パッケージに追加されました。
  • 比較可能な型は、比較可能な制約を満たすことができるようになりました。
  • 新しい crypto/ecdh パッケージ。
  • go build および go test コマンドは、-i フラグを受け入れなくなりました。
  • go generate および go test コマンドは、-skip pattern オプションを受け入れるようになりました。
  • go buildgo install、およびその他のビルド関連コマンドは、-pgo フラグと -cover フラグをサポートするようになりました。
  • go コマンドは、C ツールチェーンのないシステムではデフォルトで cgo を無効にするようになりました。
  • go version -m コマンドは、より多くの Go バイナリータイプの読み取りをサポートするようになりました。
  • go コマンドは、C ツールチェーンのないシステムではデフォルトで cgo を無効にするようになりました。
  • コードカバレッジプロファイルを単体テストからのみ収集するのではなく、アプリケーションと統合テストから収集するためのサポートが追加されました。

Bugzilla:2185260[1]

grafana がバージョン 9.2.10 にリベース

grafana パッケージがバージョン 9.2.10 に更新されました。主な変更点は、以下のとおりです。

  • 時系列パネルがデフォルトの視覚化オプションになり、グラフパネルに置き換わりました。
  • Grafana が新しい Prometheus および Loki クエリービルダーを提供します。
  • Grafana に、複数の UI/UX およびパフォーマンスの改善が追加されました。
  • ライセンスが Apache 2.0 から GNU Affero General Public License (AGPL) に変更されました。
  • heatmap パネルは Grafana 全体で使用されるようになりました。
  • Geomaps は距離と面積の両方を測定できるようになりました。
  • Alertmanager は、Prometheus Alertmanager バージョン 0.24 に基づくようになりました。
  • Grafana Alerting ルールは、実行エラーまたはタイムアウト時にデフォルトで Error 状態を返すようになりました。
  • 式を公開ダッシュボードで使用できるようになりました。
  • 結合変換で内部結合がサポートされるようになりました。
  • パブリックダッシュボードで Grafana ダッシュボードを共有できるようになりました。
  • 新しい Prometheus ストリーミングパーサーが、オプトイン機能として利用できるようになりました。

詳細は、アップストリームのリリースノートを参照してください。

Bugzilla:2193250

grafana-pcp がバージョン 5.1.1 にリベースされました。

Performance Co-Pilot Grafana プラグインを提供する grafana-pcp パッケージがバージョン 5.1.1 に更新されました。主な変更点は、以下のとおりです。

  • クエリーエディター: レートの変換と時間使用率の変換を無効にするボタンを追加しました。
  • Redis データソース:

    • 非推奨の label_values(metric, label) 関数を削除しました。
    • 多くの系列を持つメトリクスのネットワークエラーを修正しました (Performance Co-Pilot バージョン 6 以降が必要)。
  • pmproxy API タイムアウトを 1 分に設定します。

Bugzilla:2193270

.NET 8.0 が利用可能になる

Red Hat Enterprise Linux 8.9 には .NET バージョン 8.0 が同梱されています。以下は、主な改善点です。

  • C#12 および F#8 言語バージョンのサポートが追加されました。
  • .NET ソフトウェア開発キットを直接使用してコンテナーイメージをビルドするためのサポートが追加されました。
  • ガベージコレクター (GC)、Just-In-Time (JIT) コンパイラー、およびベースライブラリーのパフォーマンスが多くの点で向上しました。

Jira:RHELPLAN-164398[1]

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.