LLVM 15.0 विभिन्न बैकएंड के लिए सुधार, अधिक समर्थन और बहुत कुछ के साथ आता है

LLVM 15 इम्प्लीमेंट्स सुधारों का समर्थन करते हैं

LLVM 15.0 में C/C++ के कई दिलचस्प अपडेट भी शामिल हैं।

छह महीने के विकास के बाद, एलएलवीएम 15.0 परियोजना रिलीज की घोषणा, जिसमें कई बड़े बदलाव किए हैं, साथ ही नए प्रोसेसर, आर्किटेक्चर, और बहुत कुछ के लिए अतिरिक्त समर्थन।

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

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

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

प्रस्तुत किए गए इस नए संस्करण में, इस बात पर प्रकाश डाला गया है कि Cortex-M85 प्रोसेसर के लिए सपोर्ट, साथ ही आर्मव9-ए, आर्मव9.1-ए और आर्मव9.2-ए आर्किटेक्चर, आर्मव8.1-एम पीएसीबीटीआई-एम एक्सटेंशन के लिए।

एक और बदलाव जो खड़ा है, वह है एक प्रयोगात्मक DirectX बैकएंड जोड़ा गया कि डीएक्सआईएल प्रारूप का समर्थन करता है (डायरेक्टएक्स इंटरमीडिएट लैंग्वेज) डायरेक्टएक्स शेडर्स के लिए उपयोग किया जाता है। बैकएंड को "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" बिल्ड विकल्प के माध्यम से सक्षम किया गया है।

libc++ नई सुविधाओं को लागू करना जारी रखता है सी ++ 20 और सी ++ 2 बी मानकों के, "प्रारूप" पुस्तकालय कार्यान्वयन के पूरा होने और "श्रेणियों" पुस्तकालय के प्रस्तावित प्रयोगात्मक संस्करण सहित।

क्लैंग 15.0 से संबंधित परिवर्तनों के भाग के लिए यह उल्लेख किया गया है कि सी-जैसी भाषा एचएलएसएल के लिए अतिरिक्त प्रयोगात्मक समर्थन (हाई-लेवल शेडिंग लैंग्वेज), जिसका उपयोग DirectX 9 से शुरू होने वाले शेड्स लिखने के लिए किया जाता है, साथ ही HLSL शेडर्स को DirectX 12-संगत DXIL (DirectX इंटरमीडिएट लैंग्वेज) बाइनरी फॉर्मेट में अनुवाद करने के साथ-साथ SPIR फॉर्मेट -V वल्कन द्वारा उपयोग किया जाता है। भविष्य में, DXBC प्रारूप के लिए समर्थन लागू करने की योजना (DirectX Bytecode) DirectX 9-11 में उपयोग किया जाता है। कार्यान्वयन Microsoft द्वारा प्रदान किया गया है और 2017 में जारी DirectX Shader Compiler पर आधारित है, जिसे LLVM 3.7 के आधार पर बनाया गया है।

यह भी उल्लेख किया गया है कि यह जारी है भविष्य के C2X और C++23 मानकों का समर्थन करने के लिए काम करें। C भाषा के लिए लागू किया गया: noreturn विशेषता, झूठे और सच्चे कीवर्ड, दी गई बिट गहराई के पूर्णांकों के लिए _BitInt(N) प्रकार, *_WIDTH मैक्रोज़, UTF-8 वर्णों के लिए u8 उपसर्ग।

इसके अतिरिक्त, सी ++ के लिए लागू किया गया है: मॉड्यूल विलय, फ़ंक्शन सदस्यों का ABI अलगाव, मॉड्यूल में गैर-स्थानीय चर के गतिशील आरंभीकरण का आदेश दिया, बहुआयामी सूचकांक ऑपरेटर, ऑटो (एक्स), गैर-शाब्दिक चर, गोटो और लेबल को कॉन्स्टेक्स के रूप में घोषित किए गए कार्यों में, सीमांकित एस्केप अनुक्रम, नामित एस्केप वर्ण।

आर्किटेक्चर पर आधारित सिस्टम के लिए x86, जोड़ा गया "-fzero-call-used-regs" ध्वज, जो फ़ंक्शन से नियंत्रण वापस करने से पहले फ़ंक्शन में उपयोग किए जाने वाले सभी CPU रजिस्टरों को शून्य प्रदान करता है। इस विकल्प डेटा रिसाव से बचाता है आरओपी (रिटर्न ओरिएंटेड प्रोग्रामिंग) उपकरणों को बनाने के लिए उपयुक्त ब्लॉकों की संख्या को लगभग 20% तक कम करें।

मेमोरी लोकेशन रैंडमाइजेशन लागू किया गया है सी कोड के लिए संरचनाएं, जो कमजोरियों के शोषण के मामले में संरचनाओं से डेटा की निकासी को जटिल बनाती हैं। रैंडमाइज़ेशन को randomize_layout और no_randomize_layout विशेषताओं के साथ चालू और बंद किया जाता है, और बीज को "-फ्रैंडमाइज़-लेआउट-सीड" या "-फ़्रैंडमाइज़-लेआउट-सीड-फ़ाइल" फ़्लैग के साथ सेट करने की आवश्यकता होती है ताकि रिपीटेबल बिल्ड सुनिश्चित हो सके।

अन्य परिवर्तनों की वह बाहर खड़ा है:

  • ओपनसीएल और ओपनएमपी समर्थन से संबंधित विस्तारित क्षमताएं। OpenCL एक्सटेंशन के लिए जोड़ा गया समर्थन cl_khr_subgroup_rotate.
  • x86, PowerPC और RISC-V आर्किटेक्चर के लिए बेहतर बैकएंड।
    बेहतर एलएलडी लिंकर और एलएलडीबी डीबगर क्षमताएं।
  • जोड़ा गया "-फस्ट्रिक्ट-फ्लेक्स-सरणी =" झंडा »जिसके साथ आप संरचनाओं में एक नरम सरणी तत्व की सीमा को नियंत्रित कर सकते हैं (सॉफ्ट ऐरे सदस्य, संरचना के अंत में अनिश्चित आकार की एक सरणी)।
  • जोड़ा गया "-वार्रे-पैरामीटर" विकल्प निश्चित और परिवर्तनीय लंबाई सरणी से जुड़े बेमेल तर्क घोषणाओं के साथ ओवरराइडिंग कार्यों के बारे में चेतावनी देने के लिए।
  • MSVC के साथ बेहतर संगतता।
  • MSVC में प्रदान किए गए "#pragma फ़ंक्शन और "#pragma alloc_text" के लिए अतिरिक्त समर्थन।
  • MSVC-संगत /JMC और /JMC फ़्लैग के लिए जोड़ा गया समर्थन।
  • AMD Zen2 प्रोसेसर से समर्थित RDPRU निर्देश के उपयोग को नियंत्रित करने के लिए "-m[no-]rdpru" ध्वज जोड़ा गया।
  • RETBLEED भेद्यता से बचाने के लिए "-mfunction-return=thunk-extern" ध्वज जोड़ा गया, जो निर्देशों के अनुक्रम को जोड़कर काम करता है जो अप्रत्यक्ष छलांग के लिए सट्टा निष्पादन तंत्र की भागीदारी को बाहर करता है।

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


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

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

*

*

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