Lansohet paketa e kompilatorëve LLVM 15.0

Pas pas gjashtĂ« muajsh zhvillimi, u prezantua lĂ«shimi i projektit LLVM 15.0 — njĂ« mjet kompatibil me GCC (kompilatorĂ«, optimizues dhe gjeneratorĂ« kodi), qĂ« kompilon programe nĂ« njĂ« kod ndĂ«rmjetĂ«s pĂ«r instrukcionet virtuale tĂ« ngjashme me RISC (njĂ« makinĂ« virtuale me nivele tĂ« shumta optimizimesh). Kodi i gjeneruar mund tĂ« konvertohet pĂ«rmes JIT-kompilatorit nĂ« instruksione makine gjatĂ« ekzekutimit tĂ« programit.

Përmirësimet kryesore në Clang 15.0:

  • PĂ«r sistemet e bazuara nĂ« arkitekturĂ«n x86, Ă«shtĂ« shtuar flagu "-fzero-call-used-regs", i cili siguron zerimin e tĂ« gjitha registreve tĂ« pĂ«rdorura nĂ« funksion para rikthimit tĂ« kontrollit nga funksioni. Kjo opsion Ă«shtĂ« ndihmuese pĂ«r tĂ« mbrojtur nga rrjedhja e informacionit nga funksionet dhe redukton me rreth 20% numrin e blloqeve tĂ« pĂ«rshtatshĂ«m pĂ«r ndĂ«rtimin e ROP-gadgeteve (Programimi i Orientuar nga Kthesat) nĂ« eksploitĂ«.
  • ËshtĂ« realizuar rastĂ«sia e vendosjes nĂ« kujtesĂ« tĂ« strukturave pĂ«r kodin nĂ« gjuhĂ«n C, e cila e vĂ«shtirĂ«son nxjerrjen e tĂ« dhĂ«nave nga strukturat nĂ« rastin e shfrytĂ«zimit tĂ« dobĂ«sive. Rastezia aktivizohet dhe neutralizohet pĂ«rmes atributeve randomize_layout dhe no_randomize_layout dhe kĂ«rkon caktimin e njĂ« farse pĂ«rmes flagut "-frandomize-layout-seed" ose "-frandomize-layout-seed-file".
  • ËshtĂ« shtuar flagu "-fstrict-flex-arrays=", me anĂ« tĂ« tĂ« cilit mund tĂ« menaxhohet kufizimi pĂ«r elementin fleksibĂ«l-masĂ« nĂ« struktura (Flexible Array Members, njĂ« masĂ« me madhĂ«si tĂ« papĂ«rcaktuar nĂ« fund tĂ« njĂ« strukture). NĂ«se dĂ«rgohet vlera 0 (pĂ«r default), elementi i fundit i strukturĂ«s me masĂ« trajtohet gjithmonĂ« si masĂ« fleksibĂ«l, 1 — vetĂ«m madhĂ«sitĂ« [], [0] dhe [1] trajtohen si masĂ« fleksibĂ«l, 2 — vetĂ«m madhĂ«sitĂ« [] dhe [0] trajtohen si masĂ« fleksibĂ«l.
  • ËshtĂ« shtyrĂ« mbĂ«shtetje eksperimentale pĂ«r gjuhĂ«n e ngjashme me C HLSL (High-Level Shader Language), e cila pĂ«rdoret nĂ« DirectX pĂ«r tĂ« shkruar shenja.
  • ËshtĂ« shtuar parametri "-Warray-parameter", i cili paralajmĂ«ron pĂ«r mbivendosjen e funksioneve me shpallje argumentesh qĂ« nuk janĂ« nĂ« pĂ«rputhje, tĂ« lidhura me masat me gjatĂ«si fikse dhe tĂ« ndryshme.
  • ËshtĂ« pĂ«rmirĂ«suar kompatibiliteti me MSVC. ËshtĂ« shtuar mbĂ«shtetje pĂ«r "#pragma function" (tregon kompilatorit tĂ« gjenerojĂ« thirrje funksioni, pĂ«rveç shpĂ«rndarjes inline) dhe "#pragma alloc_text" (pĂ«rcakton emrin e seksionit me kodin e funksionit), tĂ« ofruara nĂ« MSVC. ËshtĂ« shtuar mbĂ«shtetje pĂ«r flagat e pĂ«rputhshme me MSVC /JMC dhe /JMC.
  • ËshtĂ« vazhduar punĂ«n pĂ«r tĂ« siguruar mbĂ«shtetje pĂ«r standardet e ardhshme C2X dhe C++23. PĂ«r gjuhĂ«n C janĂ« realizuar: atributi noreturn, fjalĂ«t kyçe false dhe true, tipi _BitInt(N) pĂ«r numrat e tĂ«rĂ« me njĂ« saktĂ«si tĂ« caktuar, makros *_WIDTH, prefix u8 pĂ«r karakteret nĂ« kodimin UTF-8.

    Për C++ janë realizuar: bashkimi i moduleve, izolimi i ABI anëtarëve të funksioneve, inicializimi dinamik i rregullt i variablave jologjikë në module, operatorët shumë-dimensional indeks, auto(x), variablat jo-literal, goto dhe etiketat në funksione, të shpallura si constexpr, sekuencat e arratisjes me ndarës, simbolet e arratisjes me emra.

  • JanĂ« zgjeruar mundĂ«sitĂ« e lidhura me mbĂ«shtetje OpenCL dhe OpenMP. ËshtĂ« shtuar mbĂ«shtetje pĂ«r zgjerimin OpenCL- cl_khr_subgroup_rotate.
  • PĂ«r arkitekturĂ«n x86 Ă«shtĂ« shtuar mbrojtja nga dobĂ«sitĂ« nĂ« procesorĂ«, tĂ« shkaktuara nga ekzekutimi spekulativ i instruksioneve pas operacioneve tĂ« kalimit tĂ« drejtpĂ«rdrejtĂ« tĂ« kushtĂ«zuar. Problemi lind pĂ«r shkak tĂ« procesimit tĂ« parashikueshĂ«m tĂ« instruksioneve, qĂ« ndjekin nĂ« kujtesĂ« menjĂ«herĂ« pas komandĂ«s sĂ« kalimit (SLS, Straight Line Speculation). PĂ«r tĂ« aktivizuar mbrojtjen, Ă«shtĂ« ofruar opsioni "-mharden-sls=[none|all|return|indirect-jmp]".
  • PĂ«r platformat me mbĂ«shtetje pĂ«r zgjerimin SSE2, Ă«shtĂ« shtuar tipi _Float16, i cili imitohet duke pĂ«rdorur tipin float nĂ« rast se mungon mbĂ«shtetja pĂ«r instruksionet AVX512-FP16.
  • ËshtĂ« shtuar flagu "-m[no-]rdpru" pĂ«r tĂ« menaxhuar pĂ«rdorimin e instruksionit RDPRU, i mbĂ«shtetur qĂ« nga procesorĂ«t AMD Zen2.
  • ËshtĂ« shtuar flagu "-mfunction-return=thunk-extern" pĂ«r tĂ« mbrojtur nga dobĂ«sia RETBLEED, qĂ« operon pĂ«rmes shtimit tĂ« njĂ« sekuence instruksionesh, duke pĂ«rjashtuar angazhimin e mekanizmit tĂ« ekzekutimit spekulativ pĂ«r kalimet indirekte.

