LLVM 16.0 i to je objavljeno i ovo su njegove novosti

Logotip LLVM

LLVM je okvir za razvoj kompajlera, kao i 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 velik broj izmjena i poboljšanja.

Za one koji nisu upoznati s LLVM-om, trebali biste znati da ovo je GCC kompatibilan prevodilac (kompilatori, optimizatori i generatori koda) koji kompajlira programe u srednji bit kod virtualnih instrukcija nalik RISC-u (virtualni stroj niske razine s višerazinskim optimizacijskim sustavom).

Generirani pseudokod JIT kompajler može pretvoriti u strojne instrukcije upravo u trenutku izvođenja programa.

Glavne nove značajke LLVM-a 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 zadani standard C++/ObjC++ koji je postavljen na gnu++17 (prije gnu++14), koji podrazumijeva podršku za značajke C++17 s GNU ekstenzijama prema zadanim postavkama. Korištenje elemenata definiranih u standardu C++17 dopušteno je u kodu LLVM.

Još jedna od promjena koja se ističe je da je dodan podrška za procesore Cortex-A715, Cortex-X3 i Neoverse V2, Armv8.3 proširenja i značajke s više verzija za pozadinu AArch64.
La kompatibilnost platforme Armv2, Armv2A, Armv3 i Armv3M su ukinuti u pozadini ARM arhitekture, za koju nije zajamčeno ispravno generiranje koda. Dodana 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 pozadinu.

Osim toga, zahtjevi za izgradnju LLVM su povećani, Također, izrada bi sada trebala biti kompatibilna sa standardom C++17, tj. izrada zahtijeva najmanje GCC 7.1, Clang 5.0, Apple Clang 10.0 ili Visual Studio 2019 16.7.

S druge strane, također ističe poboljšana pozadina za MIPS, PowerPC i RISC-V arhitekture, kao i podršku za ispravljanje pogrešaka 64-bitnih izvršnih datoteka za LoongArch arhitekturu u LLDB debugger i poboljšano rukovanje COFF simbolima za ispravljanje pogrešaka.

Od ostalih promjena koji se ističu:

  • U biblioteci Libc++ glavni rad bio je usmjeren na implementaciju podrške za nove značajke standarda C++20 i C++23.
  • Vrijeme veze značajno je smanjeno u LDD povezivaču paraleliziranjem skeniranja premještanja adresa i operacija inicijalizacije odjeljka. Dodana podrška za kompresiju odjeljaka pomoću ZSTD algoritma.
  • Također su istaknute napredne funkcije implementirane sa standardom C++20.
  • uhvatiti strukturirane veze u lambda funkcijama.
  • Operator jednakosti unutar izraza.
  • Mogućnost nenavođenja ključne riječi typename u nekim kontekstima,
  • Dopuštenost inicijalizacije dodana između zagrada ("Aggr(val1, val2)").
  • Implementirane funkcije definirane u budućem C++2b standardu.
  • Podršku pruža tip char8_t,
  • Proširen je raspon znakova dopuštenih za upotrebu u "\N{…}",
  • Dodana je mogućnost korištenja varijabli deklariranih kao "static constexpr" u funkcijama deklariranim kao constexpr.
  • Implementirane funkcije definirane u budućem C2x C standardu:
  • Dodana je podrška za učitavanje višestrukih konfiguracijskih datoteka (prvo se učitavaju zadane konfiguracijske datoteke, a zatim one navedene preko oznake “–config=”, koje se sada mogu navesti više puta).
  • Promijenjen redoslijed učitavanja zadanih konfiguracijskih datoteka: clang pokušava prvi učitati datoteku - .cfg i ako ga ne može pronaći, pokušava učitati dvije datoteke .cfg i .cfg.
  • Dodana je nova oznaka izgradnje "-fcoro-aligned-allocation" za rutinsku distribuciju usklađenu s okvirom.
  • Dodana je oznaka "-fmodule-output" kako bi se omogućio jednofazni model izgradnje standardnih C++ modula.
  • Dodan način "-Rpass-analysis=stack-frame-layout" za dijagnosticiranje problema s rasporedom okvira hrpe.
  • Dodan je novi atribut __attribute__((target_version("cpu_features")))) i proširena funkcionalnost atributa __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) atribut za odabir određenih verzija značajki koje pruža CPU AArch64 .
  • Poboljšani dijagnostički alati:
  • Dodano upozorenje "-Wsingle-bit-bitfield-constant-conversion" za hvatanje implicitnog skraćivanja prilikom dodjele jednobitnom bitnom polju s predznakom.
  • Proširena dijagnostika za neinicijalizirane constexpr varijable.
  • Dodana su upozorenja "-Wcast-function-type-strict" i "-Wincompatible-function-pointer-types-strict" za uočavanje potencijalnih problema s tipovima funkcija emitiranja.

Konačno Ako vas zanima više o tome, pojedinosti možete provjeriti u sljedeći link.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.