ஆறு மாத வளர்ச்சிக்குப் பிறகு, LLVM 13.0 திட்டத்தின் வெளியீடு வழங்கப்பட்டது - ஒரு GCC-இணக்கமான கருவித்தொகுப்பு (தொகுப்பாளர்கள், மேம்படுத்திகள் மற்றும் குறியீடு ஜெனரேட்டர்கள்) நிரல்களை RISC போன்ற மெய்நிகர் அறிவுறுத்தல்களின் இடைநிலை பிட்கோடில் தொகுக்கிறது (ஒரு குறைந்த-நிலை மெய்நிகர் இயந்திரம் பல நிலை தேர்வுமுறை அமைப்பு). உருவாக்கப்பட்ட சூடோகோட் ஒரு JIT கம்பைலரைப் பயன்படுத்தி நிரல் செயல்படுத்தும் நேரத்தில் நேரடியாக இயந்திர வழிமுறைகளாக மாற்றப்படலாம்.
க்ளாங் 13.0 இல் மேம்பாடுகள்:
- உத்தரவாதமான வால் அழைப்புகளுக்கான செயல்படுத்தப்பட்ட ஆதரவு (ஒரு செயல்பாட்டின் முடிவில் ஒரு சப்ரூட்டினை அழைப்பது, சப்ரூட்டின் தன்னைத்தானே அழைத்தால் டெயில் ரிகர்ஷனை உருவாக்குகிறது). உத்தரவாதமான டெயில் அழைப்புகளுக்கான ஆதரவு C++ இல் "[[clang::musttail]]" பண்புக்கூறு மற்றும் C இல் "__attribute__((musttail))" மூலம் வழங்கப்படுகிறது, இது "திரும்ப" அறிக்கையில் பயன்படுத்தப்படுகிறது. ஸ்டாக் நுகர்வுகளைச் சேமிக்க, ஒரு தட்டையான மறு செய்கையில் குறியீட்டைப் பயன்படுத்துவதன் மூலம் மேம்படுத்தல்களைச் செயல்படுத்த இந்த அம்சம் உங்களை அனுமதிக்கிறது.
- "பயன்படுத்துதல்" அறிவிப்புகள் மற்றும் கணகால் நீட்டிப்புகள் "[[]]" வடிவமைப்பைப் பயன்படுத்தி C++11-பாணி பண்புக்கூறுகளை வரையறுப்பதற்கான ஆதரவை வழங்குகின்றன.
- பயனர் குறியீட்டில் ஒதுக்கப்பட்ட அடையாளங்காட்டிகளைக் குறிப்பிடும்போது எச்சரிக்கையைக் காட்ட "-Wreserved-identifier" கொடி சேர்க்கப்பட்டது.
- "-Wunused-but-set-parameter" மற்றும் "-Wunused-but-set-variable" கொடிகள் சேர்க்கப்பட்டது, ஒரு அளவுரு அல்லது மாறி அமைக்கப்பட்டு ஆனால் பயன்படுத்தப்படாவிட்டால், எச்சரிக்கையைக் காண்பிக்கும்.
- கழித்தல் செயல்பாடுகளில் பூஜ்ய சுட்டியைப் பயன்படுத்துவதால் குறியீடு வரையறுக்கப்படாத நடத்தையை அறிமுகப்படுத்தினால், எச்சரிக்கையை வெளியிட "-Wnull-pointer-subtraction" கொடி சேர்க்கப்பட்டது.
- செயலாக்கப்படும் கோப்பில் வரையறுக்கப்பட்ட ஒவ்வொரு செயல்பாட்டிற்கும் ஸ்டாக் ஃப்ரேம்களின் அளவு பற்றிய தகவலைக் கொண்ட கூடுதல் ".su" கோப்பை ஒவ்வொரு குறியீடு கோப்பிற்கும் உருவாக்க "-fstack-usage" கொடி சேர்க்கப்பட்டது.
- நிலையான பகுப்பாய்வியில் ஒரு புதிய வெளியீட்டு வகை சேர்க்கப்பட்டுள்ளது - “sarif-html”, இது HTML மற்றும் சரிஃப் வடிவங்களில் ஒரே நேரத்தில் அறிக்கைகளை உருவாக்க வழிவகுக்கிறது. புதிய allocClassWithName சரிபார்ப்பு சேர்க்கப்பட்டது. “-analyzer-display-progress” விருப்பத்தை குறிப்பிடும்போது, ஒவ்வொரு செயல்பாட்டின் பகுப்பாய்வு நேரமும் காட்டப்படும். ஸ்மார்ட் பாயிண்டர் அனலைசர் (alpha.cplusplus.SmartPtr) கிட்டத்தட்ட தயாராக உள்ளது.
- OpenCL ஆதரவுடன் தொடர்புடைய திறன்கள் விரிவாக்கப்பட்டுள்ளன. புதிய நீட்டிப்புகளுக்கான ஆதரவு சேர்க்கப்பட்டது cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields மற்றும் __cl_clang_non_portable_kernel_param_types. OpenCL 3.0 விவரக்குறிப்பின் செயல்படுத்தல் தொடர்ந்தது. C க்கு, மற்றொரு பதிப்பு வெளிப்படையாகத் தேர்ந்தெடுக்கப்படாவிட்டால், OpenCL 1.2 விவரக்குறிப்பு இயல்புநிலையாகப் பயன்படுத்தப்படும். C++ க்கு, “.clcpp” நீட்டிப்பு கொண்ட கோப்புகளுக்கான ஆதரவு சேர்க்கப்பட்டுள்ளது.
- ஓபன்எம்பி 5.1 விவரக்குறிப்பில் வரையறுக்கப்பட்ட லூப் டிரான்ஸ்ஃபர்மேஷன் உத்தரவுகளுக்கான ஆதரவு (“#pragma omp unrol” மற்றும் “#pragma omp tile”) செயல்படுத்தப்பட்டது.
- க்ளாங்-வடிவ பயன்பாட்டில் விருப்பங்கள் சேர்க்கப்பட்டது: கருத்துகளுக்கு முன் இடைவெளிகளின் எண்ணிக்கையை வரையறுக்க SpacesInLineCommentPrefix, IndentAccessModifiers, LambdaBodyIndentation மற்றும் PPIndentWidth ஆகியவை உள்ளீடுகள், லாம்ப்டா வெளிப்பாடுகள் மற்றும் முன்செயலி வழிமுறைகளின் சீரமைப்பைக் கட்டுப்படுத்துகின்றன. தலைப்பு கோப்புகளின் (SortIncludes) எண்ணிக்கையை வரிசைப்படுத்துவதற்கான சாத்தியக்கூறுகள் விரிவாக்கப்பட்டுள்ளன. JSON கோப்புகளை வடிவமைப்பதற்கான ஆதரவு சேர்க்கப்பட்டது.
- புதிய காசோலைகளின் பெரும்பகுதி லிண்டர் கிளாங்-டிடியில் சேர்க்கப்பட்டுள்ளது.
LLVM 13.0 இல் முக்கிய கண்டுபிடிப்புகள்:
- CET தொழில்நுட்பத்தைப் பயன்படுத்த "-ehcontguard" விருப்பம் சேர்க்கப்பட்டதுWindows ரிட்டர்ன்-ஓரியன்டட் புரோகிராமிங் (ROP) நுட்பங்களைப் பயன்படுத்தி உருவாக்கப்பட்ட சுரண்டல்களின் செயலாக்கத்திலிருந்து, விதிவிலக்கு கையாளுதல் கட்டத்தில் பாதுகாப்பளிப்பதற்காக கட்டுப்பாட்டு-ஓட்ட அமலாக்க தொழில்நுட்பம் பயன்படுத்தப்படுகிறது.
- debuginfo-test ப்ராஜெக்ட் குறுக்கு-திட்ட-சோதனைகள் என மறுபெயரிடப்பட்டது மற்றும் பிழைத்திருத்த தகவலுடன் மட்டுப்படுத்தப்படாமல் வெவ்வேறு திட்டங்களின் கூறுகளை சோதிக்க வடிவமைக்கப்பட்டுள்ளது.
- அசெம்பிளி அமைப்பு பல விநியோகங்களை உருவாக்குவதற்கான ஆதரவை வழங்குகிறது, எடுத்துக்காட்டாக, ஒன்று பயன்பாடுகளுடன், மற்றொன்று டெவலப்பர்களுக்கான நூலகங்களுடன்.
- AArch64 கட்டமைப்பிற்கான பின்தளத்தில், Armv9-A RME (Realm Management Extension) மற்றும் SME (அளவிடக்கூடிய மேட்ரிக்ஸ் நீட்டிப்பு) நீட்டிப்புகளுக்கான ஆதரவு அசெம்பிளரில் செயல்படுத்தப்படுகிறது.
- ஐஎஸ்ஏ வி68/எச்விஎக்ஸ் ஆதரவு அறுகோண கட்டிடக்கலைக்கான பின்தளத்தில் சேர்க்கப்பட்டுள்ளது.
- x86 பின்தளத்தில் AMD Zen 3 செயலிகளுக்கான மேம்பட்ட ஆதரவு உள்ளது.
- AMDGPU பின்தளத்தில் GFX1013 RDNA2 APUக்கான ஆதரவு சேர்க்கப்பட்டது.
- Libc++, "concepts" நூலகத்தை நிறைவு செய்வது உட்பட, C++20 மற்றும் C++2b தரநிலைகளின் புதிய அம்சங்களைத் தொடர்ந்து செயல்படுத்தி வருகிறது. இந்தத் தளத்திற்காக Windows MinGW-ஐ அடிப்படையாகக் கொண்ட std::filesystem-க்கான ஆதரவு சேர்க்கப்பட்டுள்ளது. தலைப்புக் கோப்புகள் பிரிக்கப்பட்டுள்ளன. , மற்றும் முழுமையற்ற செயல்பாட்டைக் கொண்ட ஹெடர் கோப்புகளை முடக்குவதற்காக, LIBCXX_ENABLE_INCOMPLETE_FEATURES என்ற பில்ட் ஆப்ஷன் சேர்க்கப்பட்டுள்ளது.
- எல்எல்டி இணைப்பாளரின் திறன்கள் விரிவுபடுத்தப்பட்டுள்ளன, இதில் பிக்-எண்டியன் ஆர்ச்64 செயலிகளுக்கான ஆதரவு செயல்படுத்தப்படுகிறது, மேலும் வழக்கமான நிரல்களை இணைக்க அனுமதிக்கும் நிலைக்கு Mach-O பின்தளம் கொண்டுவரப்பட்டுள்ளது. LLD ஐப் பயன்படுத்தி Glibc ஐ இணைக்க தேவையான மேம்பாடுகள் சேர்க்கப்பட்டுள்ளன.
- LLvm-mca (மெஷின் கோட் அனலைசர்) பயன்பாடு, ARM Cortex-A55 போன்ற வழிமுறைகளை (இன்-ஆர்டர் சூப்பர்ஸ்கேலார் பைப்லைன்) செயல்படுத்தும் செயலிகளுக்கான ஆதரவைச் சேர்த்துள்ளது.
- AArch64 இயங்குதளத்திற்கான LLDB பிழைத்திருத்தமானது பாயிண்டர் அங்கீகாரம், MTE (MemTag, MemTag, Memory Tagging Extension) மற்றும் SVE பதிவுகளுக்கு முழு ஆதரவை வழங்குகிறது. ஒவ்வொரு நினைவக ஒதுக்கீடு செயல்பாட்டிற்கும் குறிச்சொற்களை பிணைக்க மற்றும் நினைவகத்தை அணுகும்போது சுட்டிக்காட்டியின் சரிபார்ப்பை ஒழுங்கமைக்க உங்களை அனுமதிக்கும் கட்டளைகள் சேர்க்கப்பட்டன, அவை சரியான குறிச்சொல்லுடன் இணைக்கப்பட வேண்டும்.
- எல்.எல்.டி.பி பிழைத்திருத்தி மற்றும் ஃபோர்ட்ரான் மொழிக்கான முன்பக்கம் - ஃபிளாங் ஆகியவை திட்டத்தால் உருவாக்கப்பட்ட பைனரி அசெம்பிளிகளில் சேர்க்கப்பட்டுள்ளன.
ஆதாரம்: opennet.ru
