Lëshimi i paketës së kompilatorëve LLVM 13.0

Pas disa muajsh zhvillimi, u publikua versioni i projektit LLVM 13.0 — njĂ« mjet i pĂ«rputhshĂ«m me GCC (kompilatorĂ«, optimizues dhe gjeneratorĂ« kodi), qĂ« kompilon programet nĂ« midis tĂ« bit kodit tĂ« instrukcioneve virtuale tĂ« ngjashme me RISC (njĂ« makinĂ« virtuale me nivel tĂ« ulĂ«t me njĂ« sistem optimizimi shumĂ«-niveli). Pseudokodi i gjeneruar mund tĂ« transformohet pĂ«rmes JIT kompilatorit nĂ« instrukcione makine nĂ« momentin e ekzekutimit tĂ« programit.

Përmirësime në Clang 13.0:

  • U realizua mbĂ«shtetje pĂ«r thirrje tĂ« garantuara tail (thirrje nĂ« fund tĂ« funksionit qĂ« krijon rekursivitet tail nĂ« rastin kur funksioni thirret vetĂ«). MbĂ«shtetje pĂ«r thirrje tĂ« garantuara tail Ă«shtĂ« siguruar pĂ«rmes atributit «[[clang::musttail]]» nĂ« C++ dhe «__attribute__((musttail))» nĂ« C, tĂ« aplikuara nĂ« shprehjen «return». Kjo mundĂ«si lejon realizimin e optimizimeve pĂ«rmes zhvillimit tĂ« kodit nĂ« njĂ« iteracion tĂ« sheshtĂ« pĂ«r tĂ« kursyer pĂ«rdorimin e piles.
  • NĂ« deklaratat «using» dhe zgjerimet e clang Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r definimin e atributeve nĂ« stilin C++11, duke pĂ«rdorur formatin «[[]]».
  • U shtua flamuri «-Wreserved-identifier» pĂ«r tĂ« nxjerrĂ« njĂ« paralajmĂ«rim kur tregohen identifikatorĂ« tĂ« rezervuar nĂ« kodin pĂ«rdorues.
  • U shtuan flamujt «-Wunused-but-set-parameter» dhe «-Wunused-but-set-variable» pĂ«r tĂ« nxjerrĂ« njĂ« paralajmĂ«rim nĂ«se njĂ« parameter ose njĂ« variabĂ«l Ă«shtĂ« vendosur, por nuk pĂ«rdoret.
  • U shtua flamuri «-Wnull-pointer-subtraction» pĂ«r tĂ« nxjerrĂ« njĂ« paralajmĂ«rim nĂ«se kodi mund tĂ« çojĂ« nĂ« sjellje tĂ« paqartĂ« pĂ«r shkak tĂ« pĂ«rdorimit tĂ« njĂ« treguesi tĂ« null nĂ« operacionet e zbritjes.
  • U shtua flamuri «-fstack-usage» pĂ«r tĂ« gjeneruar pĂ«r çdo dosje me kod njĂ« dosje shtesĂ« «.su», e cila pĂ«rmban informacione mbi madhĂ«sinĂ« e kadrove tĂ« piles pĂ«r çdo funksion tĂ« caktuar nĂ« dosjen e pĂ«rpunuar.
  • NĂ« analizuesin statik u shtua njĂ« lloj i ri dalĂ«s — «sarif-html», duke çuar nĂ« formimin e raporteve njĂ«kohĂ«sisht nĂ« formatet HTML dhe Sarif. U shtua njĂ« kontroll i ri allocClassWithName. NĂ«se Ă«shtĂ« e specifikuar opsioni «-analyzer-display-progress», siguron daljen e kohĂ«s sĂ« analizĂ«s pĂ«r çdo funksion. ËshtĂ« afĂ«rsisht e gatshme analiza e treguesve tĂ« mençur (alpha.cplusplus.SmartPtr).
  • JanĂ« zgjeruar mundĂ«sitĂ« qĂ« lidhen me mbĂ«shtetje OpenCL. U shtua mbĂ«shtetje pĂ«r zgjerime tĂ« reja cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields dhe __cl_clang_non_portable_kernel_param_types. U vazhdua realizimi i specifikimeve OpenCL 3.0. PĂ«r C, specifikimi OpenCL 1.2 Ă«shtĂ« aktivizuar si parazgjedhje, pĂ«rveç nĂ«se njĂ« version tjetĂ«r Ă«shtĂ« specifikuar shprehimisht. PĂ«r C++ Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r skedarĂ« me zgjedhje «.clcpp».
  • U realizua mbĂ«shtetje pĂ«r direktivat e transformimit tĂ« cikleve («#pragma omp unrol» dhe «#pragma omp tile»), tĂ« definuara nĂ« specifikimin OpenMP 5.1.
  • NĂ« mjetin clang-format u shtuan opsionet: SpacesInLineCommentPrefix pĂ«r tĂ« pĂ«rcaktuar numrin e hapĂ«sirave para komenteve, IndentAccessModifiers, LambdaBodyIndentation dhe PPIndentWidth pĂ«r tĂ« menaxhuar radhitjen e deklaratave, shprehjeve lambda dhe direktivave tĂ« paraprocesorit. MundĂ«sitĂ« e renditjes sĂ« pĂ«rfshirjes sĂ« skedave janĂ« zgjeruar. U shtua mbĂ«shtetje pĂ«r formatimin e skedarĂ«ve JSON.
  • NĂ« linter clang-tidy u shtua njĂ« sasi e madhe e kontrolleve tĂ« reja.

Novitetet kryesore në LLVM 13.0:

  • U shtua opsioni «-ehcontguard» pĂ«r tĂ« pĂ«rdorur teknologjinĂ« CET (Windows Control-flow Enforcement Technology) pĂ«r tĂ« mbrojtur nĂ« fazĂ«n e trajtimit tĂ« pĂ«rjashtimeve nga ekzekutimi i shfrytĂ«zimeve tĂ« ndĂ«rtuara duke pĂ«rdorur teknikat e programimit tĂ« orientuar nga kthimi (ROP, Return-Oriented Programming).
  • Projekti debuginfo-test u rinovua nĂ« cross-project-tests dhe Ă«shtĂ« e projektuar pĂ«r testimin e komponenteve nga projekte tĂ« ndryshme, pa u kufizuar nĂ« informacionin pĂ«r debugimin.
  • NĂ« sistemin e ndĂ«rtimit, u siguruar mbĂ«shtetje pĂ«r ndĂ«rtimin e disa distribucioneve, pĂ«r shembull, njĂ« me mjete dhe njĂ« tjetĂ«r me biblioteka pĂ«r zhvillues.
  • NĂ« backend pĂ«r arkitekturĂ«n AArch64 nĂ« asamblues, u realizua mbĂ«shtetje pĂ«r zgjerimet Armv9-A RME (Realm Management Extension) dhe SME (Scalable Matrix Extension).
  • NĂ« backend pĂ«r arkitekturĂ«n Hexagon u shtua mbĂ«shtetje pĂ«r ISA V68/HVX.
  • NĂ« backend pĂ«r arkitekturĂ«n x86 u pĂ«rmirĂ«sua mbĂ«shtetja pĂ«r procesorĂ«t AMD Zen 3.
  • NĂ« backend AMDGPU u shtua mbĂ«shtetje pĂ«r APU GFX1013 RDNA2.
  • NĂ« Libc++ vazhdoi realizimi i mundĂ«sive tĂ« reja tĂ« standardeve C++20 dhe C++2b, pĂ«rfshirĂ« pĂ«rfundimin e librit «concepts». PĂ«r platformĂ«n Windows bazuar nĂ« MinGW, u shtua mbĂ«shtetje pĂ«r std::filesystem. U ndanĂ« skedarĂ«t e titujve <algorithm>, <iterator> dhe <utility>. U shtua opsioni i ndĂ«rtimit LIBCXX_ENABLE_INCOMPLETE_FEATURES pĂ«r tĂ« çaktivizuar skedarĂ«t e titujve me funksionalitete tĂ« implementuara jo plotĂ«sisht.
  • MundĂ«sitĂ« e linker LLD u zgjeruan, ku u realizua mbĂ«shtetje pĂ«r procesorĂ«t Aarch64 Big-endian, dhe backend Mach-O u soll nĂ« njĂ« gjendje qĂ« lejon pĂ«rmbledhjen e programeve tĂ« zakonshme. U pĂ«rfshinĂ« pĂ«rmirĂ«sime tĂ« nevojshme pĂ«r pĂ«rmbledhjen e Glibc duke pĂ«rdorur LLD.
  • NĂ« mjetin llvm-mca (Analizuesi i Kodit tĂ« MakinerisĂ«) Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r procesorĂ«t qĂ« ekzekutojnĂ« instruksionet nĂ« rend (in-order superscalar pipeline), si ARM Cortex-A55.
  • NĂ« debugger-in LLDB pĂ«r platformĂ«n AArch64 Ă«shtĂ« realizuar mbĂ«shtetje e plotĂ« pĂ«r autentikimin e treguesve (Pointer Authentication), mekanizmin MTE (MemTag, Memory Tagging Extension) dhe regjistrat SVE. JanĂ« shtuar komandat qĂ« lejojnĂ« lidhjen e etiketave me çdo operacion alokimi tĂ« memories dhe organizimin e kontrollit tĂ« treguesit gjatĂ« qasjes nĂ« memorje, i cili duhet tĂ« lidhet me etiketĂ«n e saktĂ«.
  • NĂ« pĂ«rbĂ«rje tĂ« ndĂ«rtimeve binare tĂ« formuara nga projekti janĂ« shtuar debugger-i LLDB dhe frontend-i pĂ«r gjuhĂ«n Fortran - Flang.

Burimi: opennet.ru

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