Tso tawm ntawm GCC 13 compiler suite

Tom qab ib xyoos ntawm txoj kev loj hlob, lub free compiler suite GCC 13.1 tau raug tso tawm, thawj qhov tseem ceeb tso tawm hauv GCC 13.x tshiab ceg. Raws li cov txheej txheem tshiab tso tawm tus lej, version 13.0 tau siv rau hauv txoj kev txhim kho, thiab tsis ntev ua ntej kev tso tawm ntawm GCC 13.1, GCC 14.0 ceg tau tawg lawm, los ntawm qhov kev tso tawm loj tom ntej, GCC 14.1, yuav raug tsim.

Cov kev hloov loj:

  • GCC suav nrog lub hauv ntej rau kev sib sau cov kev pab cuam hauv Modula-2 programming lus. Kev sib sau ua ke ntawm cov lej sib raug rau cov lus Askiv PIM2, PIM3 thiab PIM4, nrog rau cov qauv ISO lees paub rau hom lus no, tau txais kev txhawb nqa.
  • Lub hauv ntej kawg nrog kev siv ntawm Rust language compiler npaj los ntawm gccrs project (GCC Rust) tau ntxiv rau GCC qhov chaw ntoo. Hauv nws daim ntawv tam sim no, qhov kawg rau pem hauv ntej yog cim raws li kev sim thiab ua tsis taus los ntawm lub neej ntawd. Thaum lub frontend npaj txhij (xav tias nyob rau hauv qhov kev tso tawm tom ntej), tus qauv GCC cov cuab yeej siv tau los sau cov kev pab cuam hauv cov lus Rust yam tsis tas yuav nruab lub rustc compiler, tsim siv LLVM kev txhim kho.
  • Lub Tshuab Txuas Lub Sijhawm Optimization (LTO) tau ntxiv kev txhawb nqa rau tus neeg ua haujlwm pabcuam los ntawm GNU ua qhov haujlwm los ua kom zoo rau kev ua tiav ntawm kev sib txuas ua ke hla ntau cov xov. Hauv GCC, tus neeg ua haujlwm pabcuam tau siv los ua haujlwm sib luag thaum lub sijhawm LTO kev ua kom zoo dua qub hauv cov ntsiab lus ntawm tag nrho cov haujlwm (WPA, Kev Tshawb Fawb Tag Nrho). Txhawm rau cuam tshuam nrog kev ua haujlwm, cov kav dej muaj npe siv los ntawm lub neej ntawd (-jobserver-style = fifo).
  • Lub static analyzer (-fanalyzer) muaj 20 qhov kev kuaj mob tshiab, suav nrog "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-ua ntej-check", "-Wanalyzer- infinite -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Lub peev xwm los tawm cov kev kuaj mob hauv SARIF hom, raws li JSON, tau ua tiav. Cov qauv tshiab tuaj yeem siv tau kom tau txais cov txiaj ntsig kev soj ntsuam zoo li qub (GCC -fanalyzer), nrog rau kom tau txais cov ntaub ntawv ceeb toom thiab yuam kev. Enabling yog ua tiav nrog kev xaiv "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", qhov twg cov kev xaiv nrog "json" ua rau cov zis hauv GCC-tshwj xeeb variant ntawm JSON hom .
  • Ua tiav qee qhov tshwj xeeb uas tau teev tseg hauv C23 C tus qauv, xws li tus nullptr tas li rau kev txhais cov ntsiab lus tsis muaj tseeb, ua kom yooj yim ntawm kev siv cov npe sib txawv, nthuav cov peev txheej ntawm kev suav sau, tus cwj pwm noreturn, tso cai rau kev siv constexpr thiab nws pib thaum txhais cov khoom, hom ntawv. thiab typeof_unqual, cov ntsiab lus tshiab alignas, alignof, bool, cuav, static_assert, thread_local thiab tseeb, tso cai rau cov kab lus khoob tau teev tseg thaum pib.
  • Ua tiav qee qhov tshwj xeeb uas tau teev tseg hauv C ++ 23 tus qauv, xws li lub peev xwm los tso cov cim ntawm qhov kawg ntawm cov kab lus sib xyaw, kev sib raug zoo nrog hom char8_t, # ceeb toom preprocessor qhia, delimited (\u{}, \o{}, \x{}) thiab lub npe ('\N{LATIN CAPITAL LETTER A}') khiav tawm ib ntus, tus neeg teb xov tooj zoo li qub(), tus neeg teb xov tooj zoo li qub[], tus neeg teb xov tooj sib npaug hauv cov kab lus, tshem tawm qee qhov kev txwv ntawm kev siv constexpr, txhawb UTF -8 hauv cov ntawv nyeem.
  • libstdc ++ tau txhim kho kev sim txhawb rau C ++ 20 thiab C ++ 23 cov qauv, piv txwv li, ntxiv cov ntaub ntawv header txhawb nqa thiab std::format, nthuav dav header cov ntaub ntawv muaj peev xwm , ntxiv floating point hom ntxiv, header cov ntaub ntawv siv Thiab .
  • Ntxiv cov yeeb yam tshiab rau cov ntaub ntawv uas tus neeg piav qhia cov ntaub ntawv tau dhau los ntawm tus lej sib txawv: "__attribute__((fd_arg(N))), "__attribute__((fd_arg_read(N)))" thiab "__attribute__((fd_arg_write(N))) )" Cov cwj pwm uas tau teev tseg tuaj yeem siv rau hauv qhov ntsuas zoo li qub (-fanalyzer) txhawm rau txheeb xyuas cov haujlwm tsis raug ntawm cov ntaub ntawv piav qhia.
  • Ntxiv tus cwj pwm tshiab β€œ__attribute__((xav tias (EXPR)))”, uas koj tuaj yeem qhia rau lub compiler tias qhov kev qhia yog qhov tseeb thiab tus sau tuaj yeem siv qhov tseeb no yam tsis tau ntsuas qhov kev qhia.
  • Ntxiv "-fstrict-flex-arrays = [level]" chij los xaiv tus cwj pwm thaum tuav cov ntsiab lus hloov tau yooj yim hauv cov qauv (Cov tswv cuab yooj yim Array, ib qho array ntawm qhov loj me me ntawm qhov kawg ntawm cov qauv, piv txwv li, "int b[]" ).
  • Ntxiv "-Wenum-int-mismatch" chij ceeb toom yog tias muaj qhov tsis sib xws ntawm ib hom enum thiab hom integer.
  • Lub frontend rau cov lus Fortran txhawb kev ua tiav.
  • Nyob rau hauv pem hauv ntej kawg rau Go lus, kev txhawb nqa rau generic functions thiab hom (generics) tau ntxiv, thiab compatibility nrog tej pob khoom rau Go lus 1.18 tau ua kom tiav.
  • Lub backend rau AArch64 architecture txhawb CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) thiab Arm Neoverse V2 (neoverse -v2). Ntxiv kev txhawb nqa rau "armv9.1-a", "armv9.2-a" thiab "armv9.3-a" kev sib cav rau "-march=" kev xaiv. Ntxiv kev txhawb nqa rau FEAT_LRCPC, FEAT_CSSC thiab FEAT_LSE2 processor txuas ntxiv.
  • Kev them nyiaj yug rau CPU STAR-MC1 (hnub qub-mc1), Arm Cortex-X1C (cortex-x1c) thiab Arm Cortex-M85 (cortex-m85) tau ntxiv rau qhov backend rau ARM architecture.
  • Lub backend rau x86 architecture ntxiv kev txhawb nqa rau Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids processors, nrog rau AMD Zen 4 (znver4) processors. Cov kev qhia teeb tsa kev txuas ntxiv AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT thiab AMX-COMPLEX, tau thov hauv Intel processors, tau ua tiav. Rau C thiab C ++ cov lus ntawm SSE2 systems, __bf16 hom yog muab.
  • Cov lej cim rov qab rau AMD Radeon GPUs (GCN) suav nrog lub peev xwm siv AMD Instinct MI200 accelerators los txhim kho OpenMP / OpenACC kev ua tau zoo. Txhim kho vectorization siv SIMD cov lus qhia.
  • Lub peev xwm backend rau LoongArch platform tau nthuav dav heev.
  • Hauv qhov backend rau RISC-V architecture, kev txhawb nqa rau T-Head's XuanTie C906 (thead-c906) CPU tau ntxiv. Kev them nyiaj yug rau vector processors tau teev tseg hauv RISC-Vector Extension Intrinsic 0.11 specification tau raug coj los siv. Ntxiv kev txhawb nqa rau 30 txuas ntxiv rau RISC-V specification.
  • Tsim cov khoom sib koom nrog cov kev xaiv -shared txwv tsis pub ntxiv cov lej pib tom qab ntxiv qhov chaw nyob ib puag ncig yog tias -Ofast, -ffast-math, lossis -funsafe-math-optimizations tau qhib.
  • Kev them nyiaj yug rau DWARF debug hom yog siv nyob rau hauv yuav luag tag nrho cov configurations.
  • Ntxiv kev xaiv "-gz = zstd" los nthuav cov ntaub ntawv debugging siv Zstandard algorithm. Kev them nyiaj yug rau cov keeb kwm "-gz = zlib-gnu" debugging compression hom tau raug txiav lawm.
  • Ntxiv kev txhawb nqa thawj zaug rau OpenMP 5.2 (Open Multi-Processing) thiab txuas ntxiv kev siv ntawm OpenMP 5.0 thiab 5.1 cov qauv, uas txhais APIs thiab cov txheej txheem rau kev siv cov txheej txheem kev sib txuas ntawm ntau cov tub ntxhais kawm thiab hybrid (CPU + GPU / DSP) cov tshuab nrog kev nco. thiab vectorization units (SIMD).
  • Kev them nyiaj yug rau cov cuab yeej cuab tam "STABS" debugging cov ntaub ntawv khaws cia hom ntawv (ua haujlwm nrog -gstabs thiab -gxcoff xaiv), tsim nyob rau xyoo 1980s thiab siv hauv dbx debugger, tau txiav tawm.
  • Kev them nyiaj yug rau Solaris 11.3 tau deprecated (code los txhawb lub platform no yuav raug tshem tawm hauv kev tso tawm yav tom ntej).

Tau qhov twg los: opennet.ru

Ntxiv ib saib