LLVM 16.0 i objavljen je i ovo su njegove vijesti

LLVM Logo

LLVM je okvir za razvoj kompajlera, kao i za pomoć u izgradnji novih programskih jezika i poboljšanju postojećih jezika.

Nakon nešto više od šest mjeseci razvoja, lansiranje nova verzija projekta LLVM 16.0, verzija u kojoj je implementiran veliki broj izmjena i poboljšanja.

Za one koji nisu upoznati sa LLVM-om, trebali biste znati da je ovo je GCC kompatibilan kompajler (kompajleri, optimizatori i generatori koda) koji kompajliraju programe u RISC-sličan virtuelni instrukcijski međubit kod (virtuelna mašina niskog nivoa sa višerazinskim sistemom optimizacije).

Generisani pseudokod može biti konvertovan od strane JIT kompajlera u mašinske instrukcije samo u vreme izvršavanja programa.

Glavne nove karakteristike LLVM 16.0

U ovoj novoj verziji koja je predstavljena možemo pronaći nekoliko važnih poboljšanja u clang 16.0, od kojih se ističe podrazumevani C++/ObjC++ standard, koji je postavljen na gnu++17 (ranije gnu++14), koji podrazumeva podršku za C++17 karakteristike sa GNU ekstenzijama po defaultu. Upotreba elemenata definisanih u C++17 standardu je dozvoljena u LLVM kodu.

Još jedna od promjena koja se ističe jeste da je dodana podrška za Cortex-A715, Cortex-X3 i Neoverse CPU V2, Armv8.3 ekstenzije i multiverzije za AArch64 backend.
La kompatibilnost platforme Armv2, Armv2A, Armv3 i Armv3M su ukinuti u backendu ARM arhitekture, za koji nije zagarantovano ispravno generisanje koda. Dodata mogućnost generiranja koda za upute za rad sa složenim brojevima i dodano podrška za arhitekture skupova instrukcija (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT u X86 backend.

Pored toga, povećani su zahtjevi za izgradnju LLVM, Također, build bi sada trebao biti kompatibilan sa C++17 standardom, tj. za izgradnju je potreban najmanje GCC 7.1, Clang 5.0, Apple Clang 10.0 ili Visual Studio 2019 16.7.

S druge strane, to također ističe poboljšana pozadina za MIPS, PowerPC i RISC-V arhitekture, kao i podršku za otklanjanje grešaka u 64-bitnim izvršnim datotekama za LoongArch arhitekturu u LLDB debuger i poboljšano rukovanje COFF simbolima za otklanjanje grešaka.

Od ostalih promjena koji se ističu:

  • U biblioteci Libc++ glavni rad je bio fokusiran na implementaciju podrške za nove karakteristike standarda C++20 i C++23.
  • Vrijeme povezivanja je značajno smanjeno u LDD linkeru paraleliziranjem skeniranja premještanja adrese i operacija inicijalizacije sekcije. Dodata podrška za kompresiju sekcija pomoću ZSTD algoritma.
  • Napredne funkcije implementirane sa C++20 standardom su također istaknute.
  • hvatanje strukturiranih veza u lambda funkcijama.
  • Operator jednakosti unutar izraza.
  • Sposobnost da se ne specificira ključna riječ typename u nekim kontekstima,
  • Dopuštenost inicijalizacije dodata između zagrada ("Aggr(val1, val2)").
  • Implementirane funkcije definirane u budućem C++2b standardu.
  • Podrška sa tipom char8_t,
  • Proširen raspon znakova dozvoljenih za upotrebu u "\N{…}",
  • Dodata mogućnost korištenja varijabli deklariranih kao "statički constexpr" u funkcijama deklariranim kao constexpr.
  • Implementirane funkcije definirane u budućem C2x C standardu:
  • Dodata podrška za učitavanje više konfiguracijskih datoteka (prvo se učitavaju zadane konfiguracijske datoteke, a zatim one specificirane preko “–config=” zastavice, koje se sada mogu specificirati više puta).
  • Promijenjen redoslijed učitavanja zadanih konfiguracijskih datoteka: clang pokušava prvo učitati datoteku - .cfg i ako ga ne može pronaći, pokušava učitati dvije datoteke .cfg and .cfg.
  • Dodana je nova zastavica izgradnje "-fcoro-aligned-allocation" za rutinsku distribuciju usklađenu s okvirom.
  • Dodata je oznaka "-fmodule-output" da bi se omogućio jednofazni model izrade standardnih C++ modula.
  • Dodan način rada "-Rpass-analysis=stack-frame-layout" za dijagnosticiranje problema s rasporedom okvira steka.
  • Dodan novi __attribute__((target_version("cpu_features"))) atribut i proširena funkcionalnost __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) atributa za odabir specifičnih verzija funkcija koje pruža CPU AArch64 .
  • Poboljšani dijagnostički alati:
  • Dodano upozorenje "-Wsingle-bit-bitfield-constant-conversion" za hvatanje implicitnog skraćivanja prilikom dodjeljivanja jednog bitovnom polju s jednim bitom.
  • Proširena dijagnostika za neinicijalizirane constexpr varijable.
  • Dodata upozorenja "-Wcast-function-type-strict" i "-Wincompatible-function-pointer-types-strict" kako bi se uhvatili potencijalni problemi prilikom prebacivanja tipova funkcija.

Konačno Ako ste zainteresirani da saznate više o tome, detalje možete provjeriti u sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.