2010-12-12 11 views
5

ऐप्पल एलएलवीएम और क्लैंग को बहुत धक्का दे रहा है। अफवाहें कहती हैं कि ऐसा इसलिए है क्योंकि ऐप्पल जीसीसी छोड़ना चाहता है (जीपीएलवी 3 लाइसेंस के साथ समस्याओं के कारण), और क्लैंग पर स्विच करें।क्या मुझे अपने सी ++ आईफोन प्रोजेक्ट के साथ क्लैंग/एलएलवीएम को लक्षित करना शुरू करना चाहिए?

किसी को भी यह होने का कोई विचार है कि यह कब होने जा रहा है?

मैं एक सी ++ प्रोजेक्ट शुरू कर रहा हूं जिसे मैं आईफोन पर पोर्ट करने की योजना बना रहा हूं, और मुझे नहीं पता कि मुझे सी ++ 0 एक्स फीचर्स (कम से कम क्लैंग द्वारा समर्थित) का उपयोग करना चाहिए, या अगर मुझे लिखना चाहिए कोड जीसीसी 4.1 के साथ संगत ...

+0

अभी तक, क्लैंग केवल कुछ सी ++ 0x सुविधाओं का समर्थन करता है, मुझे नहीं लगता कि यह किसी भी चीज का समर्थन करता है जीसीसी समर्थन नहीं। – delnan

+0

खैर, ऐप्पल जीसीसी 4.1 का उपयोग करता है और क्लैंग जीसीसी 4.1 की तुलना में अधिक परिपक्व (कम से कम समर्थित सुविधाओं के लिए) है। – peoro

+0

ऐप्पल को छोड़कर जीसीसी 4.2.1 4.1 का उपयोग नहीं करता है। – jer

उत्तर

13

अफवाहें क्योंकि एप्पल को ड्रॉप जीसीसी (GPLv3 लाइसेंस के साथ समस्याओं के कारण) चाहता है यह कहते हैं, और बजना करने के लिए स्विच।

यह अफवाह नहीं है, यह ऐप्पल की स्थिति है। जीसीसी पर जीपीएल लाइसेंस ऐप्पल को उनके विकास उपकरण के भीतर कंपाइलर/पार्सर को पूरी तरह से एकीकृत करने से रोकता है। क्लैंग/एलएलवीएम के साथ, उनके पास ऐसा कोई प्रतिबंध नहीं है और इस प्रकार उनके टूल्स के साथ और अधिक करने में सक्षम हैं (एक्सकोड 3.2 में एकीकृत क्लैंग स्टेटिक विश्लेषक के साथ शुरू करना और एक्सकोड 4 के साथ आगे बढ़ना)।

लाइसेंस मुद्दों से परे, क्लैंग/एलएलवीएम जीसीसी की तुलना में बहुत तेज बनाता है और ऐप्पल के बेंचमार्क (और मेरा खुद का अनुभव) जीसीसी की तुलना में बेहतर प्रदर्शन करने वाले निष्पादन योग्य बनाता है। यह कहीं भी अधिक उपयोगी त्रुटि संदेश उत्पन्न करता है। इसे मॉड्यूलर फैशन में आर्किटेक्टेड किया गया है, जिससे आगे बढ़ने के लिए जीसीसी की तुलना में इसे बनाए रखना और विस्तार करना आसान हो सकता है।

ऐप्पल ने कहा है कि निर्यातित टेम्पलेट को छोड़कर सभी सी ++ सुविधाओं को एक्सकोड 4 में आने वाले एलएलवीएम कंपाइलर 2.0 में समर्थित किया गया है, और संकलक थोड़ी देर के लिए स्वयं-होस्टिंग कर रहा है। यदि आप प्रतीक्षा नहीं कर सकते हैं, या एक्सकोड 4 डेवलपर पूर्वावलोकन का प्रयास नहीं करना चाहते हैं, तो आप अब main LLVM site से स्रोत कोड को पकड़कर कंपाइलर देख सकते हैं।

मैं अत्यधिक सत्र 300 के लिए स्वतंत्र रूप से उपलब्ध WWDC 2010 videos देख अनुशंसा करते हैं - "संघ के डेवलपर उपकरण राज्य" और सत्र 312 - "क्या LLVM संकलक में नया क्या है" जहां वे क्या वे वर्तमान में LLVM संकलक के साथ की दिशा में काम कर रहे हैं बाहर रखना ।

समय-समय पर, केवल ऐप्पल आपको बताएगा कि वे कुछ कब करेंगे, और यहां तक ​​कि वे बिल्कुल नहीं जान सकते कि प्राइमटाइम के लिए कुछ तैयार होगा। आप एक्सकोड डेवलपर पूर्वावलोकन के सुधार प्रक्षेपवक्र के आधार पर शिक्षित अनुमान बना सकते हैं, लेकिन यह सब कुछ है। हालांकि, क्लैंग/एलएलवीएम जिस तरह से ऐप्पल जा रहा है, तो इसके लिए योजना क्यों नहीं है?

+0

ग्रेट उत्तर। इसके अलावा एक्सकोड 3.2.5 एलएलवीएम 1.6 का उपयोग करता है (पिछले 3.2.एक्स बिल्डों में 1.5 से ऊपर)। – rjstelling

+0

वास्तव में, फोरोनिक्स बेंचमार्क से, ऐसा लगता है कि जीसीसी 4.6 द्वारा उत्पन्न द्विआधारी एक अच्छा मार्जिन के साथ क्लेंग से बेहतर प्रदर्शन करती है। लेकिन मुझे उम्मीद है :) –

+0

@ मैथियू - मैंने उन बेंचमार्क को देखा है, जो मैक पर ऐप्पल के ओपनएसएसएल बेंचमार्क के साथ मेल-मिलाप करना मुश्किल है (जीसीसी की तुलना में 5% -25% प्रदर्शन वृद्धि दिखा रहा है) और आईफोन पर 12% -60% प्रदर्शन बढ़ावा)। ऐप्पल एक अनुकूलित जीसीसी बिल्ड का उपयोग करता है, इसलिए शायद यह नवीनतम कंपाइलर संस्करणों के साथ तालमेल नहीं रख रहा है, या हो सकता है कि फोरोनिक्स के सेटअप के बारे में कुछ अंतर हो। यह भी प्रतीत होता है कि फोरोनिक्स स्वयं आलोचना के अधीन आ गया है: http://www.osnews.com/thread?449249, हालांकि मुझे परीक्षणों में स्पष्ट रूप से कुछ भी गलत नहीं दिख रहा है। –

संबंधित मुद्दे