GCC 16

GCC 16

Pas një viti zhvillimi u publikua lëshimi i setit 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. Sipas skemës së numërimit të lëshimeve, versioni 16.0 u përdor gjatë zhvillimit, dhe pak përpara lëshimit të GCC 16.1 tashmë është degëzuar ajo GCC 17.0, mbi të cilën do të formohet lëshimi i ardhshëm i rëndësishëm GCC 17.1.

Main ndryshime:

  • MĂ«nyra e zakonshme pĂ«r gjuhĂ«n C++ Ă«shtĂ« ndryshuar pĂ«r tĂ« pĂ«rdorur standardin C++20 (dialekti GNU C++20, -std=gnu++20) nĂ« vend tĂ« asaj qĂ« ishte ofruar mĂ« parĂ« C++17. Zbatimi 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 kompaktimin e programeve nĂ« gjuhĂ«n e programimit Algol 68.
  • Shtuar mundĂ«sia pĂ«r tĂ« output-uar informacionin diagnostik nĂ« formatin HTML. Informacioni mbi zhvillimin e programit Ă«shtĂ« zgjeruar, duke u pĂ«rfshirĂ« nĂ« output-in diagnostik nĂ« formatin SARIF, i bazuar nĂ« JSON (mbĂ«shtetje pĂ«r «-fdiagnostics-format=json» Ă«shtĂ« ndĂ«rprerĂ«).
  • Zgjeruar optimizimet nĂ« fazĂ«n e lidhjes (LTO, Link-Time Optimization). Shtuar opsioni «-flto-toplevel-asm-heuristics», i cili pĂ«rfshin heuristikĂ«n pĂ«r tĂ« pĂ«rmirĂ«suar optimizimin e kodit me pĂ«rfshirje assembly. Teknikat e devirtuazimit spekulativ (-fdevirtualize-speculatively) tani nuk janĂ« tĂ« kufizuara nĂ« transformimin e metodave virtuale dhe mund tĂ« aplikohen gjatĂ« transformimit nĂ« thirrje direkte nga çdo thirrje indirekte tĂ« funksioneve, pĂ«r shembull, thirrjet pĂ«rmes treguesve.
  • Implementuar mbĂ«shtetje pĂ«r vektorizimin e cikleve, pĂ«r tĂ« cilat nĂ« fazĂ«n e kompaktimit numri i iteracioneve nuk dihet. Rritet efikasiteti i pĂ«rpunimit tĂ« daljeve tĂ« parakohshme nga cikli (pĂ«r shembull, pĂ«rmes break).
  • ËshtĂ« shtuar mbĂ«shtetje eksperimentale shumĂ« mundĂ«sitĂ« standardit tĂ« miratuar recently C++26. PĂ«r shembull, janĂ« implementuar:
    • Reflektimi (Reflection, «-freflection»), e cila lejon ndjekjen dhe modifikimin e elementeve tĂ« programit nĂ« fazĂ«n e kompaktimit. Shtuar operatorĂ«t e rinj «^^ (open-std.org)» pĂ«r marrjen e meta-informacionit mbi strukturĂ«n gramatikore dhe «[:
:]» pĂ«r tĂ« kryer transformimin e kundĂ«rt. PĂ«r transformimin dhe pĂ«rpunimin e informacionit tĂ« marrĂ« gjatĂ« inspektimit ofrohet biblioteka std::meta dhe janĂ« tĂ« disponueshme mundĂ«si tĂ« tilla si llogaritjet me konstanta.
    • Programimi kontraktual (Contracts), duke lejonĂ« tĂ« pĂ«rcaktohen spekifikimet formale tĂ« ndĂ«rfaqeve pĂ«rmes tre operatorĂ«ve tĂ« rinj: pre (parakusht), post (postkusht) dhe contract_assert (kontrolli i pohimit). Operator „pre“ pĂ«rcakton kushtet e mĂ«parshme qĂ« duhet tĂ« plotĂ«sohen para thirrjes (kontrolli i tĂ« dhĂ«nave tĂ« hyrjes); „post“ Ă«shtĂ« kushti qĂ« duhet tĂ« respektohet pas ekzekutimit (kĂ«rkesat pĂ«r tĂ« dhĂ«nat e daljes); contract_assert — kushtet pĂ«r ndodhitĂ« e pĂ«rjashtimeve. Kjo mundĂ«si do tĂ«Ò« Ă«shtĂ« e disponueshme nĂ« GCC 16.
    • Operatori „template for‟ pĂ«r ciklimin e elementeve, si paketat e parametrave, objekte qĂ« ngjasojnĂ« me tuple 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 zgjerohet pĂ«r çdo element dhe çdo iteracion trajtohet nĂ« njĂ« hapĂ«sirĂ« tĂ« veçantĂ«, ku elementi i sekuencĂ«s, mbi tĂ« cilĂ«n bazohet cikli Ă«shtĂ« njĂ« konstant pĂ«r çdo iteracion dhe mund tĂ« marrĂ« pjesĂ« nĂ« shprehjet konstante (constexpr). NĂ« kontekstin e refleksionit, „template for“ mund tĂ« pĂ«rdoret pĂ«r tĂ« kaluar mbi pronat e klasave apo enumerimeve.
    • Biblioteka std::simd pĂ«r paralelizimin e ekzekutimit tĂ« operacioneve mbi tĂ« dhĂ«na me ndihmĂ«n e grupeve tĂ« instruksioneve SIMD, si AVX-512 dhe NEON, duke pĂ«rdorur sistemin standard tĂ« tipave C++.
    • Bibliotekat std::inplace_vector, std::optional<T&>, std::copyable_function, std::function_ref, std::indirect, std::polymorphic dhe std::owner_equal.
  • JanĂ« zbatuar mundĂ«sitĂ« e lidhura me standardin C++23, si shprehimisht menaxhimi i jetĂ«s sĂ« objekteve dhe mbĂ«shtetje caktimi i kodimit tĂ« simboleve nĂ« mesazhet diagnostike.
  • ËshtĂ« zgjeruar mbĂ«shtetje pĂ«r standardin C23 (opennet.ru), pĂ«r shembull, Ă«shtĂ« zbatuar mundĂ«sia e pĂ«rdorimit tĂ« atributit „counted_by“ pĂ«r tĂ« verifikuar pĂ«rdorimin e saktĂ« tĂ« treguesve.
  • Ka vazhduar realizimi i standardeve OpenMP 5.0, 5.1, 5.2 dhe 6.0 (Open Multi-Processing), pĂ«rcaktojnĂ« API dhe mĂ«nyrat e aplikimit tĂ« metodave tĂ« programimit paralel nĂ« sisteme me shumĂ« bĂ«rthama dhe hibride (CPU+GPU/DSP) me memorie tĂ« pĂ«rbashkĂ«t dhe blloqe vektorizimi (SIMD). simulimit tĂ« çrregullimeve tĂ« perceptimit tĂ« ngjyrave. Simulimi i dykromacisĂ« protanopike, deuteranopike dhe tritanopike Ă«shtĂ« hequr. realizimi i specifikimeve tĂ« programimit paralel OpenACC 3.0, 3.3 dhe 3.4, tĂ« cilat pĂ«rcaktojnĂ« mjete pĂ«r nxjerrjen (offloading) tĂ« operacioneve nĂ« GPU dhe procesorĂ« tĂ« specializuar, si NVIDIA PTX.
  • NĂ« backend pĂ«r arkitekturĂ«n x86 Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ«t AMD tĂ« 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Ă« implementuar mbĂ«shtetje pĂ«r aceleratorĂ«t AMD Instinct MI300 (gfx942).
  • PĂ«r arkitekturĂ« RISC-V, ARM, S/390 dhe LoongArch Ă«shtĂ« implementuar 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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster