Publikuar seti i kompilatorëve LLVM 19

Pas disa muajsh zhvillimi, është zhvilluar versioni i projektit LLVM 19.1.0, i cili përmirëson mjetet (kompiluesit, optimizuesit dhe gjeneruesit e kodit) që kompilohet programet në kodin e ndërmjetëm RISC-podobne të instrukcioneve virtuale (një makinë virtuale me shumë nivele optimizimi). Pseudokodi i gjeneruar mund të kthehet në kodin e makinës për platformën e caktuar, ose të përdoret nga kompiluesi JIT për të formuar instruksionet e makinës në kohë reale gjatë ekzekutimit të programit. Bazuar në teknologjitë LLVM, projekti zhvillon kompiluesin Clang, i cili mbështet gjuhët e programimit C, C++ dhe Objective-C. Duke filluar nga filiali i kaluar, projekti kaloi në një model të ri për formimin e numrave të versioneve, sipas të cilit lëshimi zero ("N.0") përdoret gjatë zhvillimit, ndërsa versioni i parë stabile merret me numrin "N.1".

Në mesin e përmirësimeve në Clang 19:

  • JanĂ« shtuar mundĂ«sitĂ« e pĂ«rcaktuara nĂ« standardin C23:
    • mbĂ«shtetje pĂ«r pĂ«rdorimin e specifikatorit constexpr pĂ«r definimin e objekteve;
    • makros INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX dhe LDBL_NORM_MAX nĂ« float.h;
    • mekanizmi «#embed» pĂ«r integrimin e burimeve binare;
    • tipi char8_t pĂ«r stringjet dhe karakteret nĂ« UTF-8.
  • JanĂ« realizuar tĂ« gjitha mundĂ«sitĂ« e pĂ«rcaktuara nĂ« standardin C++17. Elemente pĂ«rkatĂ«se u pĂ«rfshinĂ« pĂ«r tĂ« lidhur parametrat e shabllonit me argumente tĂ« pĂ«rshtatshme, tĂ« cilat ishin çaktivizuar me dy standarde pĂ«r shkak tĂ« problemeve tĂ« mbĂ«shtetjes.
  • NĂ« mĂ«nyrĂ«n C++14, mbĂ«shtetjeja pĂ«r funksionin delete me specifikimin e madhĂ«sisĂ« (sized deallocation) Ă«shtĂ« aktivizuar si standart.
  • Shtuar mundĂ«si tĂ« reja nĂ« standardin C++20: funksionet e ndĂ«rtuara __is_layout_compatible dhe __is_pointer_interconvertible_base_of; mbĂ«shtetje e plotĂ« pĂ«r shprehjet pĂ«r importimin e moduleve; mbĂ«shtetje fillestare pĂ«r pĂ«rcaktimin automatik tĂ« tipeve tĂ« argumenteve tĂ« shabllonit tĂ« klasĂ«s pĂ«r aliaset e tipeve tĂ« krijuara pĂ«rmes shabllonĂ«ve (CTAD pĂ«r Alias Template).
  • Shtuar mundĂ«si tĂ« reja nĂ« standardin C++20: zgjatja e jetĂ«s sĂ« objekteve pĂ«rkohĂ«sore nĂ« ciklet qĂ« pĂ«rfshijnĂ« vargje; supozita tĂ« transferueshme; lehtĂ«simi i kufizimeve pĂ«r constexpr dhe çaktivizimi i diagnostikĂ«s «-Winvalid-constexpr»; mbĂ«shtetje pĂ«r funksione statike dhe eksplicite anĂ«tarĂ«sh me lista tĂ« njĂ«jta parametrash.
  • JanĂ« shtuar mundĂ«sitĂ« e lidhura me standardin e ardhshĂ«m C++2c (C++26): indeksimi i paketĂ«s sĂ« parametrave nĂ« shabllone; sintaksa ‘= delete(«arsye»)’; atribute pĂ«r lidhje tĂ« strukturuara; ndalimi i lidhjes sĂ« glvalue tĂ« kthyer me njĂ« vlerĂ« tĂ« pĂ«rkohshme; ciklet triviale pa fund pa sjellje tĂ« pasigurt; raportimi i gabimeve kur hiqet njĂ« tregues pĂ«r njĂ« tip tĂ« paplotĂ«; pĂ«rdorimi i kufizimeve nĂ« shprehjet e pĂ«rmbledhjes (« »).
  • Shtuar flamuj tĂ« rinj kompilatorĂ«sh:
    • «-fsanitize=implicit-bitfield-conversion» pĂ«r kontrollin e prerjeve tĂ« paqarta dhe ndryshimit tĂ« shenjĂ«s gjatĂ« punĂ«s me fushat e bitĂ«ve.
    • «-fsanitize=implicit-integer-conversion» pĂ«r kontrollin e konvertimeve tĂ« paqarta tĂ« numrave tĂ« plotĂ«.
    • «-Wmissing-designated-field-initializers» pĂ«r identifikimin e inicializatorĂ«ve tĂ« munguar pĂ«r fushat.
    • «-fexperimental-modules-reduced-bmi» pĂ«r aktivizimin e BMI tĂ« reduktuar (Binary Module Interface) pĂ«r modulat e emĂ«ruara C++20, duke lejuar pĂ«rdorimin e modulave standarde C++.
    • «-fexperimental-late-parse-attribute» pĂ«r aktivizimin e analizes sĂ« vonuar tĂ« atributeve nĂ« kontekste specifike, pĂ«r shembull, atributi counted_by.
    • «-fseparate-named-sections» pĂ«r krijimin e sekcioneve unike tĂ« ndara pĂ«r simbolet globale nĂ« seksione speciale tĂ« emĂ«ruara.
    • «-fms-define-stdc» pĂ«rkompatibilitetin e STDC me MSVC.
    • «-Wc++23-compat» dhe «-Wc++2c-compat» janĂ« grupe paralajmĂ«rimesh pĂ«r lehtĂ«simin e migruese nĂ« C++23 dhe C++26.
    • «-fdisable-block-signature-string» pĂ«r tĂ« çaktivizuar gjenerimin e njĂ« nise me nĂ«nshkrim pĂ«r blloqe.
    • «-fpointer-tbaa» pĂ«r tĂ« etiketuar treguesit e pa kompatibĂ«l, duke pĂ«rdorur analizĂ«n e aliasĂ«ve tĂ« bazuar nĂ« tipa (TBAA).
  • JanĂ« shtuar atribute tĂ« reja: sized_by, counted_by_or_null, nonblocking, nonallocating, blocking, allocating, sized_by_or_null, amdgpu_max_num_work_groups(x, y, z).
  • JanĂ« shtuar funksione tĂ« reja tĂ« integruara: __builtin_readsteadycounter, __builtin_popcountg, __builtin_clzg, __builtin_ctzg, __is_bitwise_cloneable.
  • JanĂ« zgjeruar mjetet e diagnostikimit dhe analizĂ«s statike, janĂ« shtuar kontrolle tĂ« reja.

