GCC 11.1 jau ir izlaists, tie ir tā vissvarīgākie jaunumi un izmaiņas

Pēc gada attīstības Izlaista GCC 11.1 kompilatoru komplekta jaunā versija, pirmais nozīmīgais izlaidums jaunajā GCC 11.x filiālē. Saskaņā ar jauno versiju numerācijas shēmu izstrādes laikā tika izmantota versija 11.0, un neilgi pirms GCC 11.1 izlaišanas GCC 12.0 filiāle jau bija izveidota, lai izveidotu nākamo galveno GCC 12.1 versiju.

GCC 11.1 izceļas ar pāreju uz noklusējuma atkļūdošanas faila formātu DWARF 5, noklusējuma iekļaušana C ++ 17 standartā ("-std = gnu ++ 17"), būtiski uzlabojumi saderībā ar C ++ 20 standartu, eksperimentāls atbalsts C ++ 23, uzlabojumi, kas saistīti ar nākotnes standartu C valoda (C2x), jaunas veiktspējas optimizācijas.

GCC 11.1 Galvenās jaunās funkcijas

C ++ valodas noklusējuma režīms tiek mainīts, lai izmantotu C ++ 17 standartu, iepriekš piedāvātā C ++ 14 vietā. Apstrādājot veidnes, kas kā parametru izmanto citas veidnes (-fno-new-ttp-matching), var selektīvi atspējot jauno C ++ 17 uzvedību.

Pievienots atbalsts aparatūras paātrināšanai no rīka AddressSanitizer, kas ļauj noteikt faktus, kā piekļūt atbrīvotajām atmiņas zonām, pārsniedzot piešķirtā bufera robežas, un dažu citu veidu kļūdas, strādājot ar atmiņu. Aparatūras paātrinājums pašlaik ir pieejams tikai AArch64 arhitektūrai un koncentrējas uz tā izmantošanu, sastādot Linux kodolu.

Vēl viens jaunums, kas tiek prezentēts, ir optimizācijas un uzlabojumi starp procedūrām, jo ​​tika pievienota jauna IPA-modref caurlaide (-fipa-modref), lai izsekotu blakusparādības funkciju izsaukumos un uzlabotu analīzes precizitāti. Bez tam arī a uzlabota IPA-ICF caurlaides ieviešana (-fipa-icf), kas samazina kompilācijas atmiņas patēriņu un palielina vienoto funkciju skaitu, kurām ir apvienoti identiski koda bloki.

El ar profilu virzīts optimizācijas dzinējs (PGO), uzlabots režīms "-profila vērtības" izsekojot vairāk parametru netiešajiem zvaniem.

arī Tiek uzsvērta OpenMP 5.0 standarta turpināšana (Open Multi-Processing), kurā pievienots sākotnējais atbalsts piešķiršanas direktīvai un iespēja izmantot neviendabīgas cilpas OpenMP būvējumos. Tagad tiek atbalstīts vides mainīgais OMP_TARGET_OFFLOAD.

Ir uzlabota C, C ++ un Fortran valodām paredzētās paralēlās programmēšanas specifikācijas OpenACC 2.6 ieviešana, kas nosaka rīkus operāciju pārsūtīšanai uz GPU un specializētiem procesoriem, piemēram, NVIDIA PTX.

C saimes valodām ir ieviests jauns atribūts "no_stack_protector", paredzēti funkciju atzīmēšanai, kurām nav jāiespējo kaudzes aizsardzība ("-fstack-protector"). Atribūts "malloc" ir paplašināts ar atbalstu zvanu pāru noteikšanai, lai piešķirtu un atbrīvotu atmiņu, kas tiek izmantots statiskajā parsatorā, lai noteiktu tipiskas atmiņas kļūdas (atmiņas noplūdes, lietošana pēc bezmaksas, dubultas izsaukšanas uz bezmaksas funkciju utt.) un kompilatora brīdinājumi "-Wmismatched-dealloc", "-Wmismatched- new-delete" un " - ziņošana par nekonsekventu darījumu izvietošanu un darījumu izvietošanu bez maksas, bez objekta ".

Ģenerējot atkļūdošanas informāciju, pēc noklusējuma tiek izmantots DWARF 5 formāts, kas, salīdzinot ar iepriekšējām versijām, ļauj ģenerēt atkļūdošanas datus, kas ir par 25% kompaktāki. Lai pilnībā atbalstītu DWARF 5, binutils prasa vismaz 2.35.2 versiju.

Uzlabotās ThreadSanitizer režīma iespējas (-fsanitize = pavediens), jo jāe pievieno atbalstu alternatīviem izpildlaikiem un vidēm, kā arī atbalsts Kernel Concurrency Sanitizer (KCSAN) atkļūdošanas rīkam, lai dinamiski noteiktu sacensību apstākļus Linux kodolā. Ir pievienotas jaunas iespējas "–param tsan-atšķirt-nepastāvīgs" un "-param tsan-instruments-func-entry-exit".

Vektorizators nodrošina visa funkcijas satura uzskaiti un iespēju papildu apstrādi, kas saistītas ar krustojumiem, un atsauces uz iepriekšējiem blokiem vadības plūsmas diagrammā (CFG).

Optimizētājs spēj pārveidot virkni nosacītu darbību izmaiņu izteiksmē, kurā salīdzina to pašu mainīgo. Nākotnē izmaiņu izteiksmi var kodēt, izmantojot bitu testa instrukcijas (lai kontrolētu šo pārveidošanu, ir pievienota opcija "-fbit-tests").

Attiecībā uz C ++ ir ieviesta daļa izmaiņu un jauninājumu, kas ierosināti C ++ 20 standartā, tostarp virtuālās funkcijas "consteval virtual", pseido-iznīcinātāji objektu dzīves cikla izbeigšanai, izmantojot enum klasi un aprēķinot masīva izmērs izteiksmē "jauns".

Ja vēlaties uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt sadaļā šo saiti. 


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.