Az LLVM 9.0 új verziója már megjelent, és ezek a hírek

LLVM

Hat hónap fejlesztés után bemutatták az LLVM 9.0 projekt új verziójának elindítását, amely egy GCC-kompatibilis eszközkészlet (fordítók, optimalizálók és kódgenerátorok), amely a programokat RISC-szerű virtuális utasítások köztes bitkódjává állítja össze (alacsony szintű virtuális gép 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, beleértve az Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas és másokat.

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 9.0 fő újdonságai

Az LLVM 9.0 új szolgáltatásai között támogatást talál a kísérleti fejlesztői címke eltávolításához a RISC-V platformról, C ++ támogatás az OpenCL számára.

Egy másik újdonság, hogy kiemelkedik az a képesség, hogy a programot dinamikusan terhelt részekre bontjuk az LLD-ben és a Linux kernel kódjában használt »asm goto» konstrukció megvalósítása.

Ezen felül azt is kiemelik, hogy a Libc ++ a WASI támogatásával érkezett (WebAssembly System Interface) és az LLD bevezette a WebAssembly dinamikus összerendelésének kezdeti támogatását. Hozzáadta a GCC specifikus kifejezés »asm goto» megvalósítását, amely lehetővé teszi, hogy az összeállított soros blokkról C-kódú címkére váltson.

Erre a szolgáltatásra a Linux kernelének »CONFIG_JUMP_LABEL = y« módban történő létrehozásához van szükség a Clang használatával az x86_64 rendszereken. Figyelembe véve a korábbi verziókban hozzáadott változtatásokat, a Linux kern mostantól Clang-ban is elkészíthető az x86_64 architektúrához (korábban csak arm, aarch64, ppc32, ppc64le és mips architektúrák esetében támogatott.

Hozzáadták a KTF-utasítások támogatását (Branch Target Indicator) és PAC (Pointer Authentication Code) az AArch64 architektúrához. Jelentősen továbbfejlesztett támogatás a MIPS, RISC-V és PowerPC platformok számára.

Ezen túlmenően, Az Android és a ChromeOS projektek már átálltak a Clang használatára a kernel felépítéséhez és a Google a Clang-ot teszteli elsődleges build platformmagként futó Linux rendszereihez.

A jövőben, a rendszermag fordítási folyamata során lehetőség lesz más komponensek használatára is LLVM, beleértve az LLD-t, az llvm-objcopy, az llvm-ar, az llvm-nm és az llvm-objdump.

Kísérleti partíciófüggvény került hozzá az LLD linkerhez, amely lehetővé teszi a program több részre osztását, amelyek mindegyike külön ELF fájlba kerül. Ez a funkció lehetővé teszi a program fő részének futtatását, amely szükség szerint betölti a folyamat többi összetevőjét (például kiválaszthatja a beépített PDF-megjelenítőt külön fájlként, amelyet csak akkor tölthet le, ha a felhasználó megnyitja a PDF fájlt).

Másrészt a háttérbeli fejlesztések is kiemelkednek X86, AArch64, ARM, SystemZ, MIPS, AMDGPU és PowerPC architektúrákhoz.

Például a SVE2 és az MTE (Memory Tagging Extensions) utasítások támogatása hozzáadódott az AArch64 architektúrához, az Armv8.1-M architektúra és az MVE architektúra támogatása az ARM háttérrendszerhez.

Az AMDGPU esetében hozzáadták a GFX10 architektúra támogatását (Navi), az alapértelmezés engedélyezett egy funkció meghívására és az aktivált kombinált DPP (Data Primitives-Parallel) továbbítására.

Az LLDB hibakereső bevezette a nyomok színes kiemelését visszafelé; a DWARF4 debug_types és a DWARF5 debug_info blokkok támogatása;

Az llvm-objcopy és az llvm-strip segédprogramok támogatást nyújtottak a COFF formátumú futtatható fájlokhoz és objektumokhoz.

A RISC-V architektúra háttérállása stabilizálódott, amely már nincs pozicionálva kísérleti jelleggel, és alapértelmezés szerint fel van építve. Teljes támogatás a kódkészítéshez az RV32I és RV64I utasításkészlet-változatokhoz MAFDC kiterjesztésekkel.

forrás: http://releases.llvm.org/


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.