LLVM 11.0 stiže s ažuriranjem na Python 3, poboljšanjima za RISC-V i više

LLVM

Nakon šest meseci razvoja predstavljeno je predstavljanje novog izdanja projekta LLVM 11.0 u kojem je predstavljeno nekoliko poboljšanja, poput ažuriranja na Python 3, zakrpe koje podržavaju eksperimentalne upute u RISC-V i mnoge druge promjene.

Oni koji nisu upoznati sa LLVM, trebali bi znati o čemu se radi priručnik kompatibilan sa GCC-om (kompajleri, optimizatori i generatori koda) koji kompajlira programe u posredne virtualne upute slične bit-kodu slične RISC-u (virtualna mašina niske razine s višestepenim sistemom optimizacije).

Dizajniran je za optimizaciju vremena kompilacije, vrijeme vezivanja, vrijeme izvršavanja u bilo kojem programskom jeziku koji korisnik želi definirati. Izvorno implementirano za kompajliranje C i C ++, Jezički agnostički dizajn LLVM-a i uspjeh projekta iznjedrili su širok spektar jezika.

Generirani pseudo-kod može se pretvoriti pomoću JIT kompajlera u mašinske upute izravno u vrijeme izvođenja programa.

Glavne nove karakteristike LLVM 11.0

U ovoj novoj verziji LLVM 11.0 sistem izgradnje premješten je na Python 3Kao takav, upotreba Pythona 3 nije prisiljena, jer u slučaju da nije dostupan, opcija vraćanja je implementirana za upotrebu Pythona 2.

Atribut dodana je vektorska funkcija-abi-varijanta do srednje zastupljenosti (IR) za opisivanje preslikavanja između skalarnih i vektorskih funkcija za pozive vektorizacije. Dva odvojena vektorska tipa, llvm :: FixedVectorType i llvm :: ScalableVectorType, izdvojena su iz llvm :: VectorType.

Nedefinirano ponašanje je razgranavanje zasnovano na undef-u i prelazak iz nedefiniranih vrijednosti u standardne funkcije knjižnice.

U memset / memcpy / memmove dopušteno je prosljeđivanje nedefiniranih pokazivača, ali ako je parametar veličine jednak nuli.

LLJIT dodaje podršku za statičke inicijalizacije putem metoda LLJIT :: initialize i LLJIT :: deinitialize.

Dodan je mogućnost dodavanja statičkih biblioteka u JITDylib koristeći klasu StaticLibraryDefinitionGenerator. Dodan C API za ORCv2 (API za stvaranje JIT kompajlera).

Poboljšanje podrške za različite procesorske arhitekture:

  • Dodano podrška za Cortex-A34, Cortex-A77, Cortex-A78 i Cortex-X1 procesore na pozadini arhitekture AArch64. Provedena su proširenja ARMv8.2-BF16 (BFloat16) i ARMv8.6-A, uključujući RMv8.6-ECV (poboljšana kontra-virtualizacija), ARMv8.6-FGT (fino zrnaste zamke), ARMv8.6-AMU (aktivnost Nadgleda virtualizaciju) i ARMv8.0-DGH (savjet o prikupljanju podataka).
  • Dodana podrška za Cortex-M55, Cortex-A77, Cortex-A78 i Cortex-X1 procesore na ARM pozadini. Implementirano je proširenje Armv8.6-A Matrix Multiply i RMv8.2-AA32BF16 BFloat16.
  • Dodana podrška za generiranje koda za POWER10 procesore u PowerPC pozadini. Poboljšana optimizacija petlje i poboljšana podrška za operacije s pomičnim zarezom.
  • Arhitektonska pozadina RISC-V može primati zakrpe s podrškom za eksperimentalne proširene komplete instrukcija koji još nisu službeno odobreni.

Pored toga, pruža se mogućnost generiranja koda za funkcije vezivanja integriran u vektorske SVE upute.

Zaštita za AVR arhitekturu premještena je iz eksperimentalne u stabilne one uključene u osnovnu distribuciju.

Pozadina x86 podržava Intel AMX i TSXLDTRK upute. Dodata zaštita od LVI napada (Load Value Injection) i opći mehanizam za suzbijanje neželjenih efekata spekulativnog izvršavanja takođe je implementiran za blokiranje napada izazvanih špekulativnim izvršavanjem operacija na CPU-u.

Od ostalih promjena koje se ističu:

  • Zaštita za arhitekturu SystemZ dodaje podršku za MemorySanitizer i LeakSanitizer.
  • Libc ++ dodaje podršku za matematičku datoteku konstantne zaglavlja .
  • Proširene mogućnosti LLD povezivača.
  • Poboljšana ELF podrška, uključujući dodane opcije "–lto-emit-asm", "–lto-whole-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –Unikat "," –rogment "," –nitovi = N ".
  • Dodata je opcija „–time-trace“ za spremanje praćenja u datoteku, koja se zatim može raščlaniti kroz chrome: // interface u Chromeu.
  • Sučelje s Go (llgo) kompajlerom uklonjeno je iz izdanja i možda će biti restrukturirano u budućnosti.

Konačno ako želite znati više o tome o ovoj novoj verziji, možete provjeriti detalje na sljedećem linku.


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.