Lëshimi i paketës së përpiluesit GCC 10

Pas një viti zhvillimi botuar lëshimi i një grupi kompajlerësh falas GCC 10.1, versioni i parë i madh në degën e re të GCC 10.x. Në përputhje me skemë e re numrat e lëshimit, versioni 10.0 u përdor në procesin e zhvillimit dhe pak para lëshimit të GCC 10.1, dega GCC 11.0 tashmë ishte degëzuar, mbi bazën e së cilës do të formohej versioni tjetër i rëndësishëm, GCC 11.1.

GCC 10.1 është i shquar për zbatimin e shumë inovacioneve në gjuhën C++ të zhvilluara për standardin C++20, përmirësimet që lidhen me standardin e ardhshëm të gjuhës C (C2x), optimizimet e reja në backend-et e kompajlerit dhe mbështetjen eksperimentale. modaliteti i analizës statikePër më tepër, në përgatitje për degën e re, projekti e migroi depon nga SVN në Git.

Kryesore Ndryshimet:

  • Shtuar modaliteti eksperimental i analizĂ«s statike "-fanalizues", e cila kryen analiza ndĂ«rprocedurale qĂ« kĂ«rkojnĂ« shumĂ« burime tĂ« shtigjeve tĂ« ekzekutimit tĂ« kodit dhe rrjedhave tĂ« tĂ« dhĂ«nave nĂ« njĂ« program. Modaliteti Ă«shtĂ« i aftĂ« tĂ« zbulojĂ« probleme nĂ« kohĂ«n e kompajlimit, siç janĂ« thirrjet e dyfishta nĂ« funksionin free() pĂ«r tĂ« njĂ«jtĂ«n zonĂ« memorieje, rrjedhjet e pĂ«rshkruesve tĂ« skedarĂ«ve, çreferencimi dhe kalimi i treguesve null, qasja nĂ« blloqe memorieje tĂ« liruara, pĂ«rdorimi i vlerave tĂ« painicializuara, etj. PĂ«rdorimi i modalitetit tĂ« ri pĂ«r kodin OpenSSL na ka lejuar tashmĂ« tĂ« identifikojmĂ« cenueshmĂ«ri e rrezikshme.
  • Optimizimet ndĂ«rprocedurale janĂ« pĂ«rmirĂ«suar. Kalimi IPA-SRA (ZĂ«vendĂ«simi Skalar NdĂ«rprocedural i Vlerave tĂ« PĂ«rbashkĂ«ta) Ă«shtĂ« rifaktorizuar pĂ«r t'u ekzekutuar nĂ« kohĂ«n e lidhjes dhe, ndĂ«r tĂ« tjera, tani heq vlerat e llogaritura dhe tĂ« kthyera tĂ« papĂ«rdorura. Opsioni -finline-functions Ă«shtĂ« aktivizuar nĂ« modalitetin e optimizimit -O2 dhe Ă«shtĂ« rikonfiguruar pĂ«r tĂ« favorizuar kodin kompakt mbi performancĂ«n e kohĂ«s sĂ« ekzekutimit. Heuristika e zhbĂ«rthimit tĂ« funksionit nĂ« linjĂ« Ă«shtĂ« pĂ«rshpejtuar. Heuristika e zhbĂ«rthimit dhe klonimit tĂ« funksionit nĂ« linjĂ« tani mund tĂ« pĂ«rdorĂ« informacionin e diapazonit pĂ«r tĂ« parashikuar efektivitetin e konvertimeve individuale. PĂ«r C++, saktĂ«sia e analizĂ«s sĂ« pseudonimeve tĂ« bazuara nĂ« lloj Ă«shtĂ« pĂ«rmirĂ«suar.
  • Optimizime tĂ« pĂ«rmirĂ«suara tĂ« kohĂ«s sĂ« lidhjes (LTO). U shtua njĂ« skedar i ri ekzekutues. lto-dump PĂ«r tĂ« rivendosur informacionin rreth skedarĂ«ve tĂ« objekteve me kod bajtesh LTO. NĂ« ekzekutimet paralele LTO, numri i detyrave tĂ« krijimit qĂ« ekzekutohen njĂ«kohĂ«sisht tani zbulohet automatikisht dhe, nĂ«se kjo nuk mund tĂ« pĂ«rcaktohet, numri i bĂ«rthamave tĂ« CPU-sĂ« pĂ«rdoret si faktor paralelizimi. ËshtĂ« shtuar kompresimi i kodit bajtesh LTO duke pĂ«rdorur algoritmin zstd.
  • Mekanizmi i Optimizimit tĂ« UdhĂ«zuar nga Profili (PGO) Ă«shtĂ« pĂ«rmirĂ«suar. Ai gjeneron kod mĂ« optimal bazuar nĂ« njĂ« analizĂ« tĂ« karakteristikave tĂ« ekzekutimit tĂ« kodit. Gjurmimi i profilit gjatĂ« pĂ«rpilimit dhe ndarja e kodit tĂ« nxehtĂ«/tĂ« ftohtĂ« janĂ« pĂ«rmirĂ«suar. NĂ«pĂ«rmjet "-vlerat-e-profilit» Tani mund tĂ« gjurmoni deri nĂ« 4 vlera profili, pĂ«r shembull pĂ«r thirrje indirekte dhe pĂ«r tĂ« ofruar informacion mĂ« tĂ« saktĂ« tĂ« profilit.
  • NjĂ« specifikim programimi paralel Ă«shtĂ« zbatuar pĂ«r C, C++ dhe Fortran. OpenACC 2.6, i cili pĂ«rcakton mjetet pĂ«r transferimin e operacioneve te GPU-tĂ« dhe procesorĂ«t e specializuar si NVIDIA PTX. Standardi Ă«shtĂ« pothuajse i pĂ«rfunduar. Hap MP 5.0 (Open Multi-Processing), i cili pĂ«rcakton API-nĂ« dhe metodat pĂ«r zbatimin e teknikave tĂ« programimit paralel nĂ« sisteme shumĂ«bĂ«rthamĂ«she dhe hibride (CPU+GPU/DSP) me memorie tĂ« pĂ«rbashkĂ«t dhe njĂ«si vektorizimi (SIMD). JanĂ« shtuar veçori tĂ« tilla si kushtĂ«zimi lastprivate, direktivat e skanimit dhe tĂ« loop-it, shprehjet order dhe use_device_addr. MbĂ«shtetja e shkarkimit pĂ«r OpenMP dhe OpenACC Ă«shtĂ« shtuar nĂ« GPU-tĂ« AMD Radeon (GCN) tĂ« gjeneratĂ«s sĂ« katĂ«rt (Fiji) dhe tĂ« gjeneratĂ«s sĂ« pestĂ« (VEGA 10/VEGA 20).
  • PĂ«r gjuhĂ«t e familjes C, funksioni "access" Ă«shtĂ« shtuar pĂ«r tĂ« pĂ«rshkruar aksesin e funksionit nĂ« objektet e kaluara me referencĂ« ose tregues, dhe pĂ«r tĂ« shoqĂ«ruar objekte tĂ« tilla me argumente tĂ« numrave tĂ« plotĂ« qĂ« pĂ«rmbajnĂ« informacion mbi madhĂ«sinĂ« e objektit. Atributi "type" Ă«shtĂ« zbatuar pĂ«r tĂ« punuar sĂ« bashku me "access" pĂ«r tĂ« zbuluar aksesin e pavlefshĂ«m nga funksionet e pĂ«rcaktuara nga pĂ«rdoruesi, siç Ă«shtĂ« kur shkruhen vlera nĂ« njĂ« zonĂ« jashtĂ« kufijve tĂ« njĂ« vargu. Atributi "symver" Ă«shtĂ« shtuar gjithashtu pĂ«r tĂ« shoqĂ«ruar simbolet nĂ« njĂ« skedar ELF me numra specifikĂ« versioni.
  • ParalajmĂ«rime tĂ« reja tĂ« shtuara:
    • "-Wstring-compare" (aktivizuar me "-Wextra") - ParalajmĂ«ron pĂ«r shprehjet nĂ« tĂ« cilat zero krahasohet me rezultatin e thirrjes sĂ« funksioneve strcmp dhe strncmp, qĂ« Ă«shtĂ« ekuivalente me njĂ« konstante pĂ«r shkak se gjatĂ«sia e njĂ« argumenti Ă«shtĂ« mĂ« e madhe se madhĂ«sia e vargut nĂ« argumentin e dytĂ«.
    • "-Wzero-length-bounds" (aktivizuar me "-Warray-bounds") - ParalajmĂ«ron pĂ«r aksesimin e elementĂ«ve tĂ« vargut me gjatĂ«si zero, gjĂ« qĂ« mund tĂ« çojĂ« nĂ« mbishkrimin e tĂ« dhĂ«nave tĂ« tjera.
    • ParalajmĂ«rimet "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" dhe "-Wstringop-overflow" janĂ« zgjeruar pĂ«r tĂ« pĂ«rfshirĂ« njĂ« gamĂ« mĂ« tĂ« gjerĂ« situatash jashtĂ« kufijve.
  • MundĂ«sia pĂ«r tĂ« specifikuar drejtpĂ«rdrejt karaktere tĂ« gjera nĂ« identifikues Ă«shtĂ« zbatuar, duke pĂ«rdorur kodimin aktual (UTF-8 si parazgjedhje) nĂ« vend tĂ« simbolit UCN (\uNNNN ose \UNNNNNNNNN). PĂ«r shembull:

    statike const int π = 3;
    int get_naĂŻve_pi() {
    kthe π;
    }

  • NjĂ« numĂ«r veçorish tĂ« reja tĂ« zhvilluara brenda standardit C2X janĂ« zbatuar pĂ«r gjuhĂ«n C (tĂ« aktivizuara duke specifikuar -std=c2x dhe -std=gnu2x): Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r sintaksĂ«n "[[]]" pĂ«r pĂ«rcaktimin e atributeve si nĂ« C++ (pĂ«r shembull, [[gnu::const]], [[deprecated]], [[fallthrough]] dhe [[maybe_unused]]. ËshtĂ« shtuar mbĂ«shtetje pĂ«r sintaksĂ«n "u8" pĂ«r pĂ«rcaktimin e konstanteve me karaktere UTF-8.
    Makro të reja janë shtuar në Zëvendësimet "%OB" dhe "%Ob" janë shtuar në strftime.
  • Modaliteti i parazgjedhur pĂ«r C Ă«shtĂ« "-fno-common", i cili lejon qasje mĂ« efikase nĂ« variablat globale nĂ« disa platforma.
  • C++ ka zbatuar afĂ«rsisht 16 ndryshime dhe inovacione, tĂ« zhvilluara nĂ« standardin C++20. KĂ«to pĂ«rfshijnĂ« shtimin e fjalĂ«s kyçe "constinit".
    dhe është zbatuar mbështetje për zgjerimet e shablloneve.konceptKonceptet ju lejojnë të përcaktoni një sërë kërkesash për parametrat e shabllonit që, në kohën e kompajlimit, kufizojnë sërën e argumenteve që mund të pranohen si parametra të shabllonit. Konceptet mund të përdoren për të shmangur mospërputhjet logjike midis vetive të llojeve të të dhënave të përdorura brenda një shablloni dhe vetive të llojeve të të dhënave të parametrave të hyrjes.
  • G++ tani zbulon sjellje tĂ« padefinuara tĂ« shkaktuara nga modifikimi i objekteve konstante nĂ«pĂ«rmjet constexpr. Konsumi i memories sĂ« kompiluesit gjatĂ« vlerĂ«simit tĂ« constexpr Ă«shtĂ« zvogĂ«luar. JanĂ« shtuar paralajmĂ«rime tĂ« reja, "-Wmismatched-tags" dhe "-Wredundant-tags".
  • JanĂ« propozuar opsione tĂ« reja tĂ« linjĂ«s sĂ« komandĂ«s:
    • "-fallocation-dce" pĂ«r tĂ« hequr çiftet e tepĂ«rta tĂ« operatorĂ«ve "i ri" dhe "fshij".
    • "-fprofile-partial-training" pĂ«r tĂ« çaktivizuar optimizimet e madhĂ«sisĂ« pĂ«r kodin qĂ« nuk i Ă«shtĂ« nĂ«nshtruar njĂ« ekzekutimi trajnimi.
    • -fprofile-i riprodhueshĂ«m pĂ«r tĂ« kontrolluar nivelin e riprodhueshmĂ«risĂ« sĂ« profilit.
    • "-fprofile-prefix-path" pĂ«r tĂ« pĂ«rcaktuar direktorinĂ« bazĂ« tĂ« ndĂ«rtimit nga burimi i pĂ«rdorur pĂ«r gjenerimin e profileve tĂ« veçanta (pĂ«r "-fprofile-generate=profile_dir" dhe "-fprofile-use=profile_dir").
  • Teksti paralajmĂ«rues pĂ«r opsionet e pĂ«rmendura tani shfaq hiperlidhje qĂ« çojnĂ« nĂ« dokumentacionin pĂ«r kĂ«to opsione. ZĂ«vendĂ«simi i URL-sĂ« kontrollohet nga opsioni "-fdiagnostics-urls".
  • Operatori i parapĂ«rpunuesit u shtua "__ka_integruar", i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« kontrolluar praninĂ« e funksioneve tĂ« integruara.
  • U shtua njĂ« funksion i ri i integruar "__builtin_roundeven" me njĂ« implementim tĂ« funksionit tĂ« rrumbullakosjes tĂ« pĂ«rcaktuar nĂ« specifikimin ISO/IEC TS 18661, i ngjashĂ«m me "round", por duke rrumbullakosur lart (nĂ« njĂ« vlerĂ« mĂ« tĂ« madhe) çdo pjesĂ« mĂ« tĂ« madhe se 0.5, poshtĂ« (nĂ« zero) çdo pjesĂ« mĂ« tĂ« vogĂ«l se 0.5, dhe bazuar nĂ« paritetin e shifrĂ«s sĂ« parafundit çdo pjesĂ« tĂ« barabartĂ« me 0.5.
  • PĂ«r arkitekturĂ«n AArch64, Ă«shtĂ« shtuar mbĂ«shtetja pĂ«r zgjerimin SVE2 dhe Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r SVE (Scalable Vector Extension), duke pĂ«rfshirĂ« mbĂ«shtetjen pĂ«r funksionet e integruara dhe llojet SVE ACLE, si dhe mbĂ«shtetjen pĂ«r vektorizimin. ËshtĂ« zgjeruar mbĂ«shtetja pĂ«r LSE (Large System Extensions) dhe TME (Transactional Memory Extension). JanĂ« shtuar udhĂ«zime tĂ« reja tĂ« prezantuara nĂ« Armv8.5-A dhe Armv8.6-A, duke pĂ«rfshirĂ« udhĂ«zime pĂ«r gjenerimin e numrave tĂ« rastĂ«sishĂ«m, rrumbullakosjen dhe lidhjen e etiketave tĂ« memories.
    bfloat16 dhe shumëzimi i matricave. Mbështetje e shtuar për CPU-në.
    Krahu Cortex-A77,
    Krahu Cortex-A76AE,
    Krahu Cortex-A65,
    Krahu Cortex-A65AE,
    Krahu Cortex-A34 dhe
    Marvell ThunderX3.
  • MbĂ«shtetja FDPIC ABI (treguesa funksionesh 64-bit) Ă«shtĂ« shtuar pĂ«r ARM32. Trajtimi i operacioneve tĂ« numrave tĂ« plotĂ« 64-bit Ă«shtĂ« ripunuar dhe optimizuar. ËshtĂ« shtuar mbĂ«shtetja pĂ«r CPU-nĂ«.
    Krahu Cortex-A77,
    Krahu Cortex-A76AE dhe
    Arm Cortex-M35P. MbĂ«shtetje e zgjeruar pĂ«r udhĂ«zimet e pĂ«rpunimit tĂ« tĂ« dhĂ«nave ACLE, duke pĂ«rfshirĂ« SIMD 32-bit, shumĂ«zimin 16-bit, aritmetikĂ«n min/max dhe optimizime tĂ« tjera tĂ« algoritmeve DSP. ËshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r udhĂ«zimet ACLE CDE (Custom Datapath Extension).
  • Gjenerimi i kodit dhe vektorizimi nĂ« backend janĂ« pĂ«rmirĂ«suar ndjeshĂ«m pĂ«r GPU-tĂ« AMD bazuar nĂ« mikroarkitekturĂ«n GCN.
  • MbĂ«shtetja pĂ«r pajisjet e ngjashme me XMEGA Ă«shtĂ« shtuar pĂ«r arkitekturĂ«n AVR.
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608 ATmega1609, ATmega3208, ATmega3209, ATmega4808 dhe ATmega4809.
  • NjĂ« zgjerim i ri i arkitekturĂ«s sĂ« setit tĂ« udhĂ«zimeve tĂ« Intel, ENQCMD (-menqcmd), Ă«shtĂ« shtuar pĂ«r arkitekturat IA-32/x86-64. ËshtĂ« shtuar mbĂ«shtetje pĂ«r CPU-tĂ« Intel Cooperlake (-march=cooperlake, aktivizon zgjerimin AVX512BF16 ISA) dhe Tigerlake (-march=tigerlake, aktivizon zgjerimet MOVDIRI, MOVDIR64B dhe AVX512VP2INTERSECT ISA).
  • Implementimi i GjuhĂ«s sĂ« NdĂ«rmjetme tĂ« ArkitekturĂ«s sĂ« Sistemit Heterogjen (HSAIL) pĂ«r sisteme llogaritĂ«se heterogjene bazuar nĂ« arkitekturĂ«n HSA Ă«shtĂ« vjetĂ«ruar dhe ka tĂ« ngjarĂ« tĂ« hiqet nĂ« njĂ« version tĂ« ardhshĂ«m.

Burimi: opennet.ru

Bleni njĂ« host tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, serverĂ« VPS VDS đŸ”„ Bleni hosting tĂ« besueshĂ«m tĂ« faqeve tĂ« internetit me mbrojtje DDoS, servera VPS VDS | ProHoster