GCC 16

GCC 16

Pas një vit zhvillimi është publikuar lëshimi i koleksionit të lirë të kompilatorëve GCC 16.1, lëshimi i parë i rëndësishëm në degën e re GCC 16.x. Në përputhje me skemën e numerimit të lëshimeve, versione 16.0 është përdorur gjatë procesit të zhvillimit, dhe pak përpara se të dilte GCC 16.1, tashmë është ndarë degë GCC 17.0, mbi të cilën do të formohet lëshimi i ardhshëm i rëndësishëm GCC 17.1.

Ndryshimet kryesore në:

  • Rezhimi i parazgjedhur pĂ«r gjuhĂ«n C++ Ă«shtĂ« kalosur nĂ« pĂ«rdorimin e standardit C++20 (-dialekti GNU C++20, -std=gnu++20) nĂ« vend tĂ« C++17. Zbatimi i C++20 nĂ« bibliotekĂ«n standarde Ă«shtĂ« shpallur stabil.
  • NĂ« pĂ«rmbajtje Ă«shtĂ« pĂ«rfshirĂ« njĂ« front-end eksperimental ga68 pĂ«r kompaktimin e programeve nĂ« gjuhĂ«n e programimit Algol 68.
  • ËshtĂ« shtuar mundĂ«sia e shfaqjes sĂ« informacionit diagnostik nĂ« formatin HTML. Informacioni mbi pĂ«rparimin e ekzekutimit tĂ« programit Ă«shtĂ« zgjeruar dhe pĂ«rfshihet kur jepet diagnostika nĂ« formatin SARIF, i bazuar nĂ« JSON (mbĂ«shtetje pĂ«r "-fdiagnostics-format=json" Ă«shtĂ« ndaluar).
  • JanĂ« zgjeruar optimizimet gjatĂ« procesit tĂ« lidhjes (LTO, Link-Time Optimization). ËshtĂ« shtuar mundĂ«sia "-flto-toplevel-asm-heuristics", e cila pĂ«rfshin heuristikĂ«n pĂ«r tĂ« pĂ«rmirĂ«suar optimizimin e kodit me inserte nĂ« asamblesĂ«. Teknikat e devijimit spekulativ (-fdevirtualize-speculatively) tani nuk janĂ« tĂ« kufizuara nĂ« transformimin e metodave virtuale dhe mund tĂ« pĂ«rdoren pĂ«r t'i kaluar direkt çdo thirrje funksionesh, pĂ«r shembull, thirrje pĂ«rmes treguesve.
  • ËshtĂ« zbatuar mbĂ«shtetje pĂ«r vektorizimin e cikleve pĂ«r tĂ« cilat numri i itereve nuk dihet nĂ« fazĂ«n e kompilimit. Efikasiteti nĂ« trajtimin e daljeve tĂ« parakohshme nga cikli (p.sh., pĂ«rmes break) Ă«shtĂ« rritur.
  • MbĂ«shtetje eksperimentale e shtuar shumĂ« mundĂ«sish standartit tĂ« miratuar kohĂ«t e fundit C++26. PĂ«r shembull, janĂ« realizuar:
    • Reflektimi (Reflection, "-freflection"), e cila lejon ndjekjen dhe modifikimin e elementeve tĂ« programit gjatĂ« fazĂ«s sĂ« kompilimit. JanĂ« shtuar operatorĂ« tĂ« rinj "^^ (open-std.org)" pĂ«r tĂ« marrĂ« metainformacione mbi konstrukcionin gramatikor dhe "[:
