Az LLVM 11.0 a Python 3 frissítésével, a RISC-V fejlesztéseivel és egyebekkel érkezik

LLVM

Hat hónap fejlesztés után bemutatták az LLVM 11.0 projekt új kiadásának elindítását amelyben számos fejlesztés van bemutatva, például a Python 3 frissítése, a RISC-V kísérleti utasításait támogató javítások és még sok más változás.

Azok számára, akik nem ismerik az LLVM-et, tudják, mi az GCC-kompatibilis eszköztár (fordítók, optimalizálók és kódgenerátorok), amelyek a programokat RISC-szerű bitkódú köztes virtuális utasításokba fordítják (alacsony szintű virtuális gépek többszintű optimalizálási rendszerrel).

Úgy tervezték, hogy optimalizálja a fordítási időt, a kötés ideje, a végrehajtás ideje a felhasználó által megadandó programozási nyelvben. Eredetileg a C és a C ++ fordításához készült, Az LLVM nyelvi agnosztikai terve és a projekt sikere sokféle nyelvet születtek.

A létrehozott álkódot a JIT fordító segítségével konvertálhatjuk gépi utasításokká közvetlenül a program futtatásakor.

Az LLVM 11.0 fő újdonságai

Az LLVM 11.0 új verziójában a build rendszert áthelyezték a Python 3 használatáraMint ilyen, a Python 3 használata nem kényszerített, mivel ha nem érhető el, akkor a visszagörgetési opciót a Python 2 használatára hajtják végre.

Tulajdonság vektor-függvény-abi-variáns került hozzá köztes reprezentációig (IR) a skalár és a vektor függvények leképezésének leírására vektorizációs hívásokhoz. Két különálló vektortípust, az llvm :: FixedVectorType és az llvm :: ScalableVectorType elemeket vonjuk ki az llvm :: VectorType könyvtárból.

A meghatározatlan viselkedés undef-alapú elágazás és a meghatározatlan értékekről a standard könyvtárfunkciókra való áttérés.

A memset / memcpy / memmove fájlban megadhatunk nem definiált mutatókat, de ha a paraméter értéke nulla.

Az LLJIT támogatja a statikus inicializálást az LLJIT :: inicializálás és az LLJIT :: deinitializálás módszerekkel.

Hozzáadta a statikus könyvtárak hozzáadásának képessége a JITDylibhez a StaticLibraryDefinitionGenerator osztály használatával. Hozzáadott C API az ORCv2-hez (API JIT fordítók létrehozásához).

A különböző processzor-architektúrák támogatásának fejlesztése részéről:

  • Hozzáadva támogatás a Cortex-A34, Cortex-A77, Cortex-A78 és Cortex-X1 processzorokhoz az AArch64 architektúra hátterében. Az ARMv8.2-BF16 (BFloat16) és az ARMv8.6-A kiterjesztések megvalósításra kerültek, beleértve az RMv8.6-ECV (Enhanced Counter Virtualization), az ARMv8.6-FGT (finom szemcsés csapdák), ARMv8.6-AMU (tevékenység) Figyeli a virtualizációt) és az ARMv8.0-DGH (adatgyűjtési tipp).
  • Hozzáadott támogatás a Cortex-M55, Cortex-A77, Cortex-A78 és Cortex-X1 processzorokhoz az ARM háttérprogramon. Megvalósította az Armv8.6-A Matrix Multiply és az RMv8.2-AA32BF16 BFloat16 kiterjesztéseket.
  • Hozzáadott támogatás a POWER10 processzorok kódgenerálásához a PowerPC háttérrendszerben. Javított hurokoptimalizálás és jobb lebegőpontos műveletek támogatása.
  • Az építészeti háttér A RISC-V támogatja a javításokat kísérleti kiterjesztett utasításkészletekhez, amelyeket még hivatalosan nem hagytak jóvá.

Ezen kívül biztosított a kód létrehozásának képessége a kötési funkciók számára integrálva a vektor SVE utasításokba.

Az AVR architektúra háttérprogramja a kísérleti kategóriából az alap disztribúcióban szereplő stabilak közé került.

Az x86 háttérrendszer támogatja az Intel AMX és TSXLDTRK utasításokat. Védelem az LVI-támadások ellen (Load Value Injection) és az általános spekulatív végrehajtási mellékhatások elnyomási mechanizmusát is megvalósították a CPU-n végzett műveletek spekulatív végrehajtása által okozott támadások blokkolására.

A többi kiemelkedő változás közül:

  • A SystemZ architektúra háttérprogramja támogatja a MemorySanitizer és a LeakSanitizer támogatását.
  • A Libc ++ támogatja a matematikai állandó fejlécfájl támogatását .
  • Kiterjesztett LLD linkelő képességek.
  • Továbbfejlesztett ELF-támogatás, beleértve a „–lto-emit-asm”, „–lto-egész-program-látható”, „–print-archive-stats”, „–shuffle-section”, „–thinlto-single -module” opciókat "," –Unika "," –részlet "," –szálak = N ".
  • Hozzáadva a „–time-trace” opciót a nyomkövetés fájlba mentéséhez, amelyet aztán a Chrome chrome: // trace felületén lehet elemezni.
  • A Go (llgo) fordítóval való interfészt eltávolítottuk a kiadásból, és a jövőben átalakíthatjuk.

Végül ha többet szeretne tudni róla erről az új verzióról ellenőrizheti a részleteket a következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.