LLVM 11.0 पायथन 3 के अपडेट के साथ आता है, RISC-V के लिए सुधार और बहुत कुछ

LLVM

छह महीने के विकास के बाद एलएलवीएम 11.0 परियोजना के नए संस्करण का विमोचन प्रस्तुत किया गया है जिसमें विभिन्न सुधार प्रस्तुत किए गए हैं, जैसे कि पायथन 3 का अपडेट, आरआईएससी-वी में प्रयोगात्मक निर्देशों का समर्थन करने के लिए पैच और कई अन्य बदलाव।

जो लोग एलएलवीएम से अनजान हैं, उन्हें पता होना चाहिए कि यह है एक GCC अनुरूप टूलकिट (कंपाइलर, ऑप्टिमाइज़र और कोड जेनरेटर) जो प्रोग्राम को आरआईएससी (बहु-स्तरीय अनुकूलन प्रणाली के साथ निम्न-स्तरीय वर्चुअल मशीन) के समान बिटकोड इंटरमीडिएट वर्चुअल निर्देशों में संकलित करता है।

इसे संकलन समय को अनुकूलित करने के लिए डिज़ाइन किया गया है।, लिंक समय, किसी भी प्रोग्रामिंग भाषा में निष्पादन समय जिसे उपयोगकर्ता परिभाषित करना चाहता है. मूल रूप से C और C++ को संकलित करने के लिए लागू किया गया, एलएलवीएम की भाषा-अज्ञेयवादी डिजाइन, और परियोजना की सफलता उन्होंने विभिन्न प्रकार की भाषाओं को जन्म दिया है।

उत्पन्न स्यूडोकोड को जेआईटी कंपाइलर का उपयोग करके सीधे प्रोग्राम निष्पादन समय पर मशीन निर्देशों में परिवर्तित किया जा सकता है।

एलएलवीएम 11.0 की मुख्य नई विशेषताएं

एलएलवीएम के इस नए संस्करण में 11.0 बिल्ड सिस्टम को Python 3 का उपयोग करने के लिए स्थानांतरित कर दिया गया है, जैसे कि Python 3 का उपयोग बाध्य नहीं है, क्योंकि यदि यह उपलब्ध नहीं है, तो Python 2 का उपयोग करने के लिए रोलबैक विकल्प लागू किया जाता है।

गुण वेक्टर-फ़ंक्शन-अबी-वेरिएंट जोड़ा गया है मध्यवर्ती प्रतिनिधित्व (आईआर) के लिए अदिश और सदिश कार्यों के बीच मानचित्रण का वर्णन करने के लिए वेक्टरिंग कॉल के लिए. दो अलग-अलग वेक्टर प्रकार, llvm ::FixedVectorType और llvm::ScalableVectorType, llvm::VectorType से निकाले जाते हैं।

अपरिभाषित व्यवहार अपरिभाषित पर आधारित शाखाकरण है और अपरिभाषित मानों को मानक पुस्तकालय कार्यों में पारित करना है।

मेमसेट/मेमसीपीवाई/मेममूव में, अपरिभाषित पॉइंटर्स को पास करने की अनुमति है, लेकिन यदि आकार पैरामीटर शून्य के बराबर है।

एलएलजेआईटी, एलएलजेआईटी::इनिशियलाइज़ और एलएलजेआईटी::डीइनिशियलाइज़ विधियों के माध्यम से स्थिर आरंभीकरण करने के लिए समर्थन जोड़ता है।

जोड़ा गया JITDylib में स्थिर लाइब्रेरी जोड़ने की क्षमता StaticLibraryDefinitionGenerator वर्ग का उपयोग करना। ORCv2 के लिए C API जोड़ा गया (JIT कंपाइलर बनाने के लिए API)।

