gcc 12の変更点 ============== .. post:: May 12, 2022 :tags: gcc gcc 12がリリースされました。 な、なんとですね。 今回は `Changes, New Features, and Fixes `_ がまともに書かれています! `Fernando Oleo Blancoさんという方が見かねてコントリビュートしてくださったみたいです `_\ 。 [*]_ というわけで変更点を調べる必要はありません。 やったー! 特筆すべき変更点 ---------------- gnatfindとgnatxrefが無くなりました ++++++++++++++++++++++++++++++++++ これは痛い。 gnatfindとgnatxrefはgccでAdaのソースコードをコンパイルすると.oと一緒にできる.aliファイルを用いるクロスリファレンスツールでシンボルの宣言箇所や使用箇所を検索することができました。 代わりに最近流行りの\ `language server `_\ を使え、とのことです。 `GNAT Community Edition `_ に含まれるGNAT Studio(gps)というIDEや\ `Visual Studio Codeの拡張 `_\ にコンパイル済みのものが同梱されています。 language serverは設定が結構手間ですしエディタから使うのは楽ですがクエリをJSONで渡す必要もありターミナルから使うことが難しいのですよね……。 しかも.gprファイルを用意しないといけなくなりましたし……独自の初期化を必要としますのでLSP対応済みのBBEditやQt Creatorから使うのも難がありますし……。 Ada 2022対応 ++++++++++++ Ada 2022対応は順調に進んでいるようです。 ``Static`` アスペクトが実装されましたのでコンパイル時プログラミングはじまりました。 :doc:`gcc 11 `\ では独自の ``Ada.Strings.Text_Output.Sink'Class`` を使う形で実装されていた ``'Put_Image`` 属性が規格通り ``Ada.Strings.Text_Buffers.Root_Buffer_Type'Class`` を使うようになっていました。 独自拡張 ++++++++ 今回はGNAT独自の言語拡張も沢山追加されています。 無制約配列(unconstrained array)の下限だけを固定したり(D言語の動的配列っぽくなります)、``case`` 文が関数型言語のパターンマッチよろしく複合型の分解や部分的な束縛ができるようになったり、\ :doc:`Ada 2022では見送られた `\ Generalize prefix viewsがあっさり実装されてしまってたり、委員会が苦心して詰めてこられたAccessibility_Checkのルールを変えてみたり……。 やりたい放題です。 これら拡張の詳細は\ `AdaCore社のブログ `_\ で説明されています。 以前のgccの変更点 ----------------- - :doc:`/2020/05/18_1` - :doc:`/2021/06/02_2` .. [*] この情報は\ `Rep Eric Gallagerさんに教えていただきました `_\ 。 ありがとうございます。