GCC 4.8はC ++への移行を完了しました

GCC 4.8.0のリリースにより、GNU Compiler Collectionの開発者は、GCC実装でのC ++への移行を完了しました。 コードベースのC ++への翻訳作業は2008年から継続しており、現在は終了しています。 C ++への移行は、ソースからGCCを構築するために、C ++ 2003コンパイラが必要になったことを意味します。

リチャード・ストールマンは、パスカルの耐え難い方言で1985年にGCCの最初のバージョンを書きました。 1987年、コンパイラはCで書き直され、この形式では2013年まで存在していました。

GCC 4.8の新しいバージョンでは、パフォーマンスが向上し、最適化のほとんどない最適化–Ogが実装され、超高速コンパイルが可能になりました。 Google SanitizerのAddress SanitizerエラーディテクタとThread Sanitizerデータレースディテクタが追加されました。これらは、マルチスレッドアプリケーションの異なるスレッドからの同じデータの共有を検出します。 イノベーションの詳細については、 リリースノートを参照してください。

Address SanitizerディテクターはLinux(IA-32、x86-64、x32、PowerPC、PowerPC64)およびDarwin(x86-64)プラットフォームで使用でき、プログラムの速度は約半分に低下します。

スレッドサニタイザーは約10倍遅くなります。

さらに、C ++ 11のサポートはGCC 4.8で改善され、ARMv8命令セットを備えたプロセッサにはAArch64(ARM64)アーキテクチャのサポートがありますが、この命令セットを備えたデバイスはまだ市場にありません。

GCCはGNUシステムの公式コンパイラーであり、LinuxおよびBSDのさまざまなバージョン、Mac OS X、ReactOS、BeOSなど、他の多くのオペレーティングシステムのメインコンパイラーでもあります。

C ++に移行する理由と、特に加えられた変更の詳細については、 GCC Wiki:C ++ Conversionを参照してください。 一言で言えば、C ++言語の人気の理由と「プラス」のよりクリーンなコード。

ソースコードGCC 4.8.0
公式SVNサーバー
GCCマニュアル

幸いなことに、C ++への切り替えは、GCCコンパイラのパフォーマンスにほとんど影響を与えませんでした。

ランステイラーの2008年のプレゼンテーションからのいくつかの例






Source: https://habr.com/ru/post/J174017/


All Articles