GCC 13 கம்பைலர் தொகுப்பின் வெளியீடு

ஒரு வருட வளர்ச்சிக்குப் பிறகு, இலவச GCC 13.1 கம்பைலர் தொகுப்பின் வெளியீடு வெளியிடப்பட்டது, இது புதிய GCC 13.x கிளையின் முதல் குறிப்பிடத்தக்க வெளியீடாகும். புதிய வெளியீட்டு எண் திட்டத்தின் கீழ், பதிப்பு 13.0 வளர்ச்சியின் போது பயன்படுத்தப்பட்டது, மேலும் GCC 13.1 வெளியீட்டிற்கு சற்று முன்பு, GCC 14.0 கிளை ஏற்கனவே பிரிக்கப்பட்டது, அதில் இருந்து GCC 14.1 இன் அடுத்த குறிப்பிடத்தக்க வெளியீடு உருவாகும்.

முக்கிய மாற்றங்கள்:

  • மாடுலா-2 நிரலாக்க மொழியில் நிரல்களை உருவாக்குவதற்கு GCC ஒரு முன்முனையை ஏற்றுக்கொண்டது. இது PIM2, PIM3 மற்றும் PIM4 பேச்சுவழக்குகளுடன் ஒத்துப்போகும் கட்டிடக் குறியீட்டை ஆதரிக்கிறது, அத்துடன் அந்த மொழிக்கான ஏற்றுக்கொள்ளப்பட்ட ISO தரநிலையையும் ஆதரிக்கிறது.
  • ஜி.சி.சி.ஆர்.எஸ் திட்டத்தால் (ஜி.சி.சி ரஸ்ட்) தயாரிக்கப்பட்ட ரஸ்ட் மொழி தொகுப்பியை செயல்படுத்தும் முன்பகுதி ஜி.சி.சி மூல மரத்தில் சேர்க்கப்பட்டுள்ளது. தற்போதைய பார்வையில், forntend சோதனைக்குரியதாகக் குறிக்கப்பட்டு இயல்பாகவே முடக்கப்பட்டுள்ளது. முன்பக்கம் தயாரானதும் (அடுத்த வெளியீட்டில் எதிர்பார்க்கப்படுகிறது), LLVM மேம்பாடுகளைப் பயன்படுத்தி கட்டப்பட்ட rustc கம்பைலரை நிறுவ வேண்டிய அவசியமின்றி ரஸ்ட் நிரல்களைத் தொகுக்க நிலையான GCC கருவித்தொகுப்பைப் பயன்படுத்தலாம்.
  • லிங்க்-இன்-ஸ்டெப் ஆப்டிமைசேஷன் (எல்டிஓ) பல த்ரெட்களில் இணையான உருவாக்கத்தை மேம்படுத்துவதற்காக குனு மேக் ப்ராஜெக்ட்டால் பராமரிக்கப்படும் வேலை சேவையகத்திற்கான (ஜாப்சர்வர்) ஆதரவைச் சேர்க்கிறது. GCC இல், முழு நிரலின் (WPA, முழு நிரல் பகுப்பாய்வு) சூழலில் LTO தேர்வுமுறையின் போது வேலையை இணைப்பதற்கு ஜாப்சர்வர் பயன்படுத்தப்படுகிறது. பெயரிடப்பட்ட குழாய்கள் (--jobserver-style=fifo) ஜாப்சர்வருடன் தொடர்புகொள்வதற்கு முன்னிருப்பாகப் பயன்படுத்தப்படுகின்றன.
  • நிலையான பகுப்பாய்வி (-ஃபனாலைசர்) 20 புதிய கண்டறியும் சோதனைகளை வழங்குகிறது, இதில் "-வனாலைசர்-அவுட்-அவுட்-எல்லை", "-வானலைசர்-ஒதுக்கீடு-அளவு", "-வானலைசர்-டெரெஃப்-முன்-சரிபார்ப்பு", "-வனலைசர்- எல்லையற்றது. மறுநிகழ்வு" -Wanalyzer-Jump-thru-null", "-Wanalyzer-va-list-leak".
  • JSON ஐ அடிப்படையாகக் கொண்ட SARIF வடிவத்தில் கண்டறிதல்களை வெளியிடும் திறன் செயல்படுத்தப்பட்டுள்ளது. நிலையான பகுப்பாய்வு முடிவுகளை (GCC -fanalyzer) பெறவும், எச்சரிக்கைகள் மற்றும் பிழைகள் பற்றிய தகவலைப் பெறவும் புதிய வடிவமைப்பைப் பயன்படுத்தலாம். "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" என்ற விருப்பத்தின் மூலம் இயக்குதல் செய்யப்படுகிறது, இதில் "json" உடன் விருப்பத்தேர்வுகள் JSON வடிவமைப்பின் GCC-குறிப்பிட்ட மாறுபாட்டில் வெளிப்படும். .
  • பூஜ்ய சுட்டிகளை வரையறுப்பதற்கான nullptr மாறிலி போன்ற C23 C தரநிலையில் வரையறுக்கப்பட்ட சில அம்சங்களைச் செயல்படுத்தியது, மாறி எண்ணிக்கையிலான வாதங்களைக் கொண்ட பட்டியல்களைப் பயன்படுத்துவதை எளிதாக்குகிறது (variadic), enums, noreturn பண்புக்கூறுகளின் திறன்களை விரிவுபடுத்துகிறது, பயன்படுத்த அனுமதிக்கிறது constexpr மற்றும் auto ஆகியவை பொருட்களை வரையறுக்கும் போது, ​​வகை மற்றும் typeof_unqual, புதிய முக்கிய வார்த்தைகள் alignas, alignof, bool, false, static_assert, thread_local மற்றும் true, துவக்கத்தில் வெற்று அடைப்புக்குறிகளை அனுமதிக்கிறது.
  • C++23 தரநிலையில் வரையறுக்கப்பட்ட சில அம்சங்களைச் செயல்படுத்தியது, அதாவது கூட்டு வெளிப்பாடுகளின் முடிவில் மதிப்பெண்களை வைக்கும் திறன், char8_t வகையுடன் இணக்கம், #எச்சரிக்கை முன்செயலி உத்தரவு, (\u{}, \o{} மூலம் பிரிக்கப்பட்டது , \x{}), மற்றும் பெயரிடப்பட்ட ('\N{லத்தீன் கேபிட்டல் லெட்டர் A}') எஸ்கேப் சீக்வென்ஸ்கள், ஸ்டேடிக் ஆபரேட்டர்(), ஸ்டேடிக் ஆபரேட்டர்[], எக்ஸ்ப்ரெஷன்களுக்குள் சமத்துவ ஆபரேட்டர், constexpr ஐப் பயன்படுத்துவதில் சில கட்டுப்பாடுகள் தவிர, ஆதரவு மூல நூல்களில் UTF-8க்கு.
  • libstdc++ ஆனது C++20 மற்றும் C++23 தரநிலைகளுக்கான மேம்பட்ட சோதனை ஆதரவைக் கொண்டுள்ளது, அதாவது தலைப்பு கோப்பு ஆதரவைச் சேர்ப்பது போன்றவை மற்றும் std:: வடிவம், நீட்டிக்கப்பட்ட தலைப்பு கோப்பு திறன்கள் , கூடுதல் மிதக்கும் புள்ளி வகைகள் சேர்க்கப்பட்டன, தலைப்பு கோப்புகள் செயல்படுத்தப்பட்டன மற்றும் .
  • ஒரு முழு எண் மாறியில் கோப்பு விவரிப்பான் அனுப்பப்பட்டதற்கான ஆவணத்தில் புதிய செயல்பாட்டு பண்புக்கூறுகள் சேர்க்கப்பட்டன: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))", மற்றும் "__attribute__((fd_arg_write(N) )) ". குறிப்பிட்ட பண்புக்கூறுகள் ஒரு நிலையான பகுப்பாய்வியில் (-fanalyzer) கோப்பு விளக்கிகளுடன் தவறான வேலையைக் கண்டறியப் பயன்படுத்தலாம்.
  • ஒரு புதிய பண்புக்கூறு "__attribute__((அனுமானம்(EXPR)))" சேர்க்கப்பட்டுள்ளது, இதன் மூலம் நீங்கள் தொகுப்பாளரிடம் வெளிப்பாடு உண்மை என்று சொல்லலாம் மற்றும் தொகுப்பாளர் இந்த உண்மையை வெளிப்பாட்டை மதிப்பிடாமல் பயன்படுத்தலாம்.
  • கட்டமைப்புகளில் நெகிழ்வான வரிசை உறுப்பைச் செயலாக்கும் போது நடத்தையைத் தேர்ந்தெடுக்க "-fstrict-flex-arrays=[level]" கொடி சேர்க்கப்பட்டது (Flexible Array Members, கட்டமைப்பின் முடிவில் காலவரையற்ற அளவிலான ஒரு வரிசை, எடுத்துக்காட்டாக, "int b[] ").
  • கணக்கிடப்பட்ட வகைக்கும் முழு எண் வகைக்கும் இடையில் பொருந்தாமை இருந்தால் எச்சரிக்கைகளை வழங்க "-Wenum-int-mmatch" கொடி சேர்க்கப்பட்டது.
  • ஃபோர்ட்ரான் முன்-இறுதிக்கு முழு ஆதரவு உள்ளது.
  • பொதுவான செயல்பாடுகள் மற்றும் வகைகளுக்கான (ஜெனரிக்ஸ்) ஆதரவு Go மொழிக்கான முன் முனையில் சேர்க்கப்பட்டுள்ளது, மேலும் Go 1.18 மொழிக்கான தொகுப்புகளுடன் இணக்கத்தன்மை உறுதி செய்யப்பட்டுள்ளது.
  • AArch64 பின்தளத்தில் CPU ஆம்பியர்-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) மற்றும் Arm Neoverse V2 (நியோவர்ஸ் -v2) ஆகியவற்றை ஆதரிக்கிறது. . "armv9.1-a", "armv9.2-a" மற்றும் "armv9.3-a" வாதங்களுக்கான ஆதரவு "-march=" விருப்பத்தில் சேர்க்கப்பட்டுள்ளது. FEAT_LRCPC, FEAT_CSSC மற்றும் FEAT_LSE2 செயலி நீட்டிப்புகளுக்கான ஆதரவு சேர்க்கப்பட்டது.
  • STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c), மற்றும் Arm Cortex-M85 (cortex-m85) CPUகளுக்கான ஆதரவு ARM கட்டமைப்பு பின்தளத்தில் சேர்க்கப்பட்டுள்ளது.
  • Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids மற்றும் AMD Zen 86 (znver4) செயலிகளுக்கான ஆதரவு x4 பின்தளத்தில் சேர்க்கப்பட்டுள்ளது. இன்டெல் செயலிகளில் முன்மொழியப்பட்ட AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT மற்றும் AMX-COMPLEX இன்ஸ்ட்ரக்ஷன் செட் ஆர்கிடெக்சர் நீட்டிப்புகள் செயல்படுத்தப்பட்டுள்ளன. SSE2 உள்ள கணினிகளில் C மற்றும் C++ க்கு, __bf16 வகை வழங்கப்படுகிறது.
  • ஏஎம்டி ரேடியான் ஜிபியுக்களுக்கான (ஜிசிஎன்) குறியீடு உருவாக்க பின்தளமானது, ஓபன்எம்பி/ஓபன்ஏசிசி செயல்திறனை மேம்படுத்த, ஏஎம்டி இன்ஸ்டிங்க்ட் எம்ஐ200 முடுக்கிகளைப் பயன்படுத்தும் திறனை செயல்படுத்துகிறது. SIMD வழிமுறைகளைப் பயன்படுத்தி மேம்படுத்தப்பட்ட வெக்டரைசேஷன்.
  • LoongArch இயங்குதளத்திற்கான குறிப்பிடத்தக்க வகையில் விரிவாக்கப்பட்ட பின்தள திறன்கள்.
  • RISC-V பின்தளத்தில் CPU T-Head இன் XuanTie C906 (thead-c906)க்கான ஆதரவு சேர்க்கப்பட்டது. RISC-V வெக்டர் நீட்டிப்பு உள்ளார்ந்த 0.11 விவரக்குறிப்பில் வரையறுக்கப்பட்ட திசையன் கையாளுபவர்களுக்கான செயல்படுத்தப்பட்ட ஆதரவு. 30 RISC-V விவரக்குறிப்பு நீட்டிப்புகளுக்கான ஆதரவு சேர்க்கப்பட்டது.
  • "-பகிர்வு" விருப்பத்துடன் பகிரப்பட்ட பொருட்களை உருவாக்கும் போது, ​​"-Ofast", "-ffast-math" அல்லது "-funsafe-math-optimizations" மேம்படுத்தல்கள் இயக்கப்பட்டிருந்தால், மிதக்கும் புள்ளி சூழலைச் சேர்த்த பிறகு தொடக்கக் குறியீடு சேர்க்கப்படாது. .
  • DWARF பிழைத்திருத்த வடிவத்திற்கான ஆதரவு கிட்டத்தட்ட எல்லா கட்டமைப்புகளிலும் செயல்படுத்தப்படுகிறது.
  • Zstandard அல்காரிதத்தைப் பயன்படுத்தி பிழைத்திருத்தத் தகவலைச் சுருக்க "-gz=zstd" விருப்பம் சேர்க்கப்பட்டது. நீக்கப்பட்ட பிழைத்திருத்த தகவல் சுருக்க முறைக்கான ஆதரவு அகற்றப்பட்டது "-gz=zlib-gnu".
  • OpenMP 5.2 (Open Multi-Processing) க்கான ஆரம்ப ஆதரவு சேர்க்கப்பட்டது மற்றும் OpenMP 5.0 மற்றும் 5.1 தரநிலைகளை செயல்படுத்துதல் தொடர்கிறது, மல்டி-கோர் மற்றும் ஹைப்ரிட் (CPU + GPU / DSP) கணினிகளில் இணையான நிரலாக்க முறைகளைப் பயன்படுத்துவதற்கான APIகள் மற்றும் முறைகளை வரையறுக்கிறது. பகிர்ந்த நினைவகம் மற்றும் திசையன் அலகுகள் (SIMD).
  • 1980 களில் உருவாக்கப்பட்ட மற்றும் dbx பிழைத்திருத்தத்தில் பயன்படுத்தப்படும் மரபு STABS பிழைத்திருத்த தகவல் சேமிப்பக வடிவமைப்பிற்கான ஆதரவு மறுக்கப்பட்டது (-gstabs மற்றும் -gxcoff விருப்பங்களுடன் இயக்கப்பட்டது).
  • Solaris 11.3க்கான ஆதரவு நிறுத்தப்பட்டது (இந்த இயங்குதளத்தை ஆதரிக்கும் குறியீடு எதிர்கால வெளியீட்டில் அகற்றப்படும்).

ஆதாரம்: opennet.ru

கருத்தைச் சேர்