GCC 11.1 is al uitgebracht, dit zijn het belangrijkste nieuws en wijzigingen

Na een jaar van ontwikkeling GCC 11.1 compilersuite nieuwe versie uitgebracht, de eerste belangrijke release in de nieuwe GCC 11.x-tak. Onder het nieuwe versienummeringsschema werd versie 11.0 gebruikt tijdens de ontwikkeling en kort voor de release van GCC 11.1 was een tak van GCC 12.0 al gevorkt om de volgende hoofdversie van GCC 12.1 te vormen.

GCC 11.1 valt op door de overgang naar het standaard debug-bestandsformaat DWARF 5, de standaard opname van de C ++ 17-standaard ("-std = gnu ++ 17"), significante verbeteringen in compatibiliteit met de C ++ 20-standaard, experimentele ondersteuning voor C ++ 23, verbeteringen gerelateerd aan de toekomstige standaard C taal (C2x), nieuwe prestatie-optimalisaties.

GCC 11.1 Belangrijkste nieuwe functies

De standaardmodus voor de C ++ -taal is gewijzigd om de C ++ 17-standaard te gebruiken, in plaats van de eerder voorgestelde C ++ 14. Het is mogelijk om het nieuwe C ++ 17-gedrag selectief uit te schakelen bij het verwerken van sjablonen die andere sjablonen gebruiken als parameter (-fno-new-ttp-matching).

Ondersteuning toegevoegd voor hardwareversnelling van de AddressSanitizer-tool, waarmee u de feiten kunt bepalen van het benaderen van vrijgekomen geheugengebieden, het overschrijden van de limieten van de toegewezen buffer en enkele andere soorten fouten bij het werken met geheugen. Hardwareversnelling is momenteel alleen beschikbaar voor de AArch64-architectuur en richt zich op het gebruik ervan bij het compileren van de Linux-kernel.

Een andere nieuwigheid die wordt gepresenteerd, zijn de optimalisaties en verbeteringen tussen procedures, aangezien een nieuwe IPA-modref-pas is toegevoegd (-fipa-modref) om bijwerkingen bij functieaanroepen te volgen en de nauwkeurigheid van de analyse te verbeteren. Behalve ook een verbeterde implementatie van de IPA-ICF-pas (-fipa-icf), waardoor het compilatiegeheugenverbruik wordt verminderd en het aantal uniforme functies wordt verhoogd waarvoor identieke codeblokken worden samengevoegd.

El profielgestuurde optimalisatie-engine (PGO), verbeterde "-fprofile-values" -modus door meer parameters bij te houden voor indirecte oproepen.

ook De voortgezette implementatie van de OpenMP 5.0-standaard wordt benadrukt (Open Multi-Processing), waarin aanvankelijke ondersteuning toegevoegd voor toewijzingsrichtlijnen en de mogelijkheid om niet-uniforme lussen te gebruiken in OpenMP builds. De omgevingsvariabele OMP_TARGET_OFFLOAD wordt nu ondersteund.

De implementatie van de OpenACC 2.6-specificatie voor parallel programmeren voor de talen C, C ++ en Fortran, die tools definieert voor het overzetten van bewerkingen naar GPU's en gespecialiseerde processors zoals NVIDIA PTX, is verbeterd.

Voor de talen van de C-familie is een nieuw attribuut "no_stack_protector" geïmplementeerd, ontworpen om functies te markeren waarvoor stapelbeveiliging niet moet worden ingeschakeld ("-fstack-protector"). Het "malloc" -attribuut is uitgebreid met ondersteuning voor het identificeren van paren aanroepen om geheugen toe te wijzen en vrij te maken, die wordt gebruikt in de statische parser om typische geheugenfouten te detecteren (geheugenlekken, gebruik na gratis, dubbele aanroepen naar vrije functie, enz.) en compileerwaarschuwingen "-Wmismatched-dealloc", "-Wmismatched- new-delete" en " -Wfree-nonheap-object "rapporteert inconsistente deallocation- en deallocation-operaties.

Bij het genereren van foutopsporingsinformatie wordt standaard het DWARF 5-formaat gebruikt, waardoor, in vergelijking met eerdere versies, foutopsporingsgegevens kunnen worden gegenereerd die 25% compacter zijn. Volledige DWARF 5-ondersteuning vereist binutils ten minste versie 2.35.2.

Verbeterde mogelijkheden van de ThreadSanitizer-modus (-fsanitize = thread), want jae voegt ondersteuning toe voor alternatieve looptijden en omgevingen, evenals ondersteuning voor de Kernel Concurrency Sanitizer (KCSAN) foutopsporingstool om racecondities binnen de Linux-kernel dynamisch te detecteren. Nieuwe opties "–param tsan-distinct-volatile" en "–param tsan-instrument-func-entry-exit" zijn toegevoegd.

De vectorizer zorgt voor de boekhouding van alle inhoud van de functie en de aanvullende verwerking van de mogelijkheden die zijn gekoppeld aan de kruispunten en verwijzingen naar eerdere blokken in het controlestroomschema (CFG).

De optimizer heeft de mogelijkheid om een ​​reeks voorwaardelijke bewerkingen om te zetten in een wijzigingsuitdrukking, waarin dezelfde variabele wordt vergeleken. In de toekomst kan de wijzigingsuitdrukking worden gecodeerd met behulp van bit-testinstructies (om deze conversie te controleren is de optie "-fbit-tests" toegevoegd).

Voor C ++ is een deel van de veranderingen en innovaties die zijn voorgesteld in de C ++ 20-standaard geïmplementeerd, inclusief de virtuele functies "consteval virtual", pseudo-vernietigers voor het beëindigen van de levenscyclus van objecten, met behulp van de enum-klasse en het berekenen van de grootte van een array in de uitdrukking "nieuw".

Als je er meer over wilt weten, kunt u de details inchecken de volgende link. 


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.