Lëshimi i paketës së kompilatorëve GCC 16

Pas një viti zhvillimi, është publikuar lëshimi i paketës së lirë të kompilatorëve GCC 16.1, lëshimi i parë domethënës në degën e re GCC 16.x. Sipas skemës së numrave të lëshimeve, versioni 16.0 u përdor gjatë zhvillimit, dhe pak para daljes së GCC 16.1, u shkëput dega GCC 17.0, mbi të cilën do të formohet lëshimi i ardhshëm domethënës GCC 17.1.

Ndryshimet kryesore:

  • ReĆŸimi default pĂ«r gjuhĂ«n C++ Ă«shtĂ« kaluar nĂ« pĂ«rdorimin e standardit C++20 (dialekti GNU C++20, -std=gnu++20) nĂ« vend tĂ« C++17 qĂ« ishte ofruar mĂ« parĂ«. Implementimi i C++20 nĂ« bibliotekĂ«n standarde Ă«shtĂ« shpallur i qĂ«ndrueshĂ«m.
  • NĂ« paketĂ« Ă«shtĂ« pĂ«rfshirĂ« njĂ« front-end eksperimental ga68 pĂ«r kompilerimin e programeve nĂ« gjuhĂ«n e programimit Algol 68.
  • ËshtĂ« shtuar mundĂ«sia e daljes sĂ« informacionit diagnostik nĂ« formatin HTML. Informacioni mbi ekzekutimin e programit Ă«shtĂ« zgjeruar, duke u pĂ«rfshirĂ« nĂ« daljen e diagnostikĂ«s nĂ« formatin SARIF, i bazuar nĂ« JSON (mbĂ«shtetje pĂ«r «-fdiagnostics-format=json» Ă«shtĂ« ndalur).
  • Shtesat pĂ«r optimizimin gjatĂ« fazĂ«s sĂ« lidhjes (LTO, Link-Time Optimization) janĂ« zgjeruar. Shtuar opsioni «-flto-toplevel-asm-heuristics», i cili pĂ«rfshin heuristikĂ«n pĂ«r pĂ«rmirĂ«simin e optimizimit tĂ« kodit me pĂ«rfshirje assembler. Teknika e devvirtalizimit spekulativ (-fdevirtualize-speculatively) tani nuk Ă«shtĂ« e kufizuar nĂ« transformimin e metodave virtuale dhe mund tĂ« aplikohet kur konvertohen nĂ« thirrje direkte tĂ« çdo thirrjeje indirekte, p.sh., thirrjeve 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.
  • ËshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r shumĂ« mundĂ«si tĂ« standardit tĂ« sapo miratuar C++26. PĂ«r shembull, janĂ« zbatuar:
    • Reflektimi (Reflection, «-freflection»), qĂ« lejon gjurmimin dhe modifikimin e elementeve tĂ« programit gjatĂ« fazĂ«s sĂ« kompajtimit. JanĂ« shtuar operatorĂ« tĂ« rinj «^^» pĂ«r marrjen e metainformacionit mbi konstrukcionin gramatikor dhe «[:
:]» pĂ«r kryerjen e transformimit tĂ« kundĂ«rt. PĂ«r transformimin dhe pĂ«rpunimin e informacionit qĂ« Ă«shtĂ« marrĂ« gjatĂ« inspektimit, Ă«shtĂ« propozuar biblioteka std::meta dhe janĂ« tĂ« disponueshme mundĂ«si tĂ« tilla si llogaritjet me konstanta.
    • Programimi kontraktual (Contracts), qĂ« lejon pĂ«rcaktimin e specifikimeve formale tĂ« interface-ve me anĂ« tĂ« tre operatorĂ«ve tĂ« rinj: pre (parakushte), post (pas kushte) dhe contract_assert (kontrolli i pohimeve). OperatorĂ«t «pre» pĂ«rcaktojnĂ« kushtet paraprake qĂ« duhet tĂ« pĂ«rmbushen para thirrjes (kontrolli i tĂ« dhĂ«nave tĂ« hyrjes); «post» — kushtet qĂ« duhet tĂ« respektohen pas ekzekutimit (kĂ«rkesat pĂ«r tĂ« dhĂ«nat e daljes); contract_assert — kushtet pĂ«r shfaqjen e pĂ«rjashtimeve. Kjo mundĂ«si do tĂ« shfaqet nĂ« GCC 16.
    • Operatori «template for» pĂ«r tĂ« pĂ«rshkuar elementĂ«t, siç janĂ« paketat e parametrave, objektet tĂ« ngjashme me tupla dhe rezultatet e refleksionit (metaobjekte), nĂ« fazĂ«n e kompilimit nĂ« stilin e njĂ« cikli tĂ« zakonshĂ«m. GjatĂ« ekzekutimit tĂ« «template for», trupi i ciklit shpaloset pĂ«r çdo element dhe çdo iterim procesi nĂ« njĂ« hapĂ«sirĂ« tĂ« veçantĂ« tĂ« dukshmĂ«risĂ«, ku elementi i sekuencĂ«s pĂ«r tĂ« cilin iteron cikli Ă«shtĂ« konstante pĂ«r çdo iterim dhe mund tĂ« pĂ«rfshihet nĂ« shprehje konstante (constexpr). NĂ« kontekstin e refleksionit, «template for» mund tĂ« pĂ«rdoret pĂ«r tĂ« pĂ«rshkuar pronat e klasave ose enumeracioneve.
    • 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Ă« implementuar funksionalitete tĂ« lidhura me standardin C++23, si menaxhimi eksplicit i kohĂ«zgjatjes sĂ« objekteve dhe mbĂ«shtetje pĂ«r specifikimin e kodimit tĂ« karaktereve tĂ« mesazheve diagnostikuese.
  • ËshtĂ« zgjeruar mbĂ«shtetje pĂ«r standardin C23, pĂ«r shembull, Ă«shtĂ« realizuar mundĂ«sia e pĂ«rdorimit tĂ« atributit "counted_by" pĂ«r kontrollin e saktĂ«sisĂ« sĂ« pĂ«rdorimit tĂ« treguesve.
  • Ka 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Ă« metodave tĂ« programimit paralel nĂ« sisteme me shumĂ« bĂ«rthama dhe hibrid (CPU+GPU/DSP) me memorie tĂ« pĂ«rbashkĂ«t dhe blloqe vektorizimi (SIMD). Ka pĂ«rmirĂ«suar implementimin e specifikimeve tĂ« programimit paralel OpenACC 3.0, 3.3 dhe 3.4, qĂ« pĂ«rcaktojnĂ« mjetet pĂ«r zhvendosjen (offloading) e operacioneve nĂ« GPU dhe procesorĂ«t e specializuar, si 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: opennet.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