答え1
要約: 切り替えたい主な理由湾岸協力協議会到着その音GCCと互換性がありません一般公衆ライセンス v3ライセンスとFreeBSDプロジェクトの目標。企業投資とユーザーベースのニーズに関連する政治的な問題もあります。最後に、標準のコンプライアンスとデバッグの容易さの点で技術的な利点が期待されます。コンパイルと実行の実際のパフォーマンスの向上はコードごとに異なり、両方のコンパイラについて議論の余地があります。
FreeBSDとGPL: FreeBSDGPLと良い関係ではありません。 BSDライセンスの支持者は真のフリーソフトウェアを信じています。使用制限なし。 GPLの支持者は信じる制限が必要ですソフトウェアの自由を保護するために、特にフリーソフトウェアから非自由ソフトウェアを作成する能力は、不当な権力形態自由ではなく。 FreeBSDプロジェクトは可能な限り頑張っています。GPLの使用を避ける:
ただし、GPLソフトウェアを商業的に使用すると追加の複雑さが発生する可能性があるため、可能であれば、これらのソフトウェアをより寛大なFreeBSDライセンスに従って提出するソフトウェアに置き換えます。
FreeBSDとGPL v3:これ一般公衆ライセンス v3いわゆる話すことを明示的に禁止します。チボイゼーションコードの脆弱性GPLバージョンこれにより、ユーザーが合法的なソフトウェア修正を許可しないハードウェア制限が発生します。この抜け穴を防ぐことは受け入れられないステップFreeBSDコミュニティの多くの人に:
特に、デバイスベンダーは、現在GPLv2に基づいてライセンスされている大量のソフトウェアが新しいライセンスに移行された場合、最大の損失を被ります。彼らはもはやGPLv3ソフトウェアを自由に使用することができなくなり、ハードウェアにインストールされているソフトウェアを修正することも制限されています。 。
GCCがGPL v3に移行した後、FreeBSDは引き続きGCC 4.2.1(GPL v2)を使用する必要がありました。2007年に再発売、今は明らかに昔ながらです。 FreeBSDが以前のコンパイラを実行し、修正をバックポートするためのメンテナンスの問題が追加されたにもかかわらず、最新バージョンのGCCに移行しなかったという事実は、GPL v3を回避するための要件の強さに関するアイデアを提供します。 CコンパイラはFreeBSDベースの主要コンポーネントであり、FreeBSD 10の(暫定)目標の1つは、GPLなしの基本システムを達成することです。」。
企業投資:多くの主要なオープンソースプロジェクトと同様に、FreeBSDは次の影響を受けます。資金そして開発作業企業で。 FreeBSDがどの程度までAppleによって資金を受け取られたり開発されたのかはわかりませんが、Appleがかなり重複している部分があります。ダーウィンオペレーティングシステム複数のBSD派生を使用します。カーネルコード。さらに、Clang自体はAppleの内部プロジェクトとして始まり、2007年オープンソース。企業資源は FreeBSD プロジェクトの主要な原動力であるため、スポンサーの要件を満たすことが可能になる可能性があります。重要な実際のドライバ。
ユーザーグループ:FreeBSDは、ライセンスがシンプルで制限がなく、訴訟につながる可能性が低いため、多くの企業にとって魅力的なオープンソースオプションです。 GPL v3の登場と新契約バンティボワ条項、誰かが以下を提案しました。サプライヤー中心の傾向は、より許容可能なライセンスに向けて加速されています。。商用オブジェクトに対するFreeBSDの利点は許容ライセンスであるため、企業のユーザーベースでは、一般的にGCCとGPLを放棄する圧力が高まっています。
GCCの質問:ライセンスに加えて、GCCを使用すると、いくつかの認識された問題。 GCCは標準に完全に準拠しておらず、ISO規格Cには見られない多くの拡張。 300万行を超えるコードを含むこの製品は、最も複雑で無料/オープンソースのソフトウェアプロジェクトの1つ」。この複雑さにより、リリースレベルのコードの修正が困難な作業になりました。
技術的な利点:Clangにはいくつかあります。GCCに比べて技術的利点。最も注目すべきことは追加情報を提供するエラーメッセージそして明示的に設計されたAPIIDE用のリファクタリングおよびソースコード分析ツールです。 Clangのウェブサイトにもかかわらず現在のプロットより効率的なコンパイルとメモリ使用量を示し、実際の結果は次のとおりです。劇的な変化、パフォーマンスはGCCとほぼ一致しています。通常、Clangで生成されたバイナリゆっくり走る同等のGCCバイナリより:
LLVMでコードを書くのはGCCよりも高速ですが...ほとんどの場合、GCC 4.5でビルドされたバイナリはLLVM-GCCまたはClangよりもパフォーマンスが優れています...テストの残りの部分では、GCCに近いか非常に遅くなります。一部のテストでは、Clangで生成されたバイナリのパフォーマンスが非常に悪かった。
結論として:特にバイナリパフォーマンスが不足している場合、コンパイル効率はFreeBSDなどの大規模プロジェクトをまったく新しいコンパイラツールチェーンに移動する大きなリスクを取るために重要な動機にはなりません。しかし、このような状況は実際には持続できません。 1)古いGCCを実行する場合、2)最新のGCCに移行し、プロジェクトの目標と互換性のないライセンスを使用する必要がある場合、または3)信頼性の高いBSDライセンスコンパイラに移行するオプションを考慮すると、この決定はおそらく避けられなかったでしょう。これは、基本システムとディストリビューションのサポートにのみ適用されることに注意してください。ユーザーがFreeBSDシステムに最新のGCCをインストールして使用するのを妨げるものはありません。
答え2
考慮すべき1つのことは、FreeBSDが現在GCC 4.2.1を次のように使用していることです。ire_and_cursesの回答に言及したがって、パフォーマンスの比較は、プロジェクトと実際には関係のない4.5または4.6ではありません。したがって、あなたが尋ねるべき質問は次のとおりです。
以前のGCCと比較して、プロジェクトで使用されている新しいClangのパフォーマンス向上は何ですか?
GCC 4.2.1でコンパイルされた同じバイナリは、新しいClangとどのように比較されますか?
GCCがGPL v3に移行するにつれて、FreeBSDは2007年にリリースされ、現在はかなり古いGCC 4.2.1(GPL v2)を引き続き使用する必要がありました。
Clangが現在GCCより遅れていますが、プロジェクトに実装されているGCCよりもまだ光年前である場合、彼らの開発決定は根拠が十分で本当のインスピレーションを受けています。
答え3
GCCはGPLv3ですが、GCCによって生成されたバイナリにはライセンス制限はありません。明らかに、GCCを使用して必要なライセンスに基づいてソフトウェアを構築できます。 GCCに付属しており、バイナリに含まれているCライブラリもライセンスがありません。http://www.gnu.org/licenses/gcc-Exception-faq.html
GNU GPLv3セクション2:
お客様は、ランタイムライブラリをスタンドアロンモジュールと組み合わせて、作成されたオブジェクトコード操作を伝播する権利を有します。これらの伝播がGPLv3の条項に違反しても、すべてのオブジェクトコードが適格なコンパイルプロセスによって生成された場合にのみ可能です。これにより、この組み合わせを渡すことができます。お客様が選択した条件に応じて、スタンドアロンモジュールのライセンスと一致します。
「適格」とは、GCCおよびGPL非互換性を含まないソフトウェアをコンパイルすることを意味します。これは制限ではありません。 BSDライセンスソフトウェアは、GNU GCCに関連するビルドプロセスに使用できます。
ご覧のとおり、上記のように本物これは、GCCをFreeBSDと組み合わせて使用する場合、非互換性がないため、GCCを放棄するライセンス関連の理由です。
これらの変化の実際の理由は政治的で機会主義的です。
- BSDは哲学的にGNU Public Licenseと競合する独自のライセンスを持っています(上記の* ire_and_curses *で説明したように)。
- CLANGはFreeBSDの後援者によって開始された新しい非GPLコンパイラであり、技術的にはGPLライセンスGCCと同等のようです。
これらの事実は、FreeBSDがGCCを離れて取り除く機会を提供します。 GCCを使用して無料またはBSDライセンスソフトウェアを構築することができるので、実際に法的に強制されるわけではありませんが、「すべてのBSDライセンスソフトウェア」のアイデア。
答え4
私は専門家ではありませんが、Clang / LLVMはGCCよりも少ないリソースを使用し、より速いことを知っています。
http://clang.llvm.org/features.html#performance
多くを何度も構築する必要がある環境を運営する場合、これらのパフォーマンスによりエネルギーコストと時間を大幅に節約できます。それが本当なら。