LLVM 16.0 és megjelent, és ezek a hírek

LLVM logó

Az LLVM egy keretrendszer a fordítók fejlesztéséhez, valamint új programozási nyelvek létrehozásához és a meglévő nyelvek fejlesztéséhez.

Alig több mint hat hónapos fejlesztés után elindítása a projekt új verziója LLVM 16.0, verzió, amelyben nagyszámú változtatást és fejlesztést hajtottak végre.

Azok számára, akik nem ismerik az LLVM-et, tudniuk kell, hogy ez egy GCC-kompatibilis fordító (fordítók, optimalizálók és kódgenerátorok), amely a programokat RISC-szerű virtuális utasítás köztes bitkódba fordítja (alacsony szintű virtuális gép többszintű optimalizáló rendszerrel).

A generált pszeudokódot a JIT fordító gépi utasításokká tudja konvertálni éppen a program végrehajtása során.

Az LLVM 16.0 fő újdonságai

A bemutatott új verzióban számos fontos fejlesztést találhatunk Clang 16.0-ban, amelyek közül kiemelkedik az alapértelmezett C++/ObjC++ szabvány, amely gnu++17-re van állítva (korábban gnu++14), amely alapértelmezés szerint támogatja a C++17 funkciókat GNU kiterjesztéssel. A C++17 szabványban meghatározott elemek használata megengedett az LLVM kódban.

A másik kiemelkedő változás az, hogy hozzáadták Cortex-A715, Cortex-X3 és Neoverse CPU-k támogatása V2, Armv8.3 bővítmények és több verziójú szolgáltatások az AArch64 háttérrendszerhez.
La platform kompatibilitás Az Armv2, Armv2A, Armv3 és Armv3M gyártása megszűnt az ARM architektúra háttérrendszerében, amelyhez nem volt garantált a helyes kódgenerálás. Hozzáadtuk a kód generálásának lehetőségét a komplex számokkal való együttműködéshez, és hozzáadtuk architektúrák támogatása utasításkészletek (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT X86 háttérrendszerré.

Amellett, hogy, megemelték az LLVM építésére vonatkozó követelményeket, A buildnek ezentúl kompatibilisnek kell lennie a C++17 szabvánnyal, azaz a buildhez legalább GCC 7.1, Clang 5.0, Apple Clang 10.0 vagy Visual Studio 2019 16.7 szükséges.

Másrészt kiemeli is továbbfejlesztett háttérrendszerek MIPS, PowerPC és RISC-V architektúrákhoz, valamint a LoongArch architektúra 64 bites végrehajtható fájlok LLDB hibakeresőhöz való hibakeresésének támogatása és a COFF hibakereső szimbólumok jobb kezelése.

A többi változás közül amelyek kiemelkednek:

  • A Libc++ könyvtárban a fő munka a C++20 és C++23 szabványok új funkcióinak támogatására irányult.
  • A kapcsolati idő jelentősen csökkent az LDD linkerben a címáthelyezési vizsgálat és a szakasz inicializálási műveleteinek párhuzamosításával. Támogatás hozzáadva a szakasztömörítéshez a ZSTD algoritmus használatával.
  • A C++20 szabvánnyal megvalósított fejlett funkciók is kiemelve.
  • strukturált hivatkozások rögzítése lambda függvényekben.
  • Az egyenlőség operátora a kifejezéseken belül.
  • Lehetőség arra, hogy bizonyos kontextusokban ne adja meg a típusnév kulcsszót,
  • A zárójelek közé adott inicializálás engedélyezése ("Aggr(érték1, érték2)").
  • A jövőbeli C++2b szabványban definiált függvények megvalósítása.
  • Támogatás a char8_t típussal,
  • Kibővítette a "\N{…}" karakterek tartományát,
  • Hozzáadtuk a „static constexpr”-ként deklarált változók használatát a constexpr-ként deklarált függvényekben.
  • A jövőbeli C2x C szabványban meghatározott implementált függvények:
  • Hozzáadott támogatás több konfigurációs fájl betöltéséhez (először az alapértelmezett konfigurációs fájlok töltődnek be, majd a „–config=” jelzővel megadottak, amelyek mostantól többször is megadhatók).
  • Az alapértelmezett konfigurációs fájlok betöltési sorrendje megváltozott: a clang először megpróbálja betölteni a fájlt - .cfg, és ha nem találja, akkor megpróbál két fájlt betölteni .cfg és .cfg.
  • Hozzáadott egy új összeállítási jelzőt "-fcoro-aligned-allocation" a rutin kerethez igazított elosztáshoz.
  • Az "-fmodule-output" jelző hozzáadása lehetővé teszi a szabványos C++ modulok egyfázisú felépítési modelljét.
  • A „-Rpass-analysis=stack-frame-layout” mód hozzáadva a veremkeret-elrendezéssel kapcsolatos problémák diagnosztizálásához.
  • Új __attribute__((target_version("cpu_features"))) attribútum hozzáadása, és a __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) attribútum funkcióinak kiterjesztése a CPU Aarch64 által biztosított szolgáltatások adott verzióinak kiválasztásához .
  • Továbbfejlesztett diagnosztikai eszközök:
  • Figyelmeztetés hozzáadva a „-Wsingle-bit-bitfield-constant-conversion” implicit csonkoláshoz, amikor egy bites előjelű bitmezőhöz rendelünk.
  • Kibővített diagnosztika az inicializálatlan constexpr változókhoz.
  • A „-Wcast-function-type-strict” és a „-Wincompatibilis-function-pointer-types-strict” figyelmeztetések hozzáadva a függvénytípusok átküldése során felmerülő lehetséges problémák észleléséhez.

Végül Ha érdekel, hogy többet tudjon meg róla, a részleteket a következő link.


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.