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

LLVM

Nakon šest mjeseci razvoja predstavljeno je predstavljanje novog izdanja projekta LLVM 11.0 u kojem je predstavljeno nekoliko poboljšanja, poput ažuriranja na Python 3, zakrpe za podršku eksperimentalnim uputama u RISC-V i mnoge druge promjene.

Za one koji nisu upoznati s LLVM-om, trebali bi znati što je to priručnik u skladu s GCC-om (kompajleri, optimizatori i generatori koda) koji kompajlira programe u posredne virtualne upute slične bit-kodu slične RISC-u (virtualni stroj niske razine s višerazinskim sustavom za optimizaciju).

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

Generirani pseudokod može se pretvoriti pomoću JIT kompajlera u strojne upute izravno u vrijeme izvršavanja programa.

Glavne nove značajke LLVM-a 11.0

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

Atribut dodana je vektorska funkcija-abi-varijanta do srednje zastupljenosti (IR) za opisivanje preslikavanja između skalarne i vektorske funkcije za pozive vektorizacije. Dvije zasebne vektorske vrste, llvm :: FixedVectorType i llvm :: ScalableVectorType, izdvojene su iz llvm :: VectorType.

Nedefinirano ponašanje je razgranavanje temeljeno na undef i prelazak s nedefiniranih vrijednosti na standardne funkcije knjižnice.

U memset / memcpy / memmove dopušteno je prolaziti nedefinirane pokazivače, 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 knjižnica u JITDylib pomoću klase StaticLibraryDefinitionGenerator. Dodan C API za ORCv2 (API za stvaranje JIT kompajlera).

Dio poboljšanja podrške za različite procesorske arhitekture:

  • Dodano podrška za Cortex-A34, Cortex-A77, Cortex-A78 i Cortex-X1 procesore u pozadini arhitekture AArch64. Provedena su proširenja ARMv8.2-BF16 (BFloat16) i ARMv8.6-A, uključujući RMv8.6-ECV (poboljšana protuvirualizacija), ARMv8.6-FGT (fino zrnaste zamke), ARMv8.6-AMU (aktivnost Nadgleda virtualizaciju) i ARMv8.0-DGH (savjet za prikupljanje podataka).
  • Dodana podrška za Cortex-M55, Cortex-A77, Cortex-A78 i Cortex-X1 procesore na ARM pozadini. Implementirano 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.
  • Zaštita arhitekture RISC-V može primati zakrpe s podrškom za eksperimentalne proširene komplete uputa koji još nisu službeno odobreni.

Uz to, osigurana je mogućnost generiranja koda za funkcije vezanja 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 upute Intel AMX i TSXLDTRK. Dodana zaštita od LVI napada (Load Value Injection) i opći mehanizam za suzbijanje nuspojava spekulativnog izvršavanja također je implementiran za blokiranje napada izazvanih špekulativnim izvršavanjem operacija na CPU-u.

Od ostalih istaknutih promjena:

  • Zaštita za arhitekturu SystemZ dodaje podršku za MemorySanitizer i LeakSanitizer.
  • Libc ++ dodaje podršku za matematičku datoteku konstantnog zaglavlja .
  • Proširene mogućnosti povezivača LLD-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 ".
  • Dodana je opcija „–time-trace“ za spremanje traga u datoteku, koja se zatim može raščlaniti kroz sučelje chrome: // trace u Chromeu.
  • Sučelje s Go (llgo) kompajlerom uklonjeno je iz izdanja i možda će se restrukturirati u budućnosti.

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


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.