:]" pĂ«r tĂ« kryer transformimin e kundĂ«rt. PĂ«r transformimin dhe pĂ«rpunimin e informacionit tĂ« marrĂ« gjatĂ« inspektimit, Ă«shtĂ« propozuar biblioteka std::meta dhe janĂ« tĂ« disponueshme mundĂ«si tĂ« tilla si llogaritjet me constante.
    • Programimi pĂ«r kontrata (Contracts), duke lejonĂ« tĂ« pĂ«rcaktojĂ« specifikimet formale tĂ« ndĂ«rfaqeve duke pĂ«rdorur tre operatorĂ« tĂ« rinj: pre (parakusht), post (pasusht) dhe contract_assert (kontrolli i pohimit). Operator i «pre» pĂ«rcakton kushtet paraprake qĂ« duhet tĂ« plotĂ«sohen para thirrjes (kontrolli i tĂ« dhĂ«nave hyrĂ«se); «post» janĂ« kushtet qĂ« duhet tĂ« respektohen pas ekzekutimit (tĂ« kĂ«rkesat pĂ«r tĂ« dhĂ«nat dalĂ«se); contract_assert janĂ« kushtet pĂ«r lindjen e pĂ«rjashtimeve. Kjo mundĂ«si do tĂ« jetĂ« nĂ« GCC 16.
    • Operatori «template for» pĂ«r tĂ« kaluar nĂ«pĂ«r elemente si paketat e parametrave, objekte tĂ« ngjashme me tuple dhe rezultatet e reflektimit (metaobjekte), nĂ« fazĂ«n e kompilimit nĂ« stilin e njĂ« cikli tĂ« zakonshĂ«m. GjatĂ« ekzekutimit «template for» trupi i ciklit zgjerohet pĂ«r çdo element dhe çdo iterim trajtohet nĂ« njĂ« hapĂ«sirĂ« tĂ« veçantĂ« tĂ« dukshmĂ«risĂ«, ku elementi i sekuencĂ«s, sipas tĂ« cilit iteron cikli, Ă«shtĂ« konstant pĂ«r çdo iterim dhe mund tĂ« marr pjesĂ« nĂ« shprehje konstante (constexpr). NĂ« kontekstin e reflektimit «template for» mund tĂ« aplikojĂ« pĂ«r kalimin e pronave tĂ« klasave ose enumerimeve.
    • Biblioteka std::simd pĂ«r tĂ« paralelizuar ekzekutimin e operacioneve mbi tĂ« dhĂ«nat pĂ«rmes grupeve tĂ« instruktimeve SIMD, siç janĂ« AVX-512 dhe NEON, duke pĂ«rdorur sistemin standard tĂ« tipeve C++.
    • Biblioteka std::inplace_vector, std::optional<T&>, std::copyable_function, std::function_ref, std::indirect, std::polymorphic dhe std::owner_equal.
  • JanĂ« realizuar mundĂ«si tĂ« lidhura me standartin C++23, si evident menaxhimi i kohĂ«zgjatjes sĂ« objekteve dhe mbĂ«shtetje udhĂ«zimeve pĂ«r kodifikimin e mesazheve diagnostikuese.
  • MbĂ«shtetje e zgjeruar pĂ«r standardin C23 (opennet.ru), pĂ«r shembull, Ă«shtĂ« realizuar mundĂ«sia e pĂ«rdorimit tĂ« atributit 'counted_by' pĂ«r tĂ« verifikuar saktĂ«sinĂ« e pĂ«rdorimit tĂ« treguesve.
  • Vazhduar implementimi i standardeve OpenMP 5.0, 5.1, 5.2 dhe 6.0 (Open Multi-Processing), qĂ« pĂ«rcaktojnĂ« API-tĂ« dhe metodat e aplikimit tĂ« teknikave tĂ«programimit tĂ« paralelet nĂ« sisteme me shumĂ« bĂ«rthama dhe hibride (CPU+GPU/DSP) me memorie tĂ« pĂ«rbashkĂ«t dhe blloqet e vektorizimit (SIMD). E pĂ«rmirĂ«suar implementimi i specifikimeve tĂ« programimit tĂ« paralelet OpenACC 3.0, 3.3 dhe 3.4, qĂ« pĂ«rcaktojnĂ« mjete pĂ«r tĂ« transferuar operacionet (offloading) nĂ« GPU dhe procesorĂ« tĂ« specializuar, siç janĂ« NVIDIA PTX.
  • NĂ« backend pĂ«r arkitekturĂ«n x86 Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ«t AMD bazuar nĂ« mikroarkitekturĂ«n Zen6 (-march=znver6), si dhe procesorĂ«t Intel Wildcat Lake (-march=wildcatlake) dhe Nova Lake (-march=novalake).
  • NĂ« backend e gjenerimit tĂ« kodit pĂ«r GPU AMD Radeon (GCN) Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r akceleratorĂ«t AMD Instinct MI300 (gfx942).
  • PĂ«r arkitekturĂ«n RISC-V, ARM, S/390 dhe LoongArch Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r tipin "_BitInt (N)" pĂ«r pĂ«rcaktimin e numrave tĂ« plotĂ« me numrin e specifikuar tĂ« bitĂ«ve.

Burimi: linux.org.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster