Az LLVM 16 péntek este jelent meg, mint a legújabb féléves szolgáltatáskiadás ehhez a nyílt forráskódú fordítócsomaghoz. Az AMD Zen 4 kezdeti támogatásától az új Intel CPU utasításkészletek és processzorcélok bevezetéséig az új processzorokhoz 2024-ig, az LLVM 16.0 számos izgalmas hardver-kiegészítést tartalmaz. Az LLVM 16.0 a gyorsabb LLD-összekapcsolásról, a Zstd-tömörített hibakereső szakaszokról, a LoongArch-cél stabilizálásáról, az alapértelmezett C++17-ről a Clang-hoz és még sok másról is nevezetes. Íme egy pillantás az LLVM 16 izgalmas változásaira.
Az LLVM 16, valamint alprojektjei, például a Clang 16 és az LLD 16 kiemelt részei a következő tételek keltették fel érdeklődésemet:
-Clang’s az alapértelmezett C++ szabvány most a GNU++17 (a C++17 GNU dialektusa) a korábbi alapértelmezett GNU++14/C++14 helyett.
-További C++20-szolgáltatások kerültek bevezetésre, valamint a meglévő C++20-funkciók hibajavításai, valamint a C++2b-szolgáltatások előkészületei.
-További C2X-funkciók is bevezetésre kerültek Clang 16.0.
-Különféle Clang 16 fordítódiagnosztikai fejlesztések.
-Az LLVM 16 LLD linkereje sokkal gyorsabb kapcsolati sebességgel rendelkezik az ELF objektumokhoz, mint az LLVM 15.
-Az LLVM 16 LLD mostantól támogatja a Zstd tömörített szakaszokat is, hasonlóan a GCC 13 Zstd támogatásához.
-Az LLVM LoongArch CPU-háttérrendszere „kísérleti” kategóriából kikerült, és alapértelmezés szerint engedélyezve van. A LoongArch JITLink kezdeti támogatása és egyéb szolgáltatások is engedélyezettek. Az LLVM LLDB hibakeresője is támogatja a LoongArch 64 bites binárisok hibakeresését, valamint a Clang fordító támogatását, amely már jó állapotban van ehhez a kínai CPU architektúrához.
– Az új Intel x86 ISA bővítményeket az LLVM 16.0 támogatja, beleértve az AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8 és AVX-NE-CONVERT.
– Az új Intel CPU-célpontok a Raptor Lake, a Meteor Lake, az Emerald Rapids, a Sierra Forest, a Granite Rapids és a Grand Ridge támogatottak.
– Az AMD Zen 4 processzorok kezdeti támogatása a-march=znver4 paraméterrel, de ez nem tartalmazza az LLVM 16 elágazása utáni hangolást.
-Az LLVM RISC-V háttérrendszere számos új bővítmény támogatását nyújtotta, például a Zca, Zbe, Zbf, Zbm, Zbp, Zbr és Zbt.
-Az LLVM hozzáadott támogatást az Arm Cortex-A715/Cortex-X3/Neoverse-V2 magokhoz.
-Az LLVM AArch64 háttérrendszere mostantól támogatja a Function Multi-Versioning (FMV) funkciót, amely lehetővé teszi egyéni kódútvonalak felvételét az optimalizált teljesítmény érdekében a futásidejű CPU/képességek alapján.
-Az Armv2A/Armv2A/Armv3/Armv3M architektúrák támogatása megszűnt.
-Az LLVM 16 libc++ C++ szabványos könyvtára további C++20 és C++23 funkciók támogatásával bővült. A változások között szerepel a több típust támogató C++20 űrhajó operátor, elkészült a C++20 tartományok könyvtára, és javult a C++20 formátumú könyvtár.
Az LLVM 16.0 letölthető a GitHubról forrás formában és különféle kiadási binárisokban. Az LLVM Discourse-ban egy rövid közlemény is található.