Kryesoret përmirësime në LLVM 15.0:

  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r CPU Cortex-M85, arkitekturĂ«n Armv9-A, Armv9.1-A dhe Armv9.2-A, zgjerimet Armv8.1-M PACBTI-M.
  • ËshtĂ« shtuar njĂ« bllok eksperimentale pĂ«r DirectX, qĂ« mbĂ«shtet formatin DXIL (DirectX Intermediate Language), e cila pĂ«rdoret pĂ«r shenjat DirectX. Blloku aktivizohet duke specifikuar gjatĂ« ndĂ«rtimit parametrit "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX".
  • NĂ« Libc++ Ă«shtĂ« vazhduar realizimi i mundĂ«sive tĂ« reja tĂ« standarteve C++20 dhe C++2b, pĂ«rfshirĂ« pĂ«rfundimin e zbatimit tĂ« bibliotekĂ«s "format" dhe ofrimin e njĂ« varianti eksperimental tĂ« bibliotekĂ«s "ranges".
  • JanĂ« pĂ«rmirĂ«suar bllokĂ«t pĂ«r arkitekturĂ«n x86, PowerPC dhe RISC-V.
  • JanĂ« zgjeruar mundĂ«sitĂ« e lidhĂ«sit LLD dhe debuesit LLDB.

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