Rhyddhau cyfres casglwyr GCC 13

Ar ôl blwyddyn o ddatblygiad, mae'r gyfres casglwr rhad ac am ddim GCC 13.1 wedi'i ryddhau, y datganiad sylweddol cyntaf yn y gangen GCC 13.x newydd. Yn unol â'r cynllun rhifo rhyddhau newydd, defnyddiwyd fersiwn 13.0 yn y broses ddatblygu, ac yn fuan cyn rhyddhau GCC 13.1, roedd cangen GCC 14.0 eisoes wedi dod i ben, ac o hynny byddai'r datganiad mawr nesaf, GCC 14.1, yn cael ei ffurfio.

Newidiadau mawr:

  • Mae GCC yn cynnwys blaen ar gyfer cydosod rhaglenni yn iaith raglennu Modula-2. Cefnogir y cydosod cod sy'n cyfateb i'r tafodieithoedd PIM2, PIM3 a PIM4, yn ogystal â'r safon ISO a dderbynnir ar gyfer iaith benodol.
  • Mae pen blaen gyda gweithrediad y casglwr iaith Rust a baratowyd gan y prosiect gccrs (GCC Rust) wedi'i ychwanegu at goeden ffynhonnell y GCC. Yn ei ffurf bresennol, mae'r pen blaen wedi'i farcio'n arbrofol ac yn anabl yn ddiofyn. Unwaith y bydd y frontend yn barod (disgwylir yn y datganiad nesaf), gellir defnyddio'r offer safonol GCC i lunio rhaglenni yn yr iaith Rust heb fod angen gosod y casglwr rustc, a adeiladwyd gan ddefnyddio datblygiadau LLVM.
  • Mae'r injan Link Time Optimization (LTO) wedi ychwanegu cefnogaeth i'r gweinydd swyddi a gefnogir gan y prosiect gwneud GNU i wneud y gorau o adeiladu cyfochrog ar draws edafedd lluosog. Yn GCC, defnyddir gweinydd swyddi i gyfochrog â gwaith yn ystod optimeiddio LTO yng nghyd-destun y rhaglen gyfan (WPA, Dadansoddiad Rhaglen Gyfan). I ryngweithio â gweinydd swyddi, defnyddir pibellau a enwir yn ddiofyn (-jobserver-style=fifo).
  • Mae'r dadansoddwr statig (-fanalyzer) yn cynnig 20 o wiriadau diagnostig newydd, gan gynnwys “-Wanalyzer-out-of-bounds”, “-Wanalyzer-allocation-size”, “-Wanalyzer-deref-before-check”, “-Wanalyzer- infinite -recursion" -Wanalyzer-neidio-trwy-null", "-Wanalyzer-va-list-leak".
  • Mae'r gallu i allbynnu diagnosteg yn fformat SARIF, yn seiliedig ar JSON, wedi'i roi ar waith. Gellir defnyddio'r fformat newydd i gael canlyniadau dadansoddiad statig (GCC -fanalyzer), yn ogystal â chael gwybodaeth rhybuddio a gwallau. Gwneir galluogi gyda'r opsiwn "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", lle mae opsiynau gyda "json" yn arwain at allbwn mewn amrywiad GCC-benodol o'r fformat JSON .
  • Wedi gweithredu rhai nodweddion a ddiffinnir yn safon C23 C, megis y cysonyn nullptr ar gyfer diffinio awgrymiadau null, symleiddio'r defnydd o restrau amrywiol, ehangu galluoedd cyfrifiadau, priodoledd noreturn, gan ganiatáu defnyddio constexpr a auto wrth ddiffinio gwrthrychau, y math o a typeof_unqual, geiriau allweddol newydd alignas, aliniad, bool, ffug, static_assert, thread_local a gwir, gan ganiatáu i gromfachau gwag gael eu nodi yn ystod ymgychwyn.
  • Wedi gweithredu rhai nodweddion a ddiffinnir yn safon C++23, megis y gallu i osod marciau ar ddiwedd mynegiadau cyfansawdd, cydnawsedd â'r math char8_t, y gyfarwyddeb rhagbrosesydd #rhybudd, wedi'i amffinio (\u{}, \o{}, \x{}) ac a enwir ('\N{LLYTHYR LLADIN LLYTHYR A}') dilyniannau dianc, gweithredwr statig(), gweithredwr statig[], ​​gweithredydd cydraddoldeb y tu mewn i fynegiadau, dileu rhai cyfyngiadau ar ddefnyddio constexpr, cefnogaeth i UTF -8 mewn testunau ffynhonnell.
  • Mae libstdc ++ wedi gwella cefnogaeth arbrofol ar gyfer safonau C++20 a C++23, er enghraifft, ychwanegu cefnogaeth ffeil pennawd a std::fformat, galluoedd ffeil pennawd estynedig , ychwanegu mathau ychwanegol o bwyntiau arnawf, ffeiliau pennawd wedi'u gweithredu Ac .
  • Ychwanegwyd priodoleddau swyddogaeth newydd i ddogfen bod disgrifydd ffeil yn cael ei basio mewn newidyn cyfanrif: "__attribute__((fd_arg(N))))", "__attribute__((fd_arg_read(N)))" a "__attribute__((fd_arg_write(N))) )" Gellir defnyddio'r priodoleddau penodedig mewn dadansoddwr statig (-fanalyzer) i ganfod gweithrediad anghywir gyda disgrifyddion ffeil.
  • Wedi ychwanegu priodoledd newydd “__attribute__((sume(EXPR)))), y gallwch chi ddweud wrth y casglwr bod yr ymadrodd yn wir a gall y casglwr ddefnyddio'r ffaith hon heb werthuso'r mynegiad.
  • Ychwanegwyd baner "-fstrict-flex-arrays=[level]" i ddewis ymddygiad wrth drin elfennau arae hyblyg mewn strwythurau (Aelodau Arae Hyblyg, amrywiaeth o faint amhenodol ar ddiwedd strwythur, er enghraifft, "int b[]" ).
  • Ychwanegwyd baner "-Wenum-int-mismatch" i rybuddio os oes diffyg cyfatebiaeth rhwng math enum a math cyfanrif.
  • Mae blaen yr iaith Fortran yn cefnogi'r cwblhau yn llwyr.
  • Ym mhen blaen yr iaith Go, mae cefnogaeth ar gyfer swyddogaethau a mathau generig (generics) wedi'i ychwanegu, a sicrhawyd cydnawsedd â phecynnau ar gyfer yr iaith Go 1.18.
  • Mae'r gefnlen ar gyfer pensaernïaeth AArch64 yn cefnogi CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) ac Arm Neoverse V2 (neoverse -v2). Ychwanegwyd cefnogaeth ar gyfer dadleuon "armv9.1-a", "armv9.2-a" ac "armv9.3-a" i'r opsiwn "-march=". Cefnogaeth ychwanegol ar gyfer estyniadau prosesydd FEAT_LRCPC, FEAT_CSSC a FEAT_LSE2.
  • Mae cefnogaeth ar gyfer CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) ac Arm Cortex-M85 (cortecs-m85) wedi'i ychwanegu at y backend ar gyfer pensaernïaeth ARM.
  • Mae'r backend ar gyfer pensaernïaeth x86 yn ychwanegu cefnogaeth ar gyfer proseswyr Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, yn ogystal â phroseswyr AMD Zen 4 (znver4). Mae'r estyniadau pensaernïaeth set gyfarwyddiadau AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ac AMX-COMPLEX, a gynigir mewn proseswyr Intel, wedi'u gweithredu. Ar gyfer ieithoedd C a C++ ar systemau SSE2, darperir y math __bf16.
  • Mae'r backend cynhyrchu cod ar gyfer AMD Radeon GPUs (GCN) yn cynnwys y gallu i ddefnyddio cyflymyddion AMD Instinct MI200 i wella perfformiad OpenMP / OpenACC. Gwell fectoreiddio gan ddefnyddio cyfarwyddiadau SIMD.
  • Mae galluoedd backend platfform LoongArch wedi'u hehangu'n sylweddol.
  • Yn y cefn ar gyfer pensaernïaeth RISC-V, mae cefnogaeth ar gyfer CPU XuanTie C906 (thead-c906) y T-Head wedi'i ychwanegu. Mae cefnogaeth ar gyfer proseswyr fector a ddiffinnir yn y fanyleb RISC-V Vector Extension Intrinsic 0.11 wedi'i roi ar waith. Cefnogaeth ychwanegol ar gyfer 30 estyniad i fanyleb RISC-V.
  • Mae cynhyrchu gwrthrychau a rennir gyda'r opsiwn -shared yn stopio ychwanegu cod cychwyn ar ôl ychwanegu amgylchedd pwynt arnawf os yw'r optimeiddiadau -Ofast, -ffast-math, neu -funsafe-math-wedi'u galluogi.
  • Rhoddir cefnogaeth i fformat dadfygio DWARF ym mron pob ffurfweddiad.
  • Ychwanegwyd opsiwn "-gz=zstd" i gywasgu gwybodaeth dadfygio gan ddefnyddio'r algorithm Zstandard. Mae cefnogaeth i'r modd cywasgu dadfygio etifeddiaeth "-gz=zlib-gnu" wedi'i derfynu.
  • Ychwanegwyd cefnogaeth gychwynnol ar gyfer OpenMP 5.2 (Aml-Brosesu Agored) a gweithrediad parhaus safonau OpenMP 5.0 a 5.1, sy'n diffinio APIs a dulliau ar gyfer cymhwyso dulliau rhaglennu cyfochrog ar systemau aml-graidd a hybrid (CPU + GPU / DSP) gyda chof a rennir ac unedau fectoreiddio (SIMD).
  • Mae cefnogaeth ar gyfer y fformat storio gwybodaeth dadfygio “STABS” etifeddol (wedi'i alluogi gyda'r opsiynau -gstabs a -gxcoff), a grëwyd yn yr 1980au ac a ddefnyddiwyd yn y dadfygiwr dbx, wedi'i derfynu.
  • Mae cefnogaeth i Solaris 11.3 wedi'i anghymeradwyo (bydd cod i gefnogi'r platfform hwn yn cael ei ddileu mewn datganiad yn y dyfodol).

Ffynhonnell: opennet.ru

Ychwanegu sylw