विभिन्न प्रोसेसर आर्किटेक्चर के लिए समर्थन में सुधार की ओर से:

  • जोड़ा Cortex-A34, Cortex-A77, Cortex-A78 और Cortex-X1 प्रोसेसर के लिए समर्थन AArch64 आर्किटेक्चर के बैकएंड में। RMv8.2-ECV (एन्हांस्ड काउंटर वर्चुअलाइजेशन), ARMv16-FGT (फाइन ग्रेन्ड ट्रैप्स), ARMv16-AMU (एक्टिविटी मॉनिटर्स वर्चुअलाइजेशन) सहित ARMv8.6-BF8.6 (BFloat8.6) और ARMv8.6-A एक्सटेंशन लागू किए गए। और ARMv8.0-DGH (डेटा संग्रह संकेत)।
  • ARM बैकएंड पर Cortex-M55, Cortex-A77, Cortex-A78 और Cortex-X1 प्रोसेसर के लिए समर्थन जोड़ा गया। Armv8.6-A मैट्रिक्स मल्टीप्ली और RMv8.2-AA32BF16 BFloat16 एक्सटेंशन लागू किया गया।
  • PowerPC बैकएंड में POWER10 प्रोसेसर के लिए कोड जनरेशन के लिए समर्थन जोड़ा गया। बेहतर लूप अनुकूलन और फ़्लोटिंग पॉइंट संचालन के लिए बेहतर समर्थन।
  • वास्तुकला का बैकएंड आरआईएससी-वी समर्थन के साथ पैच प्राप्त कर सकता है प्रायोगिक विस्तारित अनुदेश सेटों के लिए जिन्हें अभी तक आधिकारिक तौर पर अनुमोदित नहीं किया गया है।

इसके अतिरिक्त, हुक फ़ंक्शंस के लिए कोड उत्पन्न करने की क्षमता प्रदान की गई है एसवीई वेक्टर निर्देशों में निर्मित।

एवीआर आर्किटेक्चर के लिए बैकएंड को प्रायोगिक श्रेणी से आधार वितरण में शामिल स्थिर श्रेणी में ले जाया गया है।

x86 बैकएंड Intel AMX और TSXLDTRK निर्देशों का समर्थन करता है। LVI हमलों के विरुद्ध अतिरिक्त सुरक्षा (लोड वैल्यू इंजेक्शन) और सीपीयू पर संचालन के सट्टा निष्पादन के कारण होने वाले हमलों को रोकने के लिए सामान्य सट्टा निष्पादन साइड इफेक्ट दमन तंत्र भी लागू किया गया था।

अन्य परिवर्तनों में से जो खड़े हैं:

  • SystemZ आर्किटेक्चर के लिए बैकएंड MemorySanitizer और LeakSanitizer के लिए समर्थन जोड़ता है।
  • Libc++ गणित स्थिरांक हेडर फ़ाइल के लिए समर्थन जोड़ता है .
  • एलएलडी लिंकर की विस्तारित क्षमताएं।
  • बेहतर ELF समर्थन, जिसमें अतिरिक्त विकल्प शामिल हैं "-lto-emit-asm", "-lto-संपूर्ण-प्रोग्राम-दृश्यमान", "-प्रिंट-संग्रह-आँकड़े", "-शफ़ल-अनुभाग", "-thinlto-एकल -मॉड्यूल ”, “-यूनीक”, “-रोज़सेगमेंट”, “-थ्रेड्स = एन”।
  • किसी फ़ाइल में ट्रेस को सहेजने के लिए "-टाइम-ट्रेस" विकल्प जोड़ा गया, जिसे क्रोम में क्रोम://ट्रेस इंटरफ़ेस के माध्यम से पार्स किया जा सकता है।
  • गो कंपाइलर (एलएलजीओ) का इंटरफ़ेस रिलीज़ से हटा दिया गया है और भविष्य में इसे पुनर्गठित किया जा सकता है।

अंत में यदि आप इसके बारे में अधिक जानना चाहते हैं इस नये संस्करण के बारे में आप परामर्श ले सकते हैं निम्नलिखित लिंक में विवरण।


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: एबी इंटरनेट नेटवर्क 2008 SL
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।