Programovanie

Kompilátory série GCC 10 prichádzajú s významnou aktualizáciou

GCC (GNU Compiler Collection) 10.1, hlavné vydanie platformy, bolo zverejnené 7. mája 2020 s hlavnými funkciami vrátane funkcií v C ++ 20 a podpory jazyka C2X. C2X je ďalšia významná revízia jazyka C, ktorá má vyjsť v roku 2022.

Poznámky k vydaniu pre GCC 10 ukazujú, že bolo implementovaných veľké množstvo funkcií v C ++ 20 vrátane povolenia priameho zostavenia vo funkciách constexpr a rozšírenia štruktúrovaných väzieb. Aj pre C ++ 20 umožňuje GCC 10 prevody na polia s neznámou hranicou, umožňuje triviálnu predvolenú inicializáciu v kontextoch constexpr, dodáva konštinitíva kľúčové slovo a zastáva podporuprchavý kľúčové slovo.

Pre C2X, pripravovanú revíziu normy ISO C, je pomocou syntaxe podporovaných niekoľko funkcií-std = c2x a -std + gnu2x. Medzi nimi sú strftime kontrola formátu podporujúca % OB a % Ob formáty a konštanty znakov UTF-8 pomocou syntaxe u8 ''.

GCC, ktoré existuje už viac ako 33 rokov, obsahuje klientske rozhrania a knižnice pre C, C ++, Fortran, Ada, Go a D. K portovaniu na GCC 10 bol zverejnený bulletin. Medzi ďalšie nové funkcie v GCC 10.1 patria

  • Boli pridané vstavané funkcie vrátane a has_builtin operátor predprocesora, ktorý sa dá použiť na dopytovanie podpory pre vstavané funkcie poskytované GCC a inými kompilátormi, ktoré ju podporujú.
  • Boli pridané možnosti príkazov. Tie obsahujú-fallocation-dce, na odstránenie nepotrebných párov Nový a vymazať prevádzkovatelia a -fanalyzátor, aby ste povolili nový prístup k statickej analýze a súvisiace varovania. Druhá možnosť by sa mala považovať za experimentálnu fázu.
  • Boli urobené vylepšenia medziprocesovej optimalizácie. Patrí medzi ne opätovná implementácia inter-procedurálneho skalárneho nahradenia agregátov (IPA-SRA), ktoré bolo opätovne implementované, aby fungovalo v čase prepojenia. IPA-SRA teraz môže tiež odstrániť výpočty a vracať nepoužité návratové hodnoty.
  • Vylepšenia optimalizácie prepojenia zahŕňajú nový binárny súbor skládka ito. Program môže ukladať rôzne informácie o LTO bajt objektový súbor.
  • Boli urobené vylepšenia optimalizácie založené na profiloch, vrátane zlepšenia údržby profilu počas kompilácie a rozdelenia za studena.
  • Pre rodinu C: prístup funkcie a typu boli pridané atribúty na opis toho, ako funkcia pristupuje k objektom, ktoré jej boli odovzdané pomocou ukazovateľa alebo odkazu, a na priradenie takýchto argumentov k celočíselným argumentom označujúcim veľkosť objektu. Atribút sa používa na umožnenie detekcie neplatných prístupov pomocou funkcií definovaných používateľom. Existujú aj nové varovania a vylepšenia existujúcich varovaní. Jedno varovanie, -Hranice dĺžky wzera, varuje pred prístupom k prvkom polí nulovej dĺžky, ktoré by sa mohli prekrývať s ostatnými členmi toho istého objektu.
  • Bola opravená nekompatibilita ABI medzi C ++ 14 a C ++ 17. Na niektoré ciele by bola trieda s podobjektom nulovej veľkosti odovzdaná nesprávne, ak by bola kompilovaná ako C ++ 17 alebo C ++ 20.
$config[zx-auto] not found$config[zx-overlay] not found