1年間の集中的な開発を経て、 「GCC 15.1」の新バージョンのリリースが発表されました。 これは、この人気のオープン ソース コンパイラ スイートの新しい 15.x ブランチ内で最初の安定バージョンとして位置付けられています。
このリリースでは、新しい GCC 15 シリーズが正式にリリースされるだけでなく、16 ブランチが並行してフォークされ、次のメジャー リリースである GCC 16.0 の基礎が築かれるため、GCC 16.1 開発の準備の始まりも示されます。
GCC15.1主な新機能
この新バージョンで最も注目すべき変更点の一つは、GCC 15.1 C23規格を採用 Cコードをコンパイルする際のデフォルトとして、 -std=gnu23 オプションを使用します。 このアップデートでは、デフォルトで使用されていた以前の標準である C17 (-std=gnu17) が置き換えられ、新しい標準のいくつかの新機能が導入されています。その中には 定数 nullptr、型 _BitInt(n)、キーワード bool、true、falseこれにより、レガシー コード内の既存の識別子との競合が発生する可能性があります。
GCC 15.1に追加されたもう一つの新機能は、 バイナリデータを埋め込むための#embedディレクティブ、 また、順序なしや再現可能などの属性により、実行順序や一貫した結果の決定をより細かく制御できます。さらに、if 条件内で宣言された変数、case ステートメントの値の範囲、虚数接尾辞 i と j、複素数に適用される演算子 ++ と — のサポートなど、将来の C2Y 標準の要素も実装されています。
C++ の改良点と将来の C++26
C++言語の場合、新しいバージョンの GCC 15.1はC++26標準で議論されている機能を実装しています。 「friend」演算子、新しい演算子のバリアントによる constexpr の使用、末尾再帰を保証する musttail などの構造化リンクと属性の構文の改善などの新しい機能が導入されています。
C++23のサポートも拡張されました エクスポートの使用に関する新しいルール、一時オブジェクトの処理の改善、libstdc++ の std および std.compat モジュールの実験的な実装が含まれます。さらに、ユニオン初期化のセキュリティが強化され、より効率的なテンプレート ハッシュ システムによりコードのコンパイルが改善されました。
静的解析における新しい警告と改善
システム 静的解析のビジュアルデザインがリニューアルされました シンボルを通して問題を浮き彫りにする C23への移行のヒントと新しいlibgdiagnosticsライブラリ これにより、他のプロジェクトで診断ロジックを再利用できるようになります。 SARIF 形式でのレポート生成のサポートも導入され、最新のコード分析ツールとの統合が容易になりました。
で 既存の警告が新しい警告に追加されます、 として -Wanalyzer の未定義の動作 ptrdiff 無関係なポインタ間の減算を検出するには、W末尾の空白と-W先頭の空白 不要な空白を示すために、そしてヘッダーガード ヘッダー包含保護におけるエラーを検出します。
最適化とサポート
注目すべき最適化としては、 LTO用の増分コンパイルモードが含まれています (リンク時最適化)。変更が最小限の場合の再コンパイルを高速化するように設計されています。また ループのベクトル化が改善されましたコンパイル時に配列のサイズが不明な場合でも、非常に大きなファイルのコンパイル速度が向上します。
サポート面では、AArch64にARMv8拡張機能が追加されました。 Apple M3などの新しいCPUのサポート、 Cortex-X925 と NVIDIA Grace を搭載し、MinGW プラットフォームを拡張します。 AMD Radeon GPUのコード生成が強化されました。 新しい GFX9、GFX10.3、GFX11 シリーズの実験的なサポート。 x86 アーキテクチャでは、AVX10.2 および新しい AMX 命令のサポートが有効になり、Xeon Phi Knights のサポートは廃止されます。
さらに、 GCC 15.1ではCOBOL用のコンパイラが導入されました (gcobol)、x86-64 および AArch64 アーキテクチャのサポート、および D 言語の更新された実装 (バージョン 2.111.0)。 Fortran での符号なし整数のサポートが追加され、相互運用性の向上や GPU でのメモリ使用の統合など、OpenMP 5.0 から 6.0 の採用が進みました。