Tóm tắt: Lý do chính để chuyển từ GCC sang Clang là sự không tương thích của giấy phép GPL v3 của GCC với các mục tiêu của dự án FreeBSD . Ngoài ra còn có các vấn đề chính trị để làm với đầu tư của công ty, cũng như các yêu cầu cơ sở người dùng. Cuối cùng, có những lợi thế kỹ thuật dự kiến sẽ làm với việc tuân thủ tiêu chuẩn và dễ gỡ lỗi. Những cải tiến hiệu suất trong thế giới thực trong việc biên dịch và thực thi là đặc thù mã và gây tranh cãi; trường hợp có thể được thực hiện cho cả hai trình biên dịch.
FreeBSD và GPL: FreeBSD có mối quan hệ không thoải mái với GPL. Những người ủng hộ giấy phép BSD tin rằng phần mềm thực sự miễn phí không có hạn chế sử dụng . Những người ủng hộ GPL tin rằng các hạn chế là cần thiết để bảo vệ quyền tự do phần mềm và cụ thể là khả năng tạo phần mềm không miễn phí từ phần mềm miễn phí là một hình thức quyền lực bất công hơn là tự do. Dự án FreeBSD, nếu có thể, cố gắng tránh sử dụng GPL :
Do sự phức tạp bổ sung có thể phát triển trong việc sử dụng phần mềm GPL thương mại, tuy nhiên, chúng tôi nỗ lực thay thế phần mềm đó bằng các bài nộp theo giấy phép FreeBSD thoải mái hơn bất cứ khi nào có thể.
FreeBSD và GPL v3: Các GPL v3 cấm một cách rõ ràng cái gọi là Tivoisation mã, một lỗ hổng trong v2 GPL mà kích hoạt hạn chế phần cứng để không cho phép sửa đổi phần mềm khác của pháp luật bởi người sử dụng. Đóng lỗ hổng này là một bước không thể chấp nhận được đối với nhiều người trong cộng đồng FreeBSD:
Các nhà cung cấp thiết bị đặc biệt mất nhiều nhất nếu phần lớn phần mềm hiện được cấp phép theo GPLv2 ngày nay chuyển sang giấy phép mới. Họ sẽ không còn tự do sử dụng phần mềm GPLv3 và hạn chế sửa đổi phần mềm được cài đặt trên phần cứng của họ ... Tóm lại, có một lượng lớn người tiêu dùng OpenSource đột nhiên rất quan tâm đến việc tìm hiểu các lựa chọn thay thế cho phần mềm được cấp phép GPL.
Do GCC chuyển sang GPL v3, FreeBSD đã buộc phải tiếp tục sử dụng GCC 4.2.1 (GPL v2), được phát hành trở lại vào năm 2007 , và hiện đã lỗi thời. Việc FreeBSD không chuyển sang sử dụng các phiên bản GCC hiện đại hơn, ngay cả với các vấn đề bảo trì bổ sung khi chạy trình biên dịch cũ và sửa lỗi backport, đưa ra một số ý tưởng về sức mạnh của yêu cầu để tránh GPL v3. Trình biên dịch C là thành phần chính của cơ sở FreeBSD và " một trong những mục tiêu (dự kiến) cho FreeBSD 10 là hệ thống cơ sở không có GPL ".
Đầu tư của công ty: Giống như nhiều dự án nguồn mở lớn, FreeBSD nhận được tài trợ và công việc phát triển từ các tập đoàn. Mặc dù phạm vi mà FreeBSD được Apple tài trợ hoặc phát triển không dễ dàng phát hiện ra, nhưng có sự chồng chéo đáng kể vì Hệ điều hành Darwin của Apple sử dụng mã hạt nhân có nguồn gốc BSD đáng kể . Ngoài ra, bản thân Clang ban đầu là một dự án nội bộ của Apple, trước khi được mở nguồn vào năm 2007 . Vì các nguồn lực của công ty là một yếu tố quyết định chính của dự án FreeBSD, đáp ứng nhu cầu của nhà tài trợ có lẽ là một động lực đáng kể trong thế giới thực .
Cơ sở người dùng: FreeBSD là một tùy chọn nguồn mở hấp dẫn đối với nhiều công ty, vì việc cấp phép rất đơn giản, không hạn chế và không có khả năng dẫn đến các vụ kiện. Với sự xuất hiện của GPL v3 và các điều khoản chống Tivoisation mới , có ý kiến cho rằng có một xu hướng tăng tốc, do nhà cung cấp hướng tới các giấy phép dễ dãi hơn . Do lợi thế nhận thức của FreeBSD đối với các thực thể thương mại nằm ở giấy phép cho phép, nên ngày càng có áp lực từ cơ sở người dùng doanh nghiệp phải rời khỏi GCC và GPL nói chung.
Các vấn đề với GCC: Ngoài giấy phép, sử dụng GCC còn có một số vấn đề về nhận thức . GCC là không đầy đủ các tiêu chuẩn tuân thủ, và có nhiều phần mở rộng không được tìm thấy trong tiêu chuẩn ISO C . Với hơn 3 triệu dòng mã, đây cũng là " một trong những dự án phần mềm nguồn mở và phức tạp nhất ". Sự phức tạp này làm cho sửa đổi mã mức phân phối là một nhiệm vụ đầy thách thức.
Ưu điểm kỹ thuật: Clang có một số lợi thế kỹ thuật so với GCC . Đáng chú ý nhất là các thông báo lỗi nhiều thông tin hơn và API được thiết kế rõ ràng cho các IDE, tái cấu trúc và các công cụ phân tích mã nguồn. Mặc dù trang web Clang trình bày các sơ đồ biểu thị việc sử dụng bộ nhớ và biên dịch hiệu quả hơn nhiều, kết quả trong thế giới thực khá thay đổi và phù hợp với hiệu suất của GCC. Nói chung, các nhị phân do Clang sản xuất chạy chậm hơn các nhị phân GCC tương đương:
Mặc dù sử dụng LLVM nhanh hơn trong việc xây dựng mã so với GCC ... trong hầu hết các trường hợp, các nhị phân được xây dựng GCC 4.5 đã hoạt động tốt hơn LLVM-GCC hoặc Clang ... trong các thử nghiệm còn lại, hiệu suất gần với GCC hoặc tốt phía sau. Trong một số thử nghiệm, hiệu suất của các nhị phân được tạo ra Clang chỉ đơn giản là khủng khiếp.
Kết luận: Rất khó có khả năng hiệu quả biên dịch sẽ là một động lực đáng kể để mạo hiểm đáng kể khi chuyển một dự án lớn như FreeBSD sang một công cụ biên dịch hoàn toàn mới, đặc biệt là khi thiếu hiệu suất nhị phân. Tuy nhiên, tình hình không thực sự có thể sử dụng được. Đưa ra lựa chọn giữa 1) chạy GCC lỗi thời, 2) Chuyển sang GCC hiện đại và buộc phải sử dụng giấy phép không phù hợp với mục tiêu của dự án hoặc 3) chuyển sang trình biên dịch được cấp phép BSD ổn định, quyết định có lẽ là không thể tránh khỏi. Hãy nhớ rằng điều này chỉ áp dụng cho hệ thống cơ sở và hỗ trợ từ phân phối; không có gì ngăn người dùng cài đặt và sử dụng GCC hiện đại trên hộp FreeBSD của họ.