GCC 16

GCC 16

Pēc gada izstrādes publicēts brīvas kompilatoru komplekta izdošana GCC 16.1, pirmais nozīmīgais izdošana jaunajā GCC 16.x zarā. Saskaņā ar izdošanas numuru shēmu, versija 16.0 tika izmantota izstrādes procesā, bet neilgi pirms GCC 16.1 izdošanas jau tika izveidots zars GCC 17.0, uz kura bāzes tiks veidots nākamais nozīmīgais izdevums GCC 17.1.

īpašības izmaiņas:

  • C++ valodas noklusējuma režīms ir pārslēgts uz C++20 (GNU C++20 dialekts, -std=gnu++20) tā vietā, lai iepriekš būtu piedāvāts C++17. C++20 ieviešana standarta bibliotēkā ir paziņota par stabilu.
  • Tika iekļauts eksperimentāls priekšgala ga68 programmu kompilēšanai Algol 68 programmēšanas valodā.
  • Tika pievienota iespēja diagnostikas informācijas izvadīšanai HTML formātā. Tika paplašināta informācija par programmas izpildes gaitu, kas iekļauta diagnostikas izvadē formātā SARIF, pamatojoties uz JSON (atbalsts «-fdiagnostics-format=json» ir beidzies).
  • Tika paplašinātas optimizācijas sasaistīšanas posmā (LTO, Link-Time Optimization). Tika pievienota opcija «-flto-toplevel-asm-heuristics», kas iekļauj heuristiku, lai uzlabotu koda optimizāciju ar asamblejas ievadījumiem. Spekulatīvās devirtuālizācijas tehnika (-fdevirtualize-speculatively) tagad nav ierobežota ar virtuālo metožu pārveidošanu un var tikt pielietota, pārveidojot tiešos izsaukumus jebkuriem netiešiem funkciju izsaukumiem, piemēram, izsaukumiem, izmantojot rādītājus.
  • Tika īstenota ciklu vektorizācijas atbalsts, ja kompilācijas posmā nav zināms iterāciju skaits. Tika paaugstināta efektivitāte priekšlaicīgai iziešanai no cikla (piemēram, izmantojot break).
  • Pievienota eksperimentālā atbalsta funkcionalitāte daudzu iespēju aga apstiprinātā standarta C++26. Piemēram, tika īstenotas:
    • Refleksija (Reflection, «-freflection»), kas ļauj izsekot un modificēt programmas elementus kompilācijas posmā. Tika pievienoti jauni operatori «^^ (open-std.org)» meta-informācijas iegūšanai par gramatikas konstrukciju un «[:…:]« atpakaļpārveidošanai. Lai pārveidotu un apstrādātu iegūto informāciju, tika piedāvāta std::meta bibliotēka un ir pieejamas tādas iespējas kā aprēķini ar konstantēm.
    • Līgumu programmēšana (Līgumi), kas ļauj noteikt oficiālās specifikācijas saskarnēm, izmantojot trīs jaunus operatorus: pre (priekšnosacījums), post (pēcnosacījums) un contract_assert (apstiprināšanas pārbaude). Operators «pre» nosaka priekšnosacījumus, kas jāizpilda pirms izsaukuma (ievades datu pārbaude); «post» — nosacījumus, kas jāievēro pēc izpildes (izejas datu prasības); contract_assert — izņēmumu radīšanas nosacījumus. Iespēja parādīsies GCC 16.
    • Operators «template for» elementu, piemēram, parametru pakotņu, tuple objektu un refleksijas rezultātu (metaobjektu), pārskatīšanai kompilācijas laikā parastā cikla stilā. Izpildot «template for», cikla ķermenis tiek atklāts katram elementam, un katra iterācija tiek apstrādāta atsevišķā redzes laukā, kurā cikla sekvences elements ir konstante katrai iterācijai un var piedalīties konstantes izteiksmēs (constexpr). Reflexijas kontekstā «template for» var tikt pielietots, lai pārlūkotu klases vai enumerāciju īpašības.
    • Bibliotēka std::simd datu operāciju izpildes paralelēšanai, izmantojot SIMD instrukciju kopas, piemēram, AVX-512 un NEON, ar standarta C++ tipa sistēmas izmantošanu.
    • Bibliotēkas std::inplace_vector, std::optional<T&>, std::copyable_function, std::function_ref, std::indirect, std::polymorphic un std::owner_equal.
  • Ir ieviesti iespējas, kas saistītas ar C++23 standartu, piemēram, explicit objektu dzīves cikla pārvaldība un atbalsts diagnostisko ziņojumu simbolu kodēšanas norādījumi.
  • Tika paplašināta atbalsta sniegšana standarts C23 (opennet.ru), piemēram, ir ieviesta iespēja izmantot atribūtu «counted_by» rādītāju pareizības pārbaudei.
  • Turpināta standartu ieviešana OpenMP 5.0, 5.1, 5.2 un 6.0 (Open Multi-Processing), kas nosaka API un veidus, kā piemērot paralēlā programmēšanas metodes daudzkodolu un hibrīdās (CPU+GPU/DSP) sistēmās ar kopīgu atmiņu un SIMD vektorizācijas blokiem. Uzlabota paralēlā programmēšana specifikāciju ieviešana OpenACC 3.0, 3.3 un 3.4, kas nosaka līdzekļus operāciju (offloading) īpašu procesoru un GPU, piemēram, NVIDIA PTX, izpildei.
  • X86 arhitektūras backendā ir pievienots atbalsts AMD procesoriem, kas balstīti uz Zen6 mikroarhitektūras (-march=znver6), kā arī Intel Wildcat Lake (-march=wildcatlake) un Nova Lake (-march=novalake) procesoriem.
  • GPU AMD Radeon (GCN) koda ģenerēšanas aizmugurē ir ieviesta atbalsts AMD Instinct MI300 (gfx942) paātrinātājiem.
  • Architektūrām RISC-V, ARM, S/390 un LoongArch ir ieviests atbalsts tipam „_BitInt (N)” veselu skaitļu definēšanai ar noteiktu bitu skaitu.

Avots: linux.org.ru

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster