2016-01-07 8 views
11

के बीच क्या अंतर है हाल ही में मैंने .NET पुनर्गठन विवरण (ज्यादातर .NET Core github pages के माध्यम से) के बारे में पढ़ना शुरू कर दिया। यह बताता है कि उन्होंने अधिक प्लेटफार्मों का समर्थन करने के लिए भाई परियोजनाएं बनाई हैं। पढ़ने के दौरान मुझे लगता है कि CoreCLR और CoreRT स्वामित्व Roslyn कंपाइलर का एक नया ओपनसोर्स संस्करण है। कोरआरटी ​​मूल (एओटी) संकलन प्रदान करता है। और LLILC एलएलवीएम ढांचे को निर्देशित करने वाला एक वैकल्पिक कार्यान्वयन है।.NET CoreCLR, CoreRT, Roslyn और LLILC

क्या कोई भी उपयोगकर्ता परिप्रेक्ष्य से इस परियोजनाओं के अंतर और लक्ष्यों की पुष्टि और वर्णन कर सकता है? CoreCLR के बजाय भविष्य में रोस्लिन का उपयोग क्यों करेगा?

+5

रोज़लिन पूरी तरह से खुला स्रोत है, जहां तक ​​मुझे पता है, इसके बारे में मालिकाना कुछ भी नहीं है। –

+4

कोरआरटी ​​एक रनटाइम है। Roslyn सी # और वीबी कंपाइलर है, आईएल को स्रोत कोड संकलित। वे पूरी तरह से अलग चीजें हैं। –

+1

@ जोन्स स्केट - आपको अपनी टिप्पणी को उत्तर के रूप में पोस्ट करना चाहिए। –

उत्तर

28

रोज़लिन एक कंपाइलर प्लेटफार्म है जो आपको स्थिर और गतिशील विश्लेषण उपकरण और कस्टम भाषा एक्सटेंशन और सी # और वीबी प्रोग्रामिंग भाषाओं के लिए रूपांतरणों को बनाने में सक्षम बनाता है। यह आपको अन्य भाषाओं या अनुप्रयोगों के भीतर इन भाषाओं को एम्बेड करने में भी सक्षम बनाता है। Roslyn सी # और वीबी कंपाइलर और अन्य उपकरण शामिल हैं। ये कंपाइलर्स सामान्य इंटरमीडिएट भाषा (सीआईएल) कोड उत्सर्जित करते हैं।

इस कोड को चलाने के लिए, सीआईएल को बाइनरी कोड में संकलित किया जाना चाहिए जो लक्षित कंप्यूटर आर्किटेक्चर निष्पादित कर सकता है। .NET वर्तमान में ऐसा करने के तीन तरीके प्रदान करता है:

  1. ऐप चल रहा है, जबकि एक जेआईटी कंपाइलर का उपयोग कर सीआईएल कोड को बाइनरी कोड में संकलित करें। यह मॉडल कोरसीएलआर द्वारा कार्यान्वित किया गया है। कोरसीएलआर सीएलआर की एक प्रति के रूप में शुरू हुआ। इसे विभिन्न ओएस का समर्थन करने के लिए संशोधित किया गया है। वे अलग-अलग और समानांतर में बनाए रखा जाता है।
  2. सीआईएल कोड को बाइनरी कोड में संकलित करें और किसी भी आवश्यक .NET फ्रेमवर्क घटकों को एक एकल फ़ाइल स्वयं निहित निष्पादन योग्य बनाने के लिए एकीकृत करें जिसका प्रदर्शन कोड लिखित देशी भाषाओं के करीब है। इस तकनीक को .NET Native कहा जाता है। कोरआरटी ​​इस तकनीक का एक खुला स्रोत कार्यान्वयन है। .NET मूल और कोरआरटी ​​के बीच मुख्य अंतर यह है कि एओटी कंपाइलर जो पूर्व उपयोग यूटीसी कंपाइलर (एमएसवीसी कंपाइलर बैकएंड) है, जबकि बाद में वर्तमान में RyuJIT का उपयोग करता है। यूटीसी RyuJIT की तुलना में कोड को अनुकूलित करने में अधिक आक्रामक है। कोरआरटी ​​में भी, रनटाइम के कुछ घटकों को सी # में साफ रूप से कार्यान्वित किया गया है। कोरसीएलआर अभी भी सी ++ कार्यान्वयन का उपयोग करता है।
  3. एनजीईएन जो .NET मूल के समान है सिवाय इसके कि उत्पादित निष्पादन योग्य स्वयं निहित नहीं हैं और बाहरी रूप से स्थापित रनटाइम की आवश्यकता होती है।

एलएलआईएलसी पोर्टेबल एलएलवीएम कंपाइलर ढांचे पर आधारित एक सीआईएल संकलक है। इसका उपयोग जेआईटी (वर्तमान) और एओटी (भविष्य) कंपाइलर्स बनाने के लिए किया जा सकता है। इस कंपाइलर का लाभ यह है कि यह क्लैंग सी ++ कंपाइलर अनुकूलन का लाभ उठाता है और एलएलवीएम एक्स्टेंसिबिलिटी मॉडल (विश्लेषण और अनुकूलन पास) को .NET पर लाता है।

कोरआरटी ​​और एलएलआईएलसी नई परियोजनाएं हैं और अभी भी में विकास चरण और उत्पादन अनुप्रयोगों का समर्थन करने के लिए बहुत अधिक काम की आवश्यकता है। तो यदि आप एक उपयोगकर्ता हैं और योगदानकर्ता नहीं हैं, तो कोरसीएलआर और रोज़लिन आपके लिए हैं। फिर, कोरसीएलआर रनटाइम है जबकि रोज़लिन सी # और वीबी कंपाइलर्स है।

+0

क्या किसी को पता है कि एलएलआईएलसी अभी भी सक्रिय विकास में है या यदि कोई प्रतिस्थापन है? उनके गिटहब पेज पिछले दो सालों से कोई गतिविधि नहीं दिखाता है। –

+1

@ एंथनी गटलिन देखें [यह] (https://github.com/dotnet/llilc/issues/1075#issuecomment-345278134)। ऐसा लगता है कि एलएलआईएलसी न तो मृत और न ही जीवित है। –

+0

ऐसा लगता है कि माइक्रोसॉफ्ट वास्तव में लोगों को .NET/.NET कोर छोड़ने और एलएलवीएम/सीएलएंग का उपयोग कर सी ++ में जाने के लिए प्रेरित कर रहा है। प्रदर्शन अंतर काफी है। एलएलवीएम/सीएलएएन x86_x64, एआरएम, पावर पीसी और विंडोज़, लिनक्स, एंड्रॉइड और अन्य के तहत अधिक काम करता है। मोबाइल एप्लिकेशन के लिए, विशेष रूप से प्रदर्शन कम बैटरी खपत में अनुवाद करता है। अगर मैं माइक्रोसॉफ्ट honchos में से एक था, तो मैं यह सुनिश्चित करने के लिए सबकुछ करूँगा कि मेरी सभी भाषाएं संकलित हों और एलएलवीएम के तहत चलें। यदि प्रबंधित पॉइंटर्स एक समस्या है, तो कम से कम एलएलवीएम के संकलन के लिए विस्फोटित चीजों को ठीक करें। –