Programmēšana

GCC 10. sērijas kompilatori tiek būtiski uzlaboti

GCC (GNU Compiler Collection) 10.1, kas ir nozīmīgākais platformas izlaidums, tika publicēts 2020. gada 7. maijā, un tajā tika uzsvērti C ++ 20 iespējas un C2X valodas atbalsts. C2X ir nākamā lielā C valodas pārskatīšana, kas paredzēta 2022. gadā.

GCC 10 izlaiduma piezīmes parāda, ka ir ieviesti daudzi C ++ 20 līdzekļi, tostarp atļaujot inline montāžu constexpr funkcijās un strukturēto saistījumu paplašināšanu. Arī C ++ 20 gadījumā GCC 10 ļauj veikt pārveidojumus nezināmu saistījumu masīvos, ļauj triviālu noklusējuma inicializāciju kontekstuālajos kontekstos, pievieno ierobežot atslēgvārdu un novecogaistošs atslēgvārds.

C2X, kas ir gaidāmā ISO C standarta pārskatīšana, sintaksē tiek atbalstītas vairākas funkcijas-std = c2x un -std + gnu2x. Starp tiem ir strftime formāta pārbaude, kas atbalsta % OB un % Ob formāti un UTF-8 rakstzīmju konstantes, izmantojot u8 "sintaksi.

GCC, kas pastāv jau vairāk nekā 33 gadus, ietver C, C ++, Fortran, Ada, Go un D. priekšējos galus un bibliotēkas. Ir publicēts biļetens par pārnešanu uz GCC 10. Citas jaunas iespējas GCC 10.1 ietver:

  • Ir pievienotas iebūvētās funkcijas, tostarp a has_builtin pirmapstrādes procesors, kuru var izmantot, lai vaicātu iebūvēto funkciju atbalstu, ko nodrošina GCC un citi kompilatori, kas to atbalsta.
  • Komandas opcijas ir pievienotas. Tie ietver-vietojums-dce, lai noņemtu nevajadzīgos jauns un dzēst operatori un -fanalizators, lai iespējotu jaunu statiskās analīzes caurlaidi un saistītos brīdinājumus. Pēdējais variants jāuzskata par eksperimenta fāzi.
  • Tika veikti starpprocedūru optimizācijas uzlabojumi. Tie ietver starpprocedūru skalāru agregātu (IPA-SRA) caurlaides atkārtotu ieviešanu, kas tika atkārtoti ieviesta, lai darbotos saites laikā. IPA-SRA tagad var arī noņemt skaitļošanu un neizmantoto atgriešanās vērtību atgriešanu.
  • Saites laika optimizācijas uzlabojumi ietver jaunu bināru ito-dump. Programma var izmest dažādu informāciju par LTO baits objekta fails.
  • Ir veikti profila virzīti optimizācijas uzlabojumi, tostarp uzlabota profila uzturēšana sastādīšanas laikā un karstā / aukstā sadalīšana.
  • Attiecībā uz C ģimeni piekļuvi funkcija un tips Atribūts ir pievienots, lai aprakstītu, kā funkcija piekļūst objektiem, kas tai nodoti ar rādītāju vai atsauci, un lai saistītu šādus argumentus ar vesela skaitļa argumentiem, kas apzīmē objekta lielumu. Atribūts tiek izmantots, lai ar lietotāja definētām funkcijām varētu noteikt nederīgas piekļuves. Ir arī jauni brīdinājumi un esošo brīdinājumu uzlabojumi. Viens brīdinājums -Nulles garuma robežas, brīdina par piekļuvi nulles garuma masīvu elementiem, kas var pārklāties ar citiem tā paša objekta dalībniekiem.
  • Tika novērota ABI nesaderība starp C ++ 14 un C ++ 17. Dažiem mērķiem klase ar nulles lieluma apakšobjektu tiktu nodota nepareizi, ja to apkopotu kā C ++ 17 vai C ++ 20.
$config[zx-auto] not found$config[zx-overlay] not found