Dimittis de GCC 15 compilator suite

Post annum evolutionis, GCC compilator gratuitus GCC 15.1 emissus est, prima maior emissio in novo GCC 15.x ramo. Iuxta solutionem schematismi numerandi, versio 15.0 in evolutione adhibita est et paulo ante emissio GCC 15.1, ramus GCC 16.0 iam bifurcatus est, qui fundamentum proximae maioris emissionis formabit, GCC 16.1.

Major changes:

  • Cum programs componendis C, vexillum C23 cum extensionibus GNU ("-std=gnu23") adhibitum est per defaltam. Antea, vexillum C17 defaltam usa est (-std=gnu17). Mutatio potentiam causare potuit problemata cum inceptis aedificandis exsistentibus ob inclusionem nullptr constantium, _BitInt(n) generis, et per keywords bool, veras, et falsas, quae possunt pugnare cum identificatoribus similiter in applicationibus definitis.
  • Hae facultates vexillum C23 impletae sunt:
    • Directiva directiva "#embed" destinatur ad opes binarias emendandas in codicem.
    • Proprium "insecutum", quod significat exitum non pendere ab ordine executionis.
    • attributum "reproducibile" indicat semper munus idem redit idem effectus initus, i.e. ab aliis factoribus non dependet.
  • Vexillum futuri C2Y elementa effecta sunt (-std=c2y et -std=gnu2y);
    • Facultas variabiles declarandi per "si" constitutionis, ut "si (int x = get ()) {....}".
    • Firmamentum est nominandi loramenta ad eas in codice referre. exterior: nam (int i = 0; i < IK; ++ i) { switch (i) { case 1: break; AD CONT1 casu II adludit //: erumpere exterius; // CONT2 } // CONT2 } // CONT1
    • Firmamentum est iugis explicandis integris valoribus in locutionibus casu, ut "casus 1...10:".
    • Suffixat "i" et "j" partem imaginariam in numeris complexis.
    • Facultas utendi "++" et "-" operariis cum numeris complexis.
    • "_Generic (type, expr1, expr2, ...) construe ad expressionem eligendam secundum operandi genus.
    • Auxilia ad accessionem byte vestit sicut aliae rationes obiecti, ut structurae et uniones.
    • Firmamentum applicandi "alignof" operantis ad incompletas vestium (illae declarantur sine magnitudine speciei, ut "int a[]").
    • Novam syntaxin additis pro octalibus, hexadecimalibus, et universalibus characteribus sequentes evadunt. Loco "\u", "\x" et "\nnn", sequentia "\u{}", "\o{}" et "\x{}" proponuntur, in quibus quotcunque numeri specificari possunt.
    • inaedificata in functionibus "structum_stdc_rotate_left" ac "structum_stdc_rotate_right".
    • Nulla-longitudo operationum in nullis indicibus permissa est (exempli causa "sizeof(*p)").
  • Frontenda sunt instrumentorum linguae C++ notae quae in futurum C++26 vexillo augentur;
    • Variationale operator "amicus" ("amicus Ts...").
    • Facultas utendi cum keyword constexpris variatione novi operantis (novae collocationis) rei collocandi in memoria prae-partita tempore compilationis.
    • Error output cum monstratorem delendo ad genus incompletum.
    • Syntaxum definiendi parametri variadicis cum ellipsis sine commate praecedente (exempli gratia, cum denotans "vacuum e(int, ...)") deprecata est.
    • Indicans fasciculum moduli in template.
    • Attribuit ligaturas structas;
    • Pronominis relativi' = delere("rationem");
    • Inclusio "@", "$" et "`" in charactere fundamentali posuit.
    • Usus macros ad modulorum declarandos prohibetur.
    • Facultas ligandi structa uti condicio in si et dictis switch.
    • Support for direct array comparison (e.g. "int arr1[5]; int arr2[5]; bool same = arr1 == arr2") discontinuatum est.
    • Mechanismus "#embed" pro opibus binariis emendandi.
    • Exemplum genus is_trivial deprecatum est.
  • C ++ XXIII lineamenta adiecit:
    • Contradicentes aliquos usus "export" directivi et usum "export{}" concedunt.
    • Firmamentum est prorogandi vita rerum temporalium in ansulis quae per septa iterantur.
  • Libstdc ++ instrumenta bibliotheca experimentalis sustentatio pro modulis std et std.compat.
  • Usura "{0}" initializer pro unionibus in C et C++ codice non iam spondet omnia contenta purgata esse, sed proventus in primo elemento unionis evulso. Ad totam unionem purgandam, "{}" expressionem in specificatione C23 definitam adhibeas, vel "-fzero-init-padding-bits=uniones" optionem ad mores antiquos restituendos.
  • Firmamentum impletum "sapi" attributum ([[gnu :: musttail]] et [[clang::musttail]]) caudam vocat pro certo. Attributum applicat ad sententias referre quae vocationem recursivam faciunt ad munus hodiernum, et efficit ut talis vocatio recursura caudam adhibeat, quae memoriam additam in acervo non collocat (exterminato periculo memoriae excurrentis cum maximo numero vocationum).
  • Auxilia effecta ad flag_enum attributum ([[gnu::flag_enum]] et [[clang::flag_enum]]) applicata ad enumerationes ad indicandum contenta in operationibus bitwise adhibitis (prohibet admonitiones in Wswitch mode).
  • Auxilia addita pro attributo "numbered_by", quod adhiberi potest ad designandum campum in structura cum ordine flexibili qui numerum elementorum determinat. Attributum autem adhiberi potest ad efficientiam quiddam redundantia impedit.
  • Addidit "nonnullus" attributum functionibus, quae indicat parametri munus aliquod cum indicibus nullum esse nisi si alius modulus nullus est.
  • Congregator extensus "asm(....)" extra functiones permissus est. In coadunatore interserit, licet memoriam in zona rubra acervi (area in summo ACERVi) rescribere.
  • Compilatio de C++ codice velocior est quam emendato template hashing.
  • Novas optimizations addidit. Firmamentum ad effectum est ad vectorizing ansulas quae codicem continentes exitus primi (exempli gratia, per intermissum vel reditum vocant), etiam si tales ansas manipulare dynamice disponantur vestes vel buffers quorum magnitudo in tempore compilationis ignota est. Cum optio -O2 specificatur, vectorizationis alicuius facilioris loramenta vectorizabilia pro quibus tripcount informationes praesto non est capacitas est.
  • Optimization incrementalis modus ad conjunctionem scaenam (LTO, Link-Tempus Optimizationis accessit), quod insigniter recompilationis tempus minuit cum LTO utens in condicionibus ubi mutationes minores factae sunt in codice (unum munus editum est). Ut modus incrementalis efficiatur, optio "flto-incrementalis" proponitur.
  • Improved compilation of amplissima input files. Vestigatio columnarum numeri maior quam 4096 effecta est. Accurate emendatus est locus errorum et admonitionum in amplissimis lima indicandis.
  • Melior visibilitas relationum cum difficultates diagnosing. Exempli gratia, locus quaestionis cum symbolo "⚠️" illustratur, in C ++ templates in extensione errorum mutatus est, indicium additae ad simpliciorem transitum ad vexillum C23, et color schema redintegratum est. Facultatem ad diagnostica in Sarif formato (-fdiagnostics-format=sarif-file) addidit.
  • Libgdiagnostica bibliotheca ad effectum est, permittens ut GCC facultates integrare ad consilium nuntii diagnostici in inceptis tuis relatos (exempli gratia, verbis, indiciis et correctione adhibitis uti potes).
  • Addidit "-Wtrailing-whitespace" et "-Wleading-whitespace" admonitiones ad deprehendendas residuas whitespace in fine linearum et extra whitespace in principio linearum.
  • Addidit "-Wheader-guard" monitum de nuntiandis quaestionibus in custodia capitis macros, qui ne caput fasciculi denuo includantur.
  • Frontenda lingua D ad versionem 2.111.0 renovata est.
  • Firmamentum integris integris Fortran frontend additum est.
  • Involucrum compilator includit pro lingua COBOL, gcobol, quae suggesta x86-64 et AArch64 sustinet et ad usum in systematibus XXXII frenum destinatur. Compilator instrumenti ISO/IEC 32:1989 specificationem et plurimam probationum NIST CCVS/2023 praeterit.
  • Exsecutio OpenMP 5.0, 5.1, 5.2 et 6.0 (Open Multi-Processing) signa, definiens API ac methodos applicandi rationes parallelas programmandi methodos multi-core et hybrid (CPU+GPU/DSP) systemata cum unitis communibus memoria et vectorizatione (SIMD), continuata est. Subsidiis additis metadirectivis et tegularum, unroll, interop et mittendis constructis. Quibusdam AMD et NVIDIA GPUs, subsidium pro memoria communi unita additum est (faciendo memoriam unificatam in "require" directivam. Firmamentum additum expressionis "auto_maps".
  • Tergum pro architectura AArch64 renovatum est ad suggestum MinGW sustinendum (aarch64-w64-mingw32). Amplius XX extensiones ARM20 amplificatae sunt et subsidium pro ACLE (Arm C Tractus Language) amplificatum est. Multae emendationes factae sunt in codice genitoris. CPU subsidium addidit:
    • Lacus A12 (pomum-a12)
    • Lacus M1 (malum-m1)
    • Lacus M2 (malum-m2)
    • Lacus M3 (malum-m3)
    • Brachium cortex-A520AE (cortex-a520ae)
    • Brachium cortex-A720AE (cortex-a720ae)
    • Brachium Cortex-A725 (cortex-a725)
    • Brachium cortex-R82AE (cortex-r82ae)
    • Brachium cortex-X925 (cortex-x925)
    • Brachium Neoverse N3 (neverse-n3)
    • Arm Neoverse V3 (neverse-v3)
    • Brachium Neoverse V3AE (neover-v3ae)
    • FUJITSU-MONAKA (fujitsu-monaka)
    • NVIDIA GRATIA
    • NVIDIA Olympus (olympus)
    • Qualcomm Oryon-1 (Oryon-1)
  • AMD Radeon GPU (GCN) codice generationis backend renovata est ad subsidium libstdc++ bibliothecae et experimentalis generationis subsidii adiectum est pro gfx9-generico, gfx10-3-generico, et in serie gfx11-generica fabrica.
  • Nunc x86 backendendo sustinet extensiones architecturae instrumentorum intel lecturarum AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX TRANSPOS, MOVRS. Auxilia additae pro Rapids Diamond Intel et Xeon Phi CPUs.
  • Retrahendae facultates expansae sunt pro suggestis LoongArch et AVR.
  • Sublata subsidium architecturae scoporum nios2 in Nios II processoribus adhibitis. Support pro ILP32 ABI (-mabi=ilp32) in AArch64 portu deprecatum est et in altera maiore missione removebitur.

Source: opennet.ru

Add a comment