Короткий зміст: Основна причина переходу з GCC на Clang - це несумісність ліцензії GPL v3 GPL з цілями проекту FreeBSD . Існують також політичні питання, пов'язані з корпоративними інвестиціями, а також вимогами користувачів. Нарешті, очікуються технічні переваги щодо дотримання стандартів та простоти налагодження. Покращення продуктивності в реальному світі щодо компіляції та виконання є специфічними для коду та дискусійними; справи можуть бути складені для обох укладачів.
FreeBSD та GPL: FreeBSD має непрості стосунки з GPL. Прихильники ліцензій BSD вважають, що по-справжньому вільне програмне забезпечення не обмежує використання . Прихильники GPL вважають, що обмеження необхідні для захисту свободи програмного забезпечення, і зокрема, що здатність створювати невільне програмне забезпечення з вільного програмного забезпечення є несправедливою формою влади, а не свободою. Проект FreeBSD, де це можливо, намагається уникати використання GPL :
Через додаткові складності, які можуть розвиватися в комерційному використанні програмного забезпечення GPL, ми все ж намагаємось замінювати таке програмне забезпечення на подання відповідно до більш розслабленої ліцензії FreeBSD, коли це можливо.
FreeBSD і GPL v3: GPL v3 явно забороняє так званий тівоізація коду, лазівку в v2 GPL , що дозволило апаратні обмеження , щоб заборонити в іншому випадку правові зміни програмного забезпечення користувачів. Закриття цієї лазівки було неприйнятним кроком для багатьох у спільноті FreeBSD:
Зокрема, найбільше втрачають постачальники приладів, якщо велика частина програмного забезпечення, що зараз ліцензується за GPLv2, переходить на нову ліцензію. Вони більше не матимуть свободи користуватися програмним забезпеченням GPLv3 та обмежувати модифікацію програмного забезпечення, встановленого на їх апаратному забезпеченні ... Коротше кажучи, існує велика база споживачів OpenSource, які раптом дуже зацікавлені в розумінні альтернатив ліцензійному програмному забезпеченню GPL.
Через перехід GCC до GPL v3, FreeBSD був змушений продовжувати використовувати GCC 4.2.1 (GPL v2), який був випущений ще в 2007 році і тепер значно застарів. Той факт, що FreeBSD не перейшов на використання більш сучасних версій GCC, навіть при додаткових головних болях у підтримці запуску старого компілятора та виправлень з опорними повідомленнями, дає деяке уявлення про силу вимоги уникати GPL v3. Компілятор C є основним компонентом бази FreeBSD, і " одна з (орієнтовних) цілей для FreeBSD 10 є базовою системою без GPL ".
Корпоративні інвестиції: Як і багато великих проектів з відкритим кодом, FreeBSD отримує фінансування та розробку від корпорацій. Хоча ступінь, в якому FreeBSD фінансується чи розробляється Apple, не легко виявити, є суттєве перекриття, оскільки Darwin OS від Apple використовує значний код ядра BSD . Крім того, сам Клэнг був спочатку власним проектом Apple, перед тим як його відкрити в 2007 році . Оскільки корпоративні ресурси є ключовим фактором проекту FreeBSD, задоволення потреб спонсора, ймовірно, є важливим фактором у реальному світі .
База даних: FreeBSD - це привабливий варіант з відкритим кодом для багатьох компаній, оскільки ліцензування є простим, необмеженим та навряд чи призведе до судових позовів. З появою GPL v3 та нових положень про боротьбу з обмеженнями громадськості було припущено, що існує прискорена, орієнтована на виробників тенденція до отримання більш дозвільних ліцензій . Оскільки сприйняте перевага FreeBSD для комерційних структур полягає в його дозвільній ліцензії, зростає тиск з боку корпоративних користувачів, щоб відійти від GCC та GPL взагалі.
Проблеми з GCC: Окрім ліцензії, використання GCC має деякі проблеми . GCC повному обсязі відповідає стандартам, і має безліч розширень , яких немає в стандарті ISO C . Маючи понад 3 мільйони рядків коду, це також " один із найскладніших та безкоштовних програм із відкритим кодом ". Ця складність робить зміну коду на рівні дистрофії складною задачею.
Технічні переваги: Clang має деякі технічні переваги порівняно з GCC . Найбільш помітними є набагато більш інформативні повідомлення про помилки та чітко розроблений API для IDE, інструментів рефакторингу та аналізу вихідного коду. Хоча на веб-сайті Clang представлені сюжети, що вказують на набагато ефективнішу компіляцію та використання пам’яті, результати реального світу досить мінливі і в цілому відповідають результатам GCC. Загалом, створені Clang бінарні файли працюють повільніше, ніж еквівалентні бінарні файли GCC:
Хоча використання LLVM швидше у створенні коду побудови, ніж GCC ... у більшості випадків вбудовані GCC 4.5 бінарні файли виходили краще, ніж LLVM-GCC чи Clang ... в решті тестів продуктивність була або близькою до GCC, або добре позаду. У деяких тестах продуктивність файлів, створених Clang, була просто жахливою.
Висновок: Вкрай малоймовірно, що ефективність компіляції буде важливим мотиватором ризикувати перенесення великого проекту, такого як FreeBSD, до цілком нового інструментального ланцюжка компілятора, особливо коли бракує двійкової продуктивності. Однак ситуація насправді не була важкою. З огляду на вибір між 1) запуском застарілої GCC, 2) переходом до сучасного GCC та змушеним використовувати ліцензію, несумісну з цілями проекту, або 3) перехід до стабільного компілятора, що має ліцензію BSD, рішення було, мабуть, неминучим. Майте на увазі, що це стосується лише базової системи та підтримки дистрибуції; ніщо не заважає користувачеві самостійно встановлювати та використовувати сучасний GCC на своєму вікні FreeBSD.