Clang

121 Просмотры
Издатель
Clang, by Wikipedia https://ja.wikipedia.org/wiki?curid=1827400 / CC BY SA 3.0

#Appleのソフトウェア
#コンパイラ
#オープンソースソフトウェア
LLVM 」 Clang Clang ([ˈklæŋ]:クランのように発音) は、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラフロントエンドである。
プログラミング言語のほか、OpenMP、 OpenCL、RenderScript、CUDA、HIPのフレームワークを採用している。
フロントエンドとバックエンドにLLVMコンパイラのインフラを使用しており、LLVM 2.6以降はLLVMのリリースサイクルに組み込まれている。
プロジェクトの目標は、GNUコンパイラコレクション (GCC) を置き換えることのできるコンパイラを提供することである。
開発は完全にオープンソースの方法で進められており、AppleやGoogleといった大企業も参加・資金提供している。
ソースコードは、イリノイ大学/NCSAオープンソースライセンスで提供されている。
バージョン9.0.0からはライセンスがLLVM例外付きApache License 2.0に変更された。
Clangは、GNU Compiler Collection(GCC)の代替品として設計されている(。
Apple、Microsoft、Google、 ARM、ソニー、インテル、Advanced Micro Devices(AMD)などが貢献者となっている。
ソースコードは、イリノイ大学/NCSAオープンソースライセンスで提供されている。
バージョン9.0.0からはライセンスがLLVM例外付きApache License 2.0に変更された。
macOSおよびiOS(ともにXcodeの付属として)、ならびにFreeBSDにおいて標準のコンパイラとして採用されている。
Clang プロジェクトではコンパイラのフロントエンドに加えてClang静的コード解析ツールも開発している。
2005年初頭、AppleはLLVMシステムを自社で開発している様々なシステム内で利用するための作業を開始した。
AppleはObjective-Cを多用しているため、GCCの性能向上に興味を抱いていたがほとんど進展が見られず、Objective-Cの性能を上げるためにGCCをApple版に分岐させるか、新しいコンパイラを採用するかの選択をせまられていた。
そこで、AppleはC99、Objective-CおよびC++をサポートするコンパイラを1から作成した。
このClangプロジェクトは2007年7月にオープンソース化された。
LLVMは当初、GCCのフロントエンドを使用することを想定していたが、GCCはLLVMの開発者やアップル社にいくつかの問題を引き起こすことが判明した。
GCCのソースコードは大規模で、開発者が作業するにはやや面倒なシステムである。
ある長年のGCC開発者は、「Trying to make the hippo dance is not really a lot of fun.(カバにダンスを踊らせるのは、あまり楽しいことではない)」と述べている。
ClangはCをターゲットとした新しいコンパイラで、LLVM上で動作することを意図して設計されている。
ClangとLLVMの組み合わせによって、ツールチェインの大半の機能を提供し、GCCスタック全体の置き換えが可能になる。
Clangの主要な目標の一つは、統合開発環境 (IDE) のGUIと密接に連携したよりよい増分コンパイルのサポートである。
GCCは古典的なコンパイル-リンク-デバッグのサイクルで用いるよう設計されており、増分コンパイルと実行中のコンパイルをサポートしているものの、他のツールと統合して使うことは簡単ではない。
たとえばGCCのコンパイルにはコンパイル全体の中で重要な "fold" という段階があるが、これはコードツリーを元のソースコードと大きく異なる形に変換してしまう。
fold中、あるいはその後でエラーが発見されると、元のソースの一箇所に対応付けるのは難しい。
さらにGCCスタックをIDEで使用する場合、コードの色付表示や自動補完などの機能のために、コードをインデックス化する別のツールが必要になる。
Clangは、コンパイル中にGCCよりも多くの情報を取得し、得られた情報を元のコードと同じ形態で保存する。
またClangによるエラーの報告は、より詳細で具体的でありIDEなどが表示しやすいようプログラムで利用できる書式になっている。
コンパイラは動作...
Категория
Разработка на iOS Язык программирования Objective-C
Комментариев нет.