Novitetet kryesore të LLVM 19:

  • NĂ« backend pĂ«r arkitekturĂ«n RISC-V Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r zgjerimet Zabha (operacione atomike me memorie), Ssqosid, Ssnpm, Smnpm, Smmpm, Sspm dhe Supm (pĂ«rdorimi i maskave pĂ«r treguesit), Zba, Zbb, Zbs. MbĂ«shtetja pĂ«r zgjerimet Ztso, Zabha, Zaamo dhe Zalrsc Ă«shtĂ« stabilizuar.
  • NĂ« backend pĂ«r arkitekturĂ«n AArch64 Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ«t Cortex-R82AE, Cortex-A78AE, Cortex-A520AE, Cortex-A720AE, Cortex-A725, Cortex-X925, Neoverse-N3, Neoverse-V3 dhe Neoverse-V3AE.
  • NĂ« backend pĂ«r arkitekturĂ«n ARM Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorin Cortex-R52+.
  • Backendet pĂ«r arkitekturĂ«n X86, LoongArch, WebAssembly, MIPS, PowerPC dhe AMDGPU janĂ« pĂ«rmirĂ«suar.
  • JanĂ« zgjeruar mundĂ«sitĂ« e organizuesit LLD. JanĂ« shtuar lloje tĂ« reja zhvendosjesh (relocations): CREL, GNU_PROPERTY_AARCH64_FEATURE_PAUTH, R_AARCH64_AUTH_ABS64 dhe R_AARCH64_AUTH_RELATIVE. ËshtĂ« shtuar parametri «—compress-sections ={none,zlib,zstd}[:level]» pĂ«r tĂ« zgjedhur algoritmin e kompresimit tĂ« seksioneve.
  • NĂ« bibliotekĂ«n Libc++ Ă«shtĂ« vazhduar implementimi i mundĂ«sive tĂ« standardeve C++20, C++23 dhe C++26.
  • Nga 3.6 deri nĂ« 3.8 janĂ« rritur kĂ«rkesat pĂ«r versionin e Python-it qĂ« nevojitet pĂ«r ndĂ«rtimin e LLVM.

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