LLVM 16.0 a bol vydaný a toto sú jeho novinky

Logo LLVM

LLVM je rámec pre vývoj kompilátorov, ako aj pomoc pri vytváraní nových programovacích jazykov a zlepšovaní existujúcich jazykov.

Po viac ako šiestich mesiacoch vývoja, spustenie nová verzia projektu LLVM 16.0, verzia, v ktorej je implementovaných veľké množstvo zmien a vylepšení.

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 16.0

V tejto novej verzii, ktorá je predstavená, môžeme nájsť niekoľko dôležitých vylepšení v clang 16.0, z ktorých vyniká predvolený štandard C++/ObjC++, ktorý je nastavený na gnu++17 (predtým gnu++14), ktorý znamená, že štandardne podporuje funkcie C++17 s rozšíreniami GNU. V kóde LLVM je povolené používanie prvkov definovaných v štandarde C++17.

Ďalšou zo zmien, ktorá vyniká, je to, že bola pridaná podpora procesorov Cortex-A715, Cortex-X3 a Neoverse Rozšírenia V2, Armv8.3 a funkcie viacerých verzií pre backend AArch64.
La kompatibilita platformy Armv2, Armv2A, Armv3 a Armv3M boli ukončené v backende architektúry ARM, pre ktorý nebolo zaručené správne generovanie kódu. Pridaná možnosť generovania kódu pre inštrukcie na prácu s komplexnými číslami a pridaná podpora architektúr inštrukčných sád (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT na backend X86.

Okrem toho, požiadavky na budovanie LLVM sa zvýšili, Zostava by teraz mala byť kompatibilná aj so štandardom C++17, t.j. zostava vyžaduje aspoň GCC 7.1, Clang 5.0, Apple Clang 10.0 alebo Visual Studio 2019 16.7.

Na druhej strane aj zvýrazňuje vylepšené backendy pre MIPS, PowerPC a RISC-V architektúry, ako aj podporu pre ladenie 64-bitových spustiteľných súborov pre architektúru LoongArch na ladiaci program LLDB a vylepšené spracovanie symbolov ladenia COFF.

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

  • V knižnici Libc++ bola hlavná práca zameraná na implementáciu podpory nových funkcií štandardov C++20 a C++23.
  • Linkový čas sa výrazne skrátil v LDD linkeri paralelizáciou operácií skenovania premiestnenia adries a inicializácie sekcií. Pridaná podpora pre kompresiu sekcií pomocou algoritmu ZSTD.
  • Vyzdvihnuté sú aj pokročilé funkcie implementované štandardom C++20.
  • zachytiť štruktúrované väzby vo funkciách lambda.
  • Operátor rovnosti vo výrazoch.
  • Schopnosť nešpecifikovať kľúčové slovo typename v niektorých kontextoch,
  • Povolenie inicializácie pridané medzi zátvorky ("Aggr(val1, val2)").
  • Implementované funkcie definované v budúcom štandarde C++2b.
  • Podpora poskytovaná s typom char8_t,
  • Rozšírený rozsah znakov povolených na použitie v "\N{…}",
  • Pridaná možnosť používať premenné deklarované ako "static constexpr" vo funkciách deklarovaných ako constexpr.
  • Implementované funkcie definované v budúcom štandarde C2x C:
  • Pridaná podpora pre načítanie viacerých konfiguračných súborov (najskôr sa načítajú predvolené konfiguračné súbory, potom tie, ktoré sú zadané pomocou príznaku „–config=“, ktorý je teraz možné zadať viackrát).
  • Zmenené poradie načítania predvolených konfiguračných súborov: clang sa pokúša načítať súbor ako prvý - .cfg a ak ho nenájde, pokúsi sa načítať dva súbory .cfg a .cfg.
  • Pridaný nový príznak zostavy „-fcoro-aligned-allocation“ pre rutinnú distribúciu zarovnanú s rámcom.
  • Pridaný príznak "-fmodule-output" na povolenie jednofázového zostavovacieho modelu štandardných modulov C++.
  • Pridaný režim "-Rpass-analysis=stack-frame-layout" na diagnostiku problémov s rozložením rámca zásobníka.
  • Pridaný nový atribút __attribute__((target_version("cpu_features"))) a rozšírená funkčnosť atribútu __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) na výber konkrétnych verzií funkcií poskytovaných CPU AArch64 .
  • Vylepšené diagnostické nástroje:
  • Pridané varovanie „-Wsingle-bit-bitfield-constant-conversion“ na zachytenie implicitného skrátenia pri priraďovaní jedného bitovému poľu so znamienkom s jedným bitom.
  • Rozšírená diagnostika pre neinicializované premenné constexpr.
  • Pridané upozornenia „-Wcast-function-type-strict“ a „-Wincompatible-function-pointer-types-strict“ na zachytenie potenciálnych problémov pri prenášaní typov funkcií.

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ť.