GCC 13 konpiladore-multzoaren kaleratzea

Urtebeteko garapenaren ondoren, doako GCC 13.1 konpiladore-multzoa kaleratu da, GCC 13.x adar berriko lehen bertsio esanguratsua. Argitalpenaren zenbakitze-eskemaren arabera, 13.0 bertsioa erabili zen garapen-prozesuan, eta GCC 13.1 kaleratu baino pixka bat lehenago, GCC 14.0 adarra jada adarkatu egin zen, eta horren arabera hurrengo bertsio nagusia, GCC 14.1, izango zen. eratu.

Aldaketa nagusiak:

  • GCCk Modula-2 programazio-lengoaian programak muntatzeko frontend bat dakar. PIM2, PIM3 eta PIM4 dialektoei dagokien kodearen muntaketa onartzen da, baita hizkuntza jakin baterako onartutako ISO estandarra ere.
  • gccrs proiektuak (GCC Rust) prestatutako Rust hizkuntza-konpilatzailearen inplementazioa duen frontend bat gehitu da GCC iturburuen zuhaitzean. Oraingo moduan, aurrerako amaiera esperimental gisa markatzen da eta lehenespenez desgaituta dago. Frontend-a prest dagoenean (hurrengo bertsioan espero da), GCC tresna estandarrak Rust hizkuntzan programak konpilatzeko erabil daitezke, LLVM garapenak erabiliz eraikitako rustc konpilatzailea instalatu beharrik gabe.
  • Link Time Optimization (LTO) motorrak GNU make proiektuak onartzen duen jobserver-erako laguntza gehitu du hari anitzetan eraikitze paraleloen exekuzioa optimizatzeko. GCCn, jobserver programa osoaren testuinguruan (WPA, Whole-program Analysis) LTO optimizazioan lana paralelizatzeko erabiltzen da. jobserver-ekin elkarreragiteko, izendun kanalizazioak erabiltzen dira lehenespenez (-jobserver-style=fifo).
  • Analizatzaile estatikoak (-fanalyzer) 20 diagnostiko egiaztapen berri eskaintzen ditu, besteak beste, "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite". -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Diagnostikoak SARIF formatuan ateratzeko gaitasuna ezarri da, JSONn oinarrituta. Formatu berria analisi estatikoko emaitzak lortzeko (GCC -fanalyzer) erabil daiteke, baita abisu eta erroreen informazioa lortzeko ere. Gaitzea "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-fitxategia" aukerarekin egiten da, non "json" duten aukerak JSON formatuaren GCC-ren berariazko aldaera batean ateratzen direnean. .
  • C23 C estandarrean definitutako ezaugarri batzuk inplementatu ditu, hala nola nullptr erakusle nuluak definitzeko konstantea, zerrenda variadikoen erabilera sinplifikatuz, enumerazioen gaitasunak zabalduz, noreturn atributua, objektuak definitzerakoan constexpr eta auto erabiltzea ahalbidetuz, motatakoa. eta typeof_unqual, gako-hitz berriak alignas, alignof, bool, false, static_assert, thread_local eta true, hasierako garaian parentesi hutsak zehaztu ahal izateko.
  • C++23 estandarrean definitutako ezaugarri batzuk inplementatu ditu, hala nola, adierazpen konposatuen amaieran markak jartzeko gaitasuna, char8_t motarekin bateragarritasuna, #warning aurreprozesadorearen zuzentaraua, mugatua (\u{}, \o{}, \x{}) eta ('\N{LATIN MAILUSULA A}') ihes-sekuentziak, operadore estatikoa(), operadore estatikoa[], espresioen barruko berdintasun-operadoreak, constexpr erabiltzeko murrizketa batzuk ezabatzea, UTFrako euskarria -8 iturri-testuetan.
  • libstdc++-k C++20 eta C++23 estandarentzako euskarri esperimentala hobetu du, adibidez, goiburuko fitxategien euskarria gehituz. eta std::format, goiburuko fitxategien gaitasunak zabalduta , koma mugikorreko mota gehigarriak gehitu dira, goiburuko fitxategiak ezarri dira Eta .
  • Funtzio-atributu berriak gehitu dira fitxategi-deskriptorea aldagai oso batean pasatzen dela dokumentatzeko: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" eta "__attribute__((fd_arg_write(N))) )" Zehaztutako atributuak analizatzaile estatiko batean (-fanalyzer) erabil daitezke fitxategi deskribatzaileekin funtzionamendu okerra detektatzeko.
  • "__attribute__((assume(EXPR)))" atributu berri bat gehitu da, eta horrekin konpilatzaileari adieraz diezaiokezu adierazpena egiazkoa dela eta konpilatzaileak gertaera hori erabil dezakeela adierazpena ebaluatu gabe.
  • "-fstrict-flex-arrays=[maila]" marka gehitu da egituretako array-elementu malguak maneiatzen dituenean portaera hautatzeko (Flexible Array Members, egitura baten amaieran tamaina mugagabeko array bat, adibidez, "int b[]" ).
  • "-Wenum-int-mismatch" bandera gehitu da enumerazio mota baten eta osoko motaren artean bat ez datozenak abisatzeko.
  • Fortran hizkuntzaren frontend-ak guztiz onartzen du amaiera.
  • Go hizkuntzaren frontend-ean, funtzio eta mota generikoen (generikoak) euskarria gehitu da, eta Go 1.18 hizkuntzarako paketeekin bateragarritasuna ziurtatu da.
  • AArch64 arkitekturaren backendak CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) eta Arm Neoverse V2 (neoverse) onartzen ditu -v2). "armv9.1-a", "armv9.2-a" eta "armv9.3-a" argumentuetarako laguntza gehitu da "-march=" aukerari. FEAT_LRCPC, FEAT_CSSC eta FEAT_LSE2 prozesadorearen luzapenetarako laguntza gehitu da.
  • CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) eta Arm Cortex-M85 (cortex-m85) ARM arkitekturaren backend-en laguntza gehitu da.
  • x86 arkitekturarako backend-ak Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids prozesadoreetarako laguntza gehitzen du, baita AMD Zen 4 (znver4) prozesadoreetarako ere. Intel prozesadoreetan proposatutako AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT eta AMX-COMPLEX argibide multzoen arkitektura-luzapenak ezarri dira. SSE2 sistemetako C eta C++ lengoaietarako, __bf16 mota eskaintzen da.
  • AMD Radeon GPU (GCN) kodea sortzeko backendak AMD Instinct MI200 azeleragailuak erabiltzeko gaitasuna barne hartzen du OpenMP/OpenACC errendimendua hobetzeko. SIMD argibideak erabiliz bektoretza hobetua.
  • LoongArch plataformaren backend gaitasunak nabarmen zabaldu dira.
  • RISC-V arkitekturaren backend-ean, T-Head-en XuanTie C906 (thead-c906) CPUrako euskarria gehitu da. RISC-V Vector Extension Intrinsic 0.11 zehaztapenean definitutako prozesadore bektorialentzako euskarria ezarri da. RISC-V zehaztapenari 30 luzapenentzako euskarria gehitu zaio.
  • -Shared aukerarekin partekatutako objektuak sortzeak abiarazte kodea gehitzeari uzten dio koma mugikorreko ingurunea gehitu ondoren -Ofast, -ffast-math edo -funsafe-math-optimizations gaituta badago.
  • DWARF arazketa formatuaren euskarria ia konfigurazio guztietan ezartzen da.
  • "-gz=zstd" aukera gehitu da arazketa-informazioa Zstandard algoritmoa erabiliz konprimitzeko. "-gz=zlib-gnu" arazketa-konpresio-moduaren laguntza eten egin da.
  • OpenMP 5.2 (Open Multi-Processing) hasierako euskarria gehitu da eta OpenMP 5.0 eta 5.1 estandarren inplementazio jarraitua, memoria partekatua duten nukleo anitzeko eta hibridoen (CPU+GPU/DSP) sistemetan paralelo programazio metodoak aplikatzeko APIak eta metodoak definitzen dituztenak. eta bektorizazio-unitateak (SIMD).
  • 1980ko hamarkadan sortua eta dbx araztailean erabiltzen den "STABS" arazketa-informazioaren biltegiratze formatuaren euskarria (-gstabs eta -gxcoff aukerekin gaitua) eten egin da.
  • Solaris 11.3rako laguntza zaharkituta geratu da (plataforma hau onartzen duen kodea etorkizuneko bertsio batean kenduko da).

Iturria: opennet.ru

Gehitu iruzkin berria