LLVM 15.0 prichádza s vylepšeniami pre rôzne backendy, väčšou podporou a ďalšími

LLVM 15 implementuje vylepšenia podpory

LLVM 15.0 tiež obsahuje množstvo zaujímavých aktualizácií C/C++.

Po šiestich mesiacoch vývoja Ohlásené vydanie projektu LLVM 15.0, v ktorom urobilo sa veľa zásadných zmien, ako aj pridanú podporu pre nové procesory, architektúry a ďalšie.

Pre tých, ktorí nepoznajú LLVM, mali by ste vedieť, že toto je kompilátor kompatibilný s GCC (kompilátory, optimalizátory a generátory kódu), ktorý kompiluje programy do medzibitového kódu virtuálnej inštrukcie podobnej RISC (nízkoúrovňový virtuálny stroj s viacúrovňovým optimalizačným systémom).

Vygenerovaný pseudokód môže kompilátor JIT previesť na strojové inštrukcie práve v čase vykonávania programu.

Hlavné nové funkcie LLVM 15.0

V tejto novej verzii, ktorá je prezentovaná, je zdôraznené, že podpora procesorov Cortex-M85, ako aj pre architektúry Armv9-A, Armv9.1-A a Armv9.2-A, rozšírenia Armv8.1-M PACBTI-M.

Ďalšou vynikajúcou zmenou je táto pridal experimentálny backend DirectX že podporuje formát DXIL (DirectX Intermediate Language) používaný pre DirectX shadery. Backend je povolený prostredníctvom možnosti zostavenia "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX".

libc++ pokračuje v implementácii nových funkcií štandardov C++20 a C++2b vrátane dokončenia implementácie knižnice „formát“ a navrhovanej experimentálnej verzie knižnice „rozsahov“.

Pre časť zmien týkajúcich sa Clang 15.0 sa uvádza, že pridaná experimentálna podpora pre jazyk podobný C HLSL (High-Level Shading Language), ktorý sa používa na písanie shaderov počnúc DirectX 9, ako aj na preklad shaderov HLSL do binárneho formátu DXIL (DirectX Intermediate Language) kompatibilného s DirectX 12, ako aj do formátu SPIR -V používaného spoločnosťou Vulkan. V budúcnosti, plán implementovať podporu pre formát DXBC (DirectX Bytecode) používaný v DirectX 9-11. Implementáciu poskytuje Microsoft a je založená na DirectX Shader Compiler, vydanom v roku 2017, postavenom na báze LLVM 3.7.

Tiež sa spomína, že pokračuje s pracovať na podpore budúcich štandardov C2X a C++23. Implementované pre jazyk C: atribút noreturn, kľúčové slová false a true, typ _BitInt(N) pre celé čísla danej bitovej hĺbky, makrá *_WIDTH, predpona u8 pre znaky UTF-8.

Okrem toho bol implementovaný pre C++: zlúčenie modulov, ABI izolácia funkčných členov, riadená dynamická inicializácia nelokálnych premenných v module, viacrozmerné indexové operátory, auto(x), neliterárne premenné, goto a návestia vo funkciách deklarovaných ako constexpr, oddelené escape sekvencie, pomenované escape znaky.

Pre systémy založené na architektúre x86, pridaný príznak „-fzero-call-used-regs“, ktorý poskytuje vynulovanie všetkých registrov CPU použitých vo funkcii pred vrátením kontroly z funkcie. túto možnosť chráni pred únikom dát funkcií a znížiť počet blokov vhodných na vytváranie zariadení ROP (Return Oriented Programming) v exploitoch asi o 20 %.

Bola implementovaná randomizácia miesta v pamäti štruktúr pre C kód, čo komplikuje extrakciu dát zo štruktúr v prípade zneužitia zraniteľností. Randomizácia sa zapína a vypína pomocou atribútov randomize_layout a no_randomize_layout a vyžaduje, aby bol zdroj nastavený s príznakom „-frandomize-layout-seed“ alebo „-frandomize-layout-seed-file“, aby sa zabezpečilo opakovateľné zostavenie.

Z ďalších zmien ktoré vynikajú:

  • Rozšírené možnosti súvisiace s podporou OpenCL a OpenMP. Pridaná podpora pre rozšírenie OpenCL cl_khr_subgroup_rotate.
  • Vylepšené backendy pre architektúry x86, PowerPC a RISC-V.
    Vylepšený LLD linker a LLDB debugger schopnosti.
  • Pridaný príznak "-fstrict-flex-arrays=" » pomocou ktorého môžete ovládať limity prvku mäkkého poľa v štruktúrach (Členovia mäkkého poľa, pole neurčitej veľkosti na konci štruktúry).
  • Pridaná možnosť "-warray-parameter" na varovanie pred prepisujúcimi funkciami s nezhodnými deklaráciami argumentov spojených s poliami s pevnou a premenlivou dĺžkou.
  • Vylepšená kompatibilita s MSVC.
  • Pridaná podpora pre „funkciu #pragma a „#pragma alloc_text“ poskytovanú v MSVC.
  • Pridaná podpora pre príznaky /JMC a /JMC kompatibilné s MSVC.
  • Pridaný príznak „-m[no-]rdpru“ na ovládanie použitia inštrukcie RDPRU, podporovanej procesormi AMD Zen2.
  • Pridaný príznak "-mfunction-return=thunk-extern" na ochranu pred zraniteľnosťou RETBLEED, ktorý funguje pridaním sekvencie inštrukcií, ktoré vylučujú účasť mechanizmu špekulatívneho vykonávania pre nepriame skoky.

Konečne Ak máte záujem dozvedieť sa viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.