Нашри маҷмӯи компилятори GCC 13

Пас аз як соли рушд, нашри маҷмӯи компилятори ройгони GCC 13.1 бароварда шуд, ки аввалин нашри муҳим дар филиали нави GCC 13.x. Тибқи нақшаи рақамгузории нави релиз, версияи 13.0 ҳангоми таҳия истифода мешуд ва чанде пеш аз нашри GCC 13.1, филиали GCC 14.0 аллакай ҷудо шуда буд, ки аз он версияи муҳими навбатии GCC 14.1 ташаккул меёбад.

Тағйироти асосӣ:

  • GCC барои сохтани барномаҳо бо забони барномасозии Modula-2 як феҳрист қабул кард. Он рамзи сохтмонро, ки ба лаҳҷаҳои PIM2, PIM3 ва PIM4 мувофиқат мекунад ва инчунин стандарти қабулшудаи ISO барои ин забонро дастгирӣ мекунад.
  • Ба дарахти сарчашмаи GCC як фронтенд бо татбиқи компилятори забони Rust, ки аз ҷониби лоиҳаи gccrs (GCC Rust) таҳия шудааст, илова карда шудааст. Дар намуди ҷорӣ, forntend ҳамчун таҷрибавӣ қайд карда мешавад ва бо нобаёнӣ ғайрифаъол аст. Пас аз он ки интерфейс омода аст (дар нашри навбатӣ интизор меравад), асбоби стандартии GCC метавонад барои тартиб додани барномаҳои Rust бидуни насб кардани компилятори rustc, ки бо истифода аз таҳияҳои LLVM сохта шудааст, истифода шавад.
  • Оптимизатсияи Link-in-Step (LTO) ба сервери корӣ (сервери корӣ), ки аз ҷониби лоиҳаи GNU make нигоҳ дошта мешавад, барои оптимизатсияи иҷрои параллелӣ дар риштаҳои сершумор дастгирӣ мекунад. Дар GCC, сервери корӣ барои параллелизатсияи кор ҳангоми оптимизатсияи LTO дар заминаи тамоми барнома истифода мешавад (WPA, Таҳлили тамоми барнома). Қубурҳои номбаршуда (--jobserver-style=fifo) ба таври нобаёнӣ барои ҳамкорӣ бо сервери корӣ истифода мешаванд.
  • Анализатори статикӣ (-fanalyzer) 20 санҷиши нави ташхисиро пешниҳод мекунад, аз ҷумла "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-for-check", "-Wanalyzer- infinite" -рекурсия" -Wanalyzer-ҷаҳида-нөл", "-Wanalyzer-va-list-leak".
  • Имконияти баровардани ташхис дар формати SARIF дар асоси JSON амалӣ карда шудааст. Формати нав метавонад барои ба даст овардани натиҷаҳои таҳлили статикӣ (GCC -fanalyzer), инчунин барои гирифтани маълумот дар бораи огоҳиҳо ва хатогиҳо истифода шавад. Фаъолсозӣ бо интихоби "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" анҷом дода мешавад, ки дар он имконоти дорои "json" дар варианти хоси GCC формати JSON бароварда мешаванд. .
  • Амалисозии баъзе хусусиятҳое, ки дар стандарти C23 C муайян шудаанд, ба монанди доимии nullptr барои муайян кардани нишондиҳандаҳои нул, осон кардани истифодаи рӯйхатҳо бо шумораи тағирёбандаи аргументҳо (вариадикӣ), васеъ кардани имкониятҳои рақамҳо, атрибути noreturn, имкон медиҳад, ки истифодаи constexpr ва auto ҳангоми муайян кардани объектҳо, typeof ва typeof_unqual, калимаҳои нави калидӣ alignas, alignof, bool, false, static_assert, thread_local ва true, имкон медиҳанд, ки қавсҳои холӣ ҳангоми оғозёбӣ.
  • Амалисозии баъзе хусусиятҳое, ки дар стандарти C++ 23 муайян шудаанд, аз қабили қобилияти гузоштани аломатҳо дар охири ифодаҳои мураккаб, мутобиқат бо навъи char8_t, дастури #warning просессор, ки бо (\u{}, \o{} ҷудо карда шудааст) , \x{}) ва номдор ('\N{ЛАТИНИИ ХАРФИ A}') пайдарпайии наҷот, оператори статикӣ(), оператори статикӣ[], оператори баробарӣ дар дохили ифодаҳо, ба истиснои баъзе маҳдудиятҳо оид ба истифодаи constexpr, дастгирӣ барои UTF-8 дар матнҳои сарчашма.
  • Дастгирии мукаммали таҷрибавӣ барои стандартҳои C++20 ва C++23 дар libstdc++, ба монанди илова кардани дастгирии файли сарлавҳа ва std :: формат, имкониятҳои файли сарлавҳаи васеъ , намудҳои иловагии нуқтаи шинокунанда илова карда шуданд, файлҳои сарлавҳа амалӣ карда шуданд Ва .
  • Ба ҳуҷҷате, ки дескриптори файл дар як тағирёбандаи бутун интиқол дода мешавад, атрибутҳои функсияи нав илова карда шуданд: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N))) ва "__attribute__((fd_arg_write(N)) ))". Атрибутҳои муайяншударо метавон дар анализатори статикӣ (-fanalyzer) барои ошкор кардани кори нодуруст бо дескрипторҳои файл истифода бурд.
  • Аттрибути нави "__attribute__((фарз (EXPR)))" илова карда шуд, ки бо он шумо метавонед ба мураттиб бигӯед, ки ифода дуруст аст ва компилятор метавонад ин далелро бидуни баҳодиҳии ифода истифода барад.
  • Иловаи "-fstrict-flex-arrays=[level]" барои интихоби рафтор ҳангоми коркарди элементи массиви чандир дар сохторҳо (Аъзоёни массиви чандир, массиви андозаи номуайян дар охири сохтор, масалан, "int b[] ").
  • Илова кардани парчами "-Wenum-int-mismatch" барои додани огоҳӣ дар сурати мавҷуд набудани номувофиқатӣ байни навъи номбаршуда ва навъи бутун.
  • Пешниҳоди Fortran барои анҷомёбӣ пурра дастгирӣ мекунад.
  • Дастгирии функсияҳо ва намудҳои умумӣ (генерикӣ) ба фронти забони Go илова карда шуд ва мутобиқат бо бастаҳо барои забони Go 1.18 таъмин карда шуд.
  • AArch64 пуштибони CPU Ampere-1A (ampere1a), Arm Cortex-A715 (kortex-a715), Arm Cortex-X1C (кортекс-x1c), Arm Cortex-X3 (кортекс-x3) ва Arm Neoverse V2 (neoverse -v2) -ро дастгирӣ мекунад. . Дастгирии далелҳои "armv9.1-a", "armv9.2-a" ва "armv9.3-a" ба варианти "-march=" илова карда шудааст. Дастгирии иловашуда барои васеъшавии протсессори FEAT_LRCPC, FEAT_CSSC ва FEAT_LSE2.
  • Дастгирии CPU-ҳои STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) ва Arm Cortex-M85 (cortex-m85) ба пушти меъмории ARM илова карда шудааст.
  • Дастгирии Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids ва AMD Zen 86 (znver4) ба пуштибонии x4 илова карда шудааст. Васеъкуниҳои меъмории маҷмӯи дастурҳои AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ва AMX-COMPLEX, ки дар протсессори Intel пешниҳод шудаанд, амалӣ карда шуданд. Барои C ва C++ дар системаҳои дорои SSE2, навъи __bf16 пешбинӣ шудааст.
  • Пойгоҳи тавлиди код барои GPUs AMD Radeon (GCN) қобилияти истифодаи суръатбахшии AMD Instinct MI200-ро барои беҳтар кардани иҷрои OpenMP/OpenACC амалӣ мекунад. Векторизатсияи беҳтаршуда бо истифода аз дастурҳои SIMD.
  • Имкониятҳои пуштибонии платформаи LoongArch ба таври назаррас васеъ карда шуданд.
  • Дастгирии иловашуда барои CPU T-Head XuanTie C906 (thead-c906) дар пуштибонии RISC-V. Дастгирии амалӣ барои коркардкунандагони вектор, ки дар мушаххасоти RISC-V Vector Extension Intrinsic 0.11 муайян шудааст. Дастгирии иловашуда барои 30 васеъкунии мушаххасоти RISC-V.
  • Ҳангоми тавлиди объектҳои муштарак бо опсияи "-shared", рамзи оғозёбӣ пас аз илова кардани муҳити нуқтаи шинокунанда дигар илова карда намешавад, агар оптимизатсияҳои "-Ofast", "-ffast-math" ё "-funsafe-math-optimizations" фаъол бошанд .
  • Дастгирии формати ислоҳи DWARF қариб дар ҳама конфигуратсияҳо амалӣ карда мешавад.
  • Опсияи "-gz=zstd" барои фишурдани маълумоти дебаг бо истифода аз алгоритми Zstandard илова карда шуд. Дастгирии реҷаи фишурдани иттилооти дебагӣ "-gz=zlib-gnu" хориҷ карда шуд.
  • Дастгирии ибтидоии OpenMP 5.2 (Open Multi-Processing) илова карда шуд ва татбиқи стандартҳои OpenMP 5.0 ва 5.1 идома ёфт, ки APIҳо ва усулҳои татбиқи усулҳои барномасозии параллелӣ дар системаҳои бисёраслӣ ва гибридӣ (CPU + GPU / DSP) бо воҳидҳои хотираи муштарак ва векторизатсия (SIMD).
  • Дастгирии формати нигаҳдории иттилооти кӯҳнаи "STABS" (бо имконоти -gstabs ва -gxcoff фаъол карда шудааст), ки дар солҳои 1980 сохта шуда, дар ислоҳкунандаи dbx истифода шудааст, қатъ карда шуд.
  • Дастгирии бекоршуда барои Solaris 11.3 (рамзи дастгирии ин платформа дар нашри оянда хориҷ карда мешавад).

Манбаъ: opennet.ru

Илова Эзоҳ