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 ప్రమాణాలకు అనుగుణంగా ఉండే బిల్డింగ్ కోడ్‌కు మద్దతు ఇస్తుంది.
  • gccrs ప్రాజెక్ట్ (GCC రస్ట్) ద్వారా తయారు చేయబడిన రస్ట్ లాంగ్వేజ్ కంపైలర్ అమలుతో ఒక ఫ్రంటెండ్ GCC సోర్స్ ట్రీకి జోడించబడింది. ప్రస్తుత వీక్షణలో, ఫోర్ంటెండ్ ప్రయోగాత్మకంగా గుర్తించబడింది మరియు డిఫాల్ట్‌గా నిలిపివేయబడింది. ఫ్రంటెండ్ సిద్ధమైన తర్వాత (తదుపరి విడుదలలో ఊహించబడింది), LLVM డెవలప్‌మెంట్‌లను ఉపయోగించి నిర్మించిన rustc కంపైలర్‌ను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేకుండా రస్ట్ ప్రోగ్రామ్‌లను కంపైల్ చేయడానికి ప్రామాణిక GCC టూల్‌కిట్‌ను ఉపయోగించవచ్చు.
  • లింక్-ఇన్-స్టెప్ ఆప్టిమైజేషన్ (LTO) బహుళ థ్రెడ్‌లలో సమాంతర బిల్డ్ ఎగ్జిక్యూషన్‌ను ఆప్టిమైజ్ చేయడానికి GNU మేక్ ప్రాజెక్ట్ ద్వారా నిర్వహించబడే జాబ్ సర్వర్ (జాబ్‌సర్వర్) కోసం మద్దతును జోడిస్తుంది. GCCలో, మొత్తం ప్రోగ్రామ్ (WPA, హోల్-ప్రోగ్రామ్ విశ్లేషణ) సందర్భంలో LTO ఆప్టిమైజేషన్ సమయంలో పనిని సమాంతరంగా చేయడానికి జాబ్‌సర్వర్ ఉపయోగించబడుతుంది. జాబ్‌సర్వర్‌తో కమ్యూనికేట్ చేయడానికి పేరున్న పైపులు (--jobserver-style=fifo) డిఫాల్ట్‌గా ఉపయోగించబడతాయి.
  • స్టాటిక్ ఎనలైజర్ (-ఫానలైజర్) 20 కొత్త డయాగ్నస్టిక్ చెక్‌లను అందిస్తుంది, వీటిలో "-వానలైజర్-అవుట్-ఆఫ్-హౌండ్స్", "-వానలైజర్-అలొకేషన్-సైజ్", "-వానలైజర్-డెరెఫ్-బిఫోర్-చెక్", "-వానలైజర్- అనంతం. -రికర్షన్" -వానలైజర్-జంప్-త్రూ-శూన్య", "-వానలైజర్-వా-లిస్ట్-లీక్".
  • JSON ఆధారంగా SARIF ఫార్మాట్‌లో డయాగ్నస్టిక్‌లను అవుట్‌పుట్ చేసే సామర్థ్యం అమలు చేయబడింది. స్టాటిక్ అనాలిసిస్ ఫలితాలను (GCC -fanalyzer) పొందడానికి, అలాగే హెచ్చరికలు మరియు లోపాల గురించి సమాచారాన్ని పొందడానికి కొత్త ఆకృతిని ఉపయోగించవచ్చు. "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" ఎంపికతో ప్రారంభించడం జరుగుతుంది, ఇక్కడ "json"తో ఎంపికలు JSON ఫార్మాట్ యొక్క GCC-నిర్దిష్ట వేరియంట్‌లో అవుట్‌పుట్‌కు దారితీస్తాయి. .
  • శూన్య పాయింటర్‌లను నిర్వచించడానికి nullptr స్థిరాంకం వంటి C23 C స్టాండర్డ్‌లో నిర్వచించబడిన కొన్ని లక్షణాలను అమలు చేసింది, ఇది వేరియబుల్ ఆర్గ్యుమెంట్‌ల సంఖ్య (వేరియాడిక్)తో జాబితాలను ఉపయోగించడం సులభతరం చేస్తుంది, enums యొక్క సామర్థ్యాలను విస్తరించడం, noreturn అట్రిబ్యూట్, వినియోగాన్ని అనుమతిస్తుంది constexpr మరియు స్వయంచాలకంగా ఆబ్జెక్ట్‌లను నిర్వచించేటప్పుడు, టైప్‌ఆఫ్ మరియు టైప్‌ఆఫ్_అన్‌క్వల్, కొత్త కీలకపదాలు అలైన్‌నాస్, అలైన్‌ఆఫ్, బూల్, ఫాల్స్, స్టాటిక్_అసర్ట్, థ్రెడ్_లోకల్ మరియు ట్రూ, ఇనిషియలైజేషన్‌లో ఖాళీ కుండలీకరణాలను అనుమతిస్తుంది.
  • 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) )) ". ఫైల్ డిస్క్రిప్టర్‌లతో తప్పు పనిని గుర్తించడానికి పేర్కొన్న లక్షణాలను స్టాటిక్ ఎనలైజర్ (-ఫానలైజర్)లో ఉపయోగించవచ్చు.
  • "__attribute__((ఊహించండి(EXPR)))" అనే కొత్త లక్షణం జోడించబడింది, దీనితో మీరు వ్యక్తీకరణ నిజమని కంపైలర్‌కి తెలియజేయవచ్చు మరియు వ్యక్తీకరణను మూల్యాంకనం చేయకుండా కంపైలర్ ఈ వాస్తవాన్ని ఉపయోగించవచ్చు.
  • స్ట్రక్చర్‌లలో ఫ్లెక్సిబుల్ అర్రే ఎలిమెంట్‌ను ప్రాసెస్ చేస్తున్నప్పుడు ప్రవర్తనను ఎంచుకోవడానికి "-fstrict-flex-arrays=[level]" ఫ్లాగ్ జోడించబడింది (ఫ్లెక్సిబుల్ అర్రే సభ్యులు, స్ట్రక్చర్ చివరిలో నిరవధిక పరిమాణ శ్రేణి, ఉదాహరణకు, "int b[] ").
  • లెక్కించబడిన రకం మరియు పూర్ణాంకం రకం మధ్య అసమతుల్యత ఉంటే హెచ్చరికలను జారీ చేయడానికి "-Wenum-int-mmatch" ఫ్లాగ్ జోడించబడింది.
  • ఫోర్ట్రాన్ ఫ్రంట్-ఎండ్‌కు ఖరారు చేయడానికి పూర్తి మద్దతు ఉంది.
  • గో భాష కోసం ఫ్రంట్ ఎండ్‌కు జెనరిక్ ఫంక్షన్‌లు మరియు రకాల (జెనరిక్స్) మద్దతు జోడించబడింది మరియు Go 1.18 భాష కోసం ప్యాకేజీలతో అనుకూలత నిర్ధారించబడింది.
  • AArch64 బ్యాకెండ్ CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) మరియు ఆర్మ్ నియోవర్స్ 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 ఆర్కిటెక్చర్ బ్యాకెండ్‌కు జోడించబడింది.
  • ఇంటెల్ రాప్టర్ లేక్, మెటోర్ లేక్, సియెర్రా ఫారెస్ట్, గ్రాండ్ రిడ్జ్, ఎమరాల్డ్ రాపిడ్స్, గ్రానైట్ రాపిడ్స్ మరియు AMD జెన్ 86 (znver4) ప్రాసెసర్‌లకు మద్దతు x4 బ్యాకెండ్‌కు జోడించబడింది. ఇంటెల్ ప్రాసెసర్‌లలో ప్రతిపాదించబడిన AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT మరియు AMX-COMPLEX సూచనల సెట్ ఆర్కిటెక్చర్ పొడిగింపులు అమలు చేయబడ్డాయి. SSE2తో సిస్టమ్‌లపై C మరియు C++ కోసం, __bf16 రకం అందించబడింది.
  • AMD Radeon GPUల (GCN) కోసం కోడ్ జనరేషన్ బ్యాకెండ్ OpenMP/OpenACC పనితీరును మెరుగుపరచడానికి AMD ఇన్‌స్టింక్ట్ MI200 యాక్సిలరేటర్‌లను ఉపయోగించగల సామర్థ్యాన్ని అమలు చేస్తుంది. 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 (ఓపెన్ మల్టీ-ప్రాసెసింగ్) కోసం ప్రారంభ మద్దతు జోడించబడింది మరియు OpenMP 5.0 మరియు 5.1 ప్రమాణాల అమలు కొనసాగింది, మల్టీ-కోర్ మరియు హైబ్రిడ్ (CPU + GPU / DSP) సిస్టమ్‌లపై సమాంతర ప్రోగ్రామింగ్ పద్ధతులను వర్తింపజేయడానికి APIలు మరియు పద్ధతులను నిర్వచించడం జరిగింది. షేర్డ్ మెమరీ మరియు వెక్టరైజేషన్ యూనిట్లు (SIMD).
  • లెగసీ STABS డీబగ్ ఇన్ఫర్మేషన్ స్టోరేజ్ ఫార్మాట్ (-gstabs మరియు -gxcoff ఎంపికలతో ఎనేబుల్ చేయబడింది) కోసం నిలిపివేయబడిన మద్దతు 1980లలో సృష్టించబడింది మరియు dbx డీబగ్గర్‌లో ఉపయోగించబడుతుంది.
  • Solaris 11.3కి మద్దతు నిలిపివేయబడింది (భవిష్యత్తు విడుదలలో ఈ ప్లాట్‌ఫారమ్‌కు మద్దతు ఇచ్చే కోడ్ తీసివేయబడుతుంది).

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి