सारांश: जीसीसी से क्लैंग में स्विच करने का प्राथमिक कारण फ्रीबीएसडी परियोजना के लक्ष्यों के साथ जीसीसी के जीपीएल वी 3 लाइसेंस की असंगति है । कॉर्पोरेट निवेश, साथ ही उपयोगकर्ता आधार आवश्यकताओं के साथ करने के लिए राजनीतिक मुद्दे भी हैं। अंत में, मानकों के अनुपालन और डिबगिंग में आसानी के साथ तकनीकी लाभ होने की उम्मीद है। संकलन और निष्पादन में वास्तविक विश्व प्रदर्शन में सुधार कोड-विशिष्ट और बहस योग्य हैं; दोनों संकलक के लिए मामले बनाए जा सकते हैं।
FreeBSD और GPL: FreeBSD का GPL के साथ एक असहज रिश्ता है। बीएसडी-लाइसेंस अधिवक्ताओं का मानना है कि वास्तव में मुफ्त सॉफ्टवेयर का कोई उपयोग प्रतिबंध नहीं है । जीपीएल के अधिवक्ताओं का मानना है कि सॉफ्टवेयर स्वतंत्रता की रक्षा के लिए प्रतिबंध आवश्यक हैं , और विशेष रूप से यह कि फ्री सॉफ्टवेयर से गैर-मुक्त सॉफ्टवेयर बनाने की क्षमता स्वतंत्रता के बजाय शक्ति का एक अन्यायपूर्ण रूप है । फ्रीबीएसडी परियोजना, जहां संभव हो, जीपीएल के उपयोग से बचने की कोशिश करती है :
अतिरिक्त जटिलताओं के कारण जो जीपीएल सॉफ्टवेयर के व्यावसायिक उपयोग में विकसित हो सकते हैं, हम, हालांकि, जब भी संभव हो, ऐसे सॉफ्टवेयर को अधिक आराम से फ्रीबीएसडी लाइसेंस के तहत प्रस्तुत करने का प्रयास करते हैं।
FreeBSD और जीपीएल v3: जीपीएल v3 स्पष्ट रूप से तथाकथित मनाही Tivoisation कोड की, में उपाय बता GPL v2 जो हार्डवेयर प्रतिबंध सक्षम उपयोगकर्ता द्वारा अन्यथा कानूनी सॉफ्टवेयर संशोधनों अस्वीकृत करने के लिए। इस खामियों को बंद करना फ्रीबीएसडी समुदाय में कई के लिए अस्वीकार्य कदम था :
यदि विशेष रूप से GPLv2 के तहत लाइसेंस प्राप्त सॉफ़्टवेयर का बड़ा निकाय आज नए लाइसेंस पर स्थानांतरित हो जाता है, तो विशेष रूप से उपकरण विक्रेताओं के पास खोने के लिए सबसे अधिक है। अब उन्हें GPLv3 सॉफ़्टवेयर का उपयोग करने और अपने हार्डवेयर पर स्थापित सॉफ़्टवेयर के संशोधन को प्रतिबंधित करने की स्वतंत्रता नहीं होगी ... संक्षेप में, OpenSource उपभोक्ताओं का एक बड़ा आधार है जो अचानक GPL लाइसेंस प्राप्त सॉफ़्टवेयर के विकल्पों को समझने में बहुत रुचि रखते हैं।
जीपीएल v3 के लिए जीसीसी के कदम के कारण, FreeBSD को GCC 4.2.1 (GPL v2) का उपयोग करने के लिए मजबूर रहना पड़ा, जिसे 2007 में वापस जारी किया गया था , और अब यह काफी पुराना है। यह तथ्य कि फ्रीबीएसडी ने जीसीसी के अधिक आधुनिक संस्करणों का उपयोग करने के लिए कदम नहीं उठाया, यहां तक कि एक पुराने संकलक और बैकपोर्टिंग फिक्स के अतिरिक्त रखरखाव सिरदर्द के साथ, जीपीएल v3 से बचने के लिए आवश्यकता की ताकत का कुछ विचार देता है। सी कंपाइलर फ्रीबीएसडी बेस का एक प्रमुख घटक है, और " फ्रीबीएसडी 10 के लिए (अस्थायी) लक्ष्यों में से एक जीपीएल-फ्री बेस सिस्टम है "।
कॉर्पोरेट निवेश: कई प्रमुख ओपन सोर्स प्रोजेक्ट्स की तरह, FreeBSD को निगमों से फंडिंग और विकास कार्य प्राप्त होते हैं। यद्यपि ऐप्पल द्वारा फ्रीबीएसडी को वित्त पोषित या दिया गया विकास आसानी से खोजा नहीं जा सकता है, लेकिन इसमें बहुत अधिक ओवरलैप है क्योंकि ऐप्पल का डार्विन ओएस पर्याप्त बीएसडी मूल कर्नेल कोड का उपयोग करता है । इसके अतिरिक्त, क्लैंग स्वयं मूल रूप से एक इन-हाउस ऐप्पल प्रोजेक्ट था, 2007 में खुले-खट्टे होने से पहले । चूंकि कॉर्पोरेट संसाधन FreeBSD परियोजना के एक प्रमुख प्रवर्तक हैं, इसलिए प्रायोजक की जरूरतों को पूरा करना एक महत्वपूर्ण वास्तविक दुनिया चालक है ।
Userbase: FreeBSD कई कंपनियों के लिए एक आकर्षक ओपन सोर्स विकल्प है, क्योंकि लाइसेंसिंग सरल, अप्रतिबंधित है और मुकदमों के लिए नेतृत्व करने की संभावना नहीं है। जीपीएल v3 और नए एंटी-टिवोइजेशन प्रावधानों के आगमन के साथ , यह सुझाव दिया गया है कि अधिक अनुज्ञेय लाइसेंसों के लिए एक त्वरित, विक्रेता-संचालित प्रवृत्ति है । चूंकि FreeBSD का वाणिज्यिक संस्थाओं को कथित लाभ अपने अनुज्ञेय लाइसेंस में निहित है, इसलिए कॉर्पोरेट उपयोगकर्ता आधार से GCC से दूर जाने के लिए दबाव बढ़ रहा है, और सामान्य रूप से GPL।
जीसीसी के साथ मुद्दे: लाइसेंस के अलावा, जीसीसी का उपयोग करने के कुछ कथित मुद्दे हैं । जीसीसी पूरी तरह से मानकों के अनुरूप नहीं है, और कई मानक आईएसओ मानक सी में नहीं मिले हैं । कोड की 3 मिलियन से अधिक लाइनों पर, यह " सबसे जटिल और मुक्त / खुला स्रोत सॉफ़्टवेयर परियोजनाओं में से एक " भी है। यह जटिलता दूर-स्तर के कोड संशोधन को एक चुनौतीपूर्ण कार्य बनाती है।
तकनीकी फायदे: जीसीसी की तुलना में क्लैंग के कुछ तकनीकी फायदे हैं । अधिकांश उल्लेखनीय अधिक सूचनात्मक त्रुटि संदेश और आईडीई, रिफैक्टिंग और स्रोत कोड विश्लेषण टूल के लिए स्पष्ट रूप से डिज़ाइन किए गए एपीआई हैं । हालांकि क्लैंग वेबसाइट बहुत अधिक कुशल संकलन और स्मृति उपयोग का संकेत देने वाले भूखंड प्रस्तुत करती है , वास्तविक दुनिया के परिणाम काफी परिवर्तनशील हैं , और मोटे तौर पर जीसीसी प्रदर्शन के अनुरूप हैं। सामान्य तौर पर, क्लैंग-निर्मित बायनेरीज़ जीसीसी बायनेरिज़ की तुलना में अधिक धीमी गति से चलते हैं:
एलएलवीएम का उपयोग करते समय जीसीसी की तुलना में कोड बनाने में तेज है ... ज्यादातर उदाहरणों में जीसीसी 4.5 निर्मित बायनेरिज़ ने एलएलवीएम-जीसीसी या क्लैंग से बेहतर प्रदर्शन किया था ... बाकी परीक्षणों में प्रदर्शन या तो जीसीसी के करीब था या अच्छी तरह से पीछे। कुछ परीक्षणों में, क्लेंग उत्पन्न बायनेरिज़ का प्रदर्शन बस भयानक था।
निष्कर्ष: यह अत्यधिक संभावना नहीं है कि संकलन दक्षता एक बड़ी प्रेरक होगी, जिसमें FreeBSD जैसी बड़ी परियोजना को पूरी तरह से नए संकलक टूलचैन में ले जाने का पर्याप्त जोखिम होगा, खासकर जब बाइनरी प्रदर्शन की कमी हो। हालाँकि, स्थिति वास्तव में दुरूह नहीं थी। 1 के बीच चुनाव को देखते हुए) एक आउट-ऑफ-डेट GCC चल रहा है, 2) एक आधुनिक GCC के लिए आगे बढ़ रहा है और एक परियोजना के लक्ष्यों के साथ असंगत लाइसेंस का उपयोग करने के लिए मजबूर किया जा रहा है या 3) एक स्थिर BSD- लाइसेंस संकलक के पास जा रहा है, निर्णय शायद अपरिहार्य था। ध्यान रखें कि यह केवल आधार प्रणाली पर लागू होता है, और वितरण से समर्थन करता है; कुछ भी उपयोगकर्ता को अपने FreeBSD बॉक्स पर एक आधुनिक GCC को स्थापित करने और उपयोग करने से रोकता है।