概要

GCCの開発チームは、GCC 16のリリース候補(RC)を4月中旬に公開することを目標として最終調整を進めている。しかし開発チームが認めるように、Stage 4に入ってから約2ヶ月が経過した現在も、回帰テストの修正は「遅い(slow)」ペースにとどまっている。現時点ではP1(最高優先度)クラスの回帰が14件、未分類のP3回帰が14件、P4クラスが28件残っており、P1をゼロに減らすことが正式リリースへの条件となっている。スケジュールへの影響は否定できないが、開発チームは引き続き4月中旬のRC公開を目指している。

C++20のデフォルト化とC++26の新機能対応

GCC 16における最大の変化のひとつが、C++20を新たなデフォルト標準とする点だ。これまでのデフォルトであったC++17から一歩進み、コルーチン、コンセプト、モジュール(実験的)といったC++20機能がデフォルトで利用可能となる。

さらにGCC 16はC++26の主要機能も先行実装している。最も注目されるのが静的リフレクション(P2996)で、^^演算子(通称「cat-earsオペレーター」)を用いてコンパイル時にプログラムの構造を検査・操作する強力なメタプログラミング機能が利用できる。Herb Suttterが「他の10の主要機能を合わせた以上の変革をもたらす」と評した機能であり、C++26において事実上の目玉機能と位置づけられる。あわせてコントラクト機能(P2900)、関数パラメータリフレクション(P3096)、注釈機能(P3394)なども取り込まれている。

ハードウェアサポートと新言語フロントエンド

ハードウェアサポート面では、AMD次世代アーキテクチャ「Zen 6」(znver6)の初期サポートが追加された。命令セットの新機能に対応するための基本サポートが提供されているが、詳細な命令チューニングやコストモデルは今後の更新で追加される予定だ。Intel側ではNova LakeおよびWildcat Lake向けのサポートが追加され、Nova LakeではAVX10.1、AVX10.2、APX_Fといった最新のISA拡張が利用可能となる。一方、AMX-TRANSPOSE、KL、WIDEKLなど一部の拡張機能は廃止された。

また、今回のリリースではフロントエンドとして**実験的なAlgol 68コンパイラ(ga68)**が新たに追加される。1960年代に設計されたAlgol 68は現代では実用上の使用は限られるが、GCCの多言語対応という観点で話題を集めている。

標準ライブラリと周辺機能の強化

libstdc++も大幅に強化されており、128ビット整数のサポート改善、std::mdspanstd::copyable_functionなど最新標準ライブラリ機能の追加、C++26向けの実験的サポート拡張などが含まれる。ただしstd::variantのABIが更新されているため、既存バイナリとの互換性には注意が必要だ。組み込み向けにはPicolibcとの統合サポートも追加される。

GCC 16の正式リリースがいつになるかは回帰修正の進捗次第だが、C++エコシステムにとって静的リフレクションのコンパイラ実装は大きなマイルストーンであり、リリースが広く注目されている。