LLVM 11.0 tiek piegādāts ar Python 3 atjauninājumu, RISC-V uzlabojumiem un daudz ko citu

LLVM

Pēc sešu mēnešu attīstības ir prezentēts LLVM 11.0 projekta jaunā izdevuma palaišana kurā ir parādīti vairāki uzlabojumi, piemēram, Python 3 atjauninājums, ielāpus, lai atbalstītu eksperimentālās instrukcijas RISC-V, un daudzas citas izmaiņas.

Tiem, kam LLVM nav svešs, viņiem būtu jāzina, kas tas ir GCC atbilstošs rīkkopa (kompilatori, optimizētāji un kodu ģeneratori), kas apkopo programmas RISC veida bitu koda starpposma virtuālajās instrukcijās (zema līmeņa virtuālā mašīna ar daudzlīmeņu optimizācijas sistēmu).

Tas ir paredzēts kompilācijas laika optimizēšanai, saistīšanas laiks, izpildes laiks jebkurā programmēšanas valodā, kuru lietotājs vēlas definēt. Sākotnēji ieviests, lai apkopotu C un C ++, LLVM valodas agnostikas dizains un projekta panākumi viņi ir radījuši visdažādākās valodas.

Izveidoto pseidokodu var pārveidot, izmantojot JIT kompilatoru, mašīnu instrukcijās tieši programmas izpildes laikā.

Galvenās jaunās LLVM 11.0 funkcijas

Šajā jaunajā LLVM 11.0 versijā būvēšanas sistēma ir pārvietota, lai izmantotu Python 3Tādējādi Python 3 izmantošana nav piespiedu kārtā, jo gadījumā, ja tā nav pieejama, tiek izmantota atgriezeniskā opcija, lai izmantotu Python 2.

Atribūts ir pievienots vektors-funkcija-abi-variants līdz starpposma pārstāvībai (IR) aprakstīt kartēšanu starp skalārajām un vektoru funkcijām vektorizācijas zvaniem. Divi atsevišķi vektoru veidi, llvm :: FixedVectorType un llvm :: ScalableVectorType, tiek iegūti no llvm :: VectorType.

Nenoteikta darbība ir uz nedefefēta atzarošana un pāreja no nenoteiktām vērtībām uz standarta bibliotēkas funkcijām.

Vietnē memset / memcpy / memmove ir atļauts nodot nenoteiktus rādītājus, bet, ja parametrs ar lielumu ir vienāds ar nulli.

LLJIT papildina statisko inicializāciju atbalstu, izmantojot metodes LLJIT :: inicializēt un LLJIT :: deinitializēt.

Pievienoja spēja pievienot statiskas bibliotēkas JITDylib izmantojot klasi StaticLibraryDefinitionGenerator. Pievienots C API ORCv2 (API JIT kompilatoru izveidei).

Atbalsta uzlabošana dažādām procesoru arhitektūrām:

  • Pievienots atbalsts Cortex-A34, Cortex-A77, Cortex-A78 un Cortex-X1 procesoriem uz AArch64 arhitektūras aizmugures. Ir ieviesti paplašinājumi ARMv8.2-BF16 (BFloat16) un ARMv8.6-A, tostarp RMv8.6-ECV (uzlabota skaitītāja virtualizācija), ARMv8.6-FGT (smalkgraudaini slazdi), ARMv8.6-AMU (darbība Uzrauga virtualizāciju) un ARMv8.0-DGH (datu vākšanas mājiens).
  • Pievienots atbalsts Cortex-M55, Cortex-A77, Cortex-A78 un Cortex-X1 procesoriem ARM aizmugurē. Ieviesa Armv8.6-A Matrix Multiply un RMv8.2-AA32BF16 BFloat16 paplašinājumus.
  • Pievienots atbalsts koda ģenerēšanai POWER10 procesoriem PowerPC aizmugurē. Uzlabota cilpu optimizācija un uzlabots peldošā komata darbību atbalsts.
  • Arhitektūras aizmugure RISC-V var saņemt plāksterus ar atbalstu eksperimentāliem pagarināto instrukciju komplektiem, kas vēl nav oficiāli apstiprināti.

Papildus tam tiek nodrošināta iespēja ģenerēt kodu saistošajām funkcijām integrēta vektora SVE instrukcijās.

AVR arhitektūras aizmugure ir pārvietota no eksperimentālās kategorijas uz stabilajām, kas iekļautas bāzes sadalījumā.

X86 aizmugure atbalsta Intel AMX un TSXLDTRK instrukcijas. Pievienota aizsardzība pret LVI uzbrukumiem (Load Value Injection) un vispārīgais spekulatīvās izpildes blakusparādību novēršanas mehānisms tika ieviests arī, lai bloķētu uzbrukumus, ko izraisīja spekulatīvas operācijas CPU.

Starp pārējām izmaiņām, kas izceļas:

  • SystemZ arhitektūras aizmugure papildina MemorySanitizer un LeakSanitizer.
  • Libc ++ pievieno atbalstu matemātikas konstantes galvenes failam .
  • Paplašinātas LLD saistītāja iespējas.
  • Uzlabots ELF atbalsts, ieskaitot pievienotās opcijas "–lto-emit-asm", "–lto-visa programma-redzama", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –Unika "," –segments "," –vītnes = N ".
  • Pievienota opcija “time-trace”, lai saglabātu izsekošanu failā, kuru pēc tam var parsēt, izmantojot pārlūka chrome: // trace interfeisu.
  • Saskarne ar Go (llgo) kompilatoru ir izlaista no laidiena un nākotnē to var pārstrukturēt.

Beidzot ja vēlaties uzzināt vairāk par to par šo jauno versiju varat pārbaudīt sīkāku informāciju šajā saitē.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.