LLVM 11.0 prihaja z posodobitvijo na Python 3, izboljšavami za RISC-V in še več

LLVM

Po šestih mesecih razvoja predstavljena je bila predstavitev nove izdaje projekta LLVM 11.0 v katerem je predstavljenih več izboljšav, na primer posodobitev Pythona 3, popravki za podporo eksperimentalnim navodilom v RISC-V in številne druge spremembe.

Tisti, ki ne poznajo LLVM, bi morali vedeti, kaj je to priročnik, skladen z GCC (prevajalniki, optimizatorji in generatorji kode), ki prevaja programe v vmesna navidezna navodila, podobna bitni kodi RISC (navidezni stroj na nizki ravni z večstopenjskim sistemom za optimizacijo)

Zasnovan je tako, da optimizira čas prevajanja, čas vezave, čas izvedbe v katerem koli programskem jeziku, ki ga želi uporabnik določiti. Prvotno izvedeno za prevajanje C in C ++, Jezikovno agnostično oblikovanje LLVM in uspeh projekta ustvarili so najrazličnejše jezike.

Ustvarjeno psevdokodo lahko pretvorite s pomočjo prevajalnika JIT v strojna navodila neposredno v času izvajanja programa.

Glavne novosti LLVM 11.0

V tej novi različici LLVM 11.0 sistem gradnje je bil premaknjen v uporabo Pythona 3Kot taka uporaba Pythona 3 ni prisiljena, saj je v primeru, da ni na voljo, uporabljena možnost povratka za uporabo Pythona 2.

Atribut Dodana je vektorska funkcija-abi-varianta do vmesne zastopanosti (IR) za opis preslikave med skalarnimi in vektorskimi funkcijami za klice vektorizacije. Dve ločeni vektorski vrsti, llvm :: FixedVectorType in llvm :: ScalableVectorType, sta izvlečeni iz llvm :: VectorType.

Nedefinirano vedenje je razvejanje na osnovi undef in prehajanje iz nedefiniranih vrednosti v standardne funkcije knjižnice.

V memset / memcpy / memmove je dovoljeno podajati nedefinirane kazalce, če pa je parameter z velikostjo enak nič.

LLJIT dodaja podporo za izvajanje statičnih inicializacij prek metod LLJIT :: initialize in LLJIT :: deinitialize.

Dodan je možnost dodajanja statičnih knjižnic v JITDylib z uporabo razreda StaticLibraryDefinitionGenerator. Dodan C API za ORCv2 (API za ustvarjanje prevajalnikov JIT).

Pri izboljšanju podpore za različne procesorske arhitekture:

  • Dodano podpora za procesorje Cortex-A34, Cortex-A77, Cortex-A78 in Cortex-X1 na zaledju arhitekture AArch64. Izvedeni sta bili razširitvi ARMv8.2-BF16 (BFloat16) in ARMv8.6-A, vključno z RMv8.6-ECV (Izboljšana kontra-virtualizacija), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Aktivnost Nadzira virtualizacijo) in ARMv8.0-DGH (namig o zbiranju podatkov).
  • Dodana podpora za procesorje Cortex-M55, Cortex-A77, Cortex-A78 in Cortex-X1 na zaledju ARM. Izvedli razširitve Armv8.6-A Matrix Multiply in RMv8.2-AA32BF16 BFloat16.
  • Dodana podpora za generiranje kode za procesorje POWER10 v zaledju PowerPC. Izboljšana optimizacija zank in izboljšana podpora za operacije s plavajočo vejico.
  • Zaledje arhitekture RISC-V lahko prejme popravke s podporo za eksperimentalne razširjene sklope navodil, ki še niso bili uradno odobreni.

Poleg tega zagotovljena je zmožnost generiranja kode za vezavne funkcije integriran v vektorska navodila SVE.

Zaledje za arhitekturo AVR je bilo premaknjeno iz eksperimentalne kategorije v stabilne, vključene v osnovno distribucijo.

Zaledje x86 podpira navodila Intel AMX in TSXLDTRK. Dodana zaščita pred napadi LVI (Load Value Injection) in splošni mehanizem za preprečevanje neželenih učinkov špekulativnega izvajanja je bil implementiran tudi za blokiranje napadov, ki jih povzroči špekulativno izvajanje operacij na CPU.

Od ostalih sprememb, ki izstopajo:

  • Zaledje za arhitekturo SystemZ dodaja podporo za MemorySanitizer in LeakSanitizer.
  • Libc ++ dodaja podporo za matematično datoteko s konstantno glavo .
  • Razširjene zmogljivosti povezovalnika LLD.
  • Izboljšana podpora za ELF, vključno z dodanimi možnostmi "–lto-emit-asm", "–lto-whole-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –Unikat "," –rogment "," –nitke = N ".
  • Dodana možnost »–time-trace« za shranjevanje sledi v datoteko, ki jo je nato mogoče razčleniti prek vmesnika chrome: // trace v Chromu.
  • Vmesnik s prevajalnikom Go (llgo) je bil odstranjen iz izdaje in bo v prihodnosti morda prestrukturiran.

Končno če želite vedeti več o tem o tej novi različici lahko preverite podrobnosti na naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.