Hieman yli kuuden kuukauden kehitystyön jälkeen käynnistäminen projektin uusi versio LLVM 16.0, versio, jossa on toteutettu suuri määrä muutoksia ja parannuksia.
Niiden, jotka eivät tunne LLVM:ää, sinun pitäisi tietää tämä on GCC-yhteensopiva kääntäjä (kääntäjät, optimoijat ja koodigeneraattorit), joka kokoaa ohjelmat RISC-tyyppiseksi virtuaalikäskyn välibittikoodiksi (matalatason virtuaalikone, jossa on monitasoinen optimointijärjestelmä).
JIT-kääntäjä voi muuntaa luodun pseudokoodin konekäskyiksi juuri ohjelman suoritushetkellä.
LLVM 16.0: n tärkeimmät uudet ominaisuudet
Tässä esitellyssä uudessa versiossa voimme löytää useita tärkeitä parannuksia clangissa 16.0, joista C++/ObjC++-oletusstandardi erottuu, mikä on asetettu arvoon gnu++17 (aiemmin gnu++14), joka tarkoittaa oletuksena tukea C++17-ominaisuuksille GNU-laajennuksilla. C++17-standardissa määriteltyjen elementtien käyttö on sallittua LLVM-koodissa.
Toinen erottuva muutos on, että se on lisätty tuki Cortex-A715-, Cortex-X3- ja Neoverse-suorittimille V2-, Armv8.3-laajennukset ja usean version ominaisuudet AArch64-taustajärjestelmään.
La alustan yhteensopivuus Armv2, Armv2A, Armv3 ja Armv3M on lopetettu ARM-arkkitehtuurin taustajärjestelmässä, jolle oikeaa koodin luomista ei taattu. Lisätty mahdollisuus luoda koodi ohjeille kompleksilukujen kanssa työskentelyä varten ja lisätty tuki arkkitehtuureille ohjesarjoista (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT X86-taustajärjestelmäksi.
Sen lisäksi LLVM:n rakentamisen vaatimuksia on korotettu, Myös koontiversion pitäisi nyt olla yhteensopiva C++17-standardin kanssa, eli koontiversio vaatii vähintään GCC 7.1:n, Clang 5.0:n, Apple Clang 10.0:n tai Visual Studio 2019 16.7:n.
Toisaalta se myös korostaa parannetut taustaohjelmat MIPS-, PowerPC- ja RISC-V-arkkitehtuureille, sekä tuki 64-bittisten suoritettavien tiedostojen virheenkorjaukselle LoongArch-arkkitehtuuria varten LLDB-debuggeriin ja COFF-virheenkorjaussymbolien parannettu käsittely.
Muista muutoksista jotka erottuvat:
- Libc++-kirjastossa päätyö keskittyi C++20- ja C++23-standardien uusien ominaisuuksien tuen toteuttamiseen.
- Linkkiaikaa on lyhennetty merkittävästi LDD-linkkerissä rinnakkaisemalla osoitteen uudelleensijoitusskannaus ja osien alustustoiminnot. Lisätty tuki osien pakkaamiseen ZSTD-algoritmin avulla.
- Myös C++20-standardilla toteutetut edistyneet toiminnot korostuvat.
- kaapata strukturoituja linkkejä lambda-funktioissa.
- Tasa-arvooperaattori lausekkeiden sisällä.
- Mahdollisuus olla määrittämättä tyypin nimen avainsanaa joissakin yhteyksissä,
- Sulkujen väliin lisätty alustuksen sallittavuus ("Aggr(arvo1, arvo2)").
- Toteutetut funktiot, jotka on määritelty tulevassa C++2b-standardissa.
- char8_t-tyypin tuki,
- Laajennettiin "\N{…}":ssa käytettävien merkkien valikoimaa,
- Lisätty mahdollisuus käyttää muuttujia, jotka on ilmoitettu nimellä "staattinen constexpr" funktioissa, jotka on ilmoitettu constexpr.
- Tulevassa C2x C -standardissa määritellyt toiminnot:
- Lisätty tuki useiden asetustiedostojen lataamiseen (oletusasetustiedostot ladataan ensin, sitten ne, jotka määritetään lipulla “–config=”, jotka voidaan nyt määrittää useita kertoja).
- Oletusasetustiedostojen latausjärjestys muutettu: clang yrittää ladata tiedoston ensin - .cfg ja jos se ei löydä sitä, se yrittää ladata kaksi tiedostoa .cfg ja .cfg.
- Lisätty uusi koontimerkintä "-fcoro-aligned-allocation" rutiininomaiselle kehystasaiselle jakelulle.
- Lisätty "-fmodule-output" -lippu mahdollistaakseen vakio C++ -moduulien yksivaiheisen koontimallin.
- Lisätty tila "-Rpass-analysis=stack-frame-layout" pinokehysasettelun ongelmien diagnosoimiseksi.
- Lisättiin uusi __attribute__((target_version("cpu_features"))) -attribuutti ja laajennettiin __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) -attribuutin toimintoja valitakseen tiettyjä CPU Ach64:n tarjoamia ominaisuuksia. .
- Parannetut diagnostiikkatyökalut:
- Lisätty varoitus "-Wsingle-bit-bitfield-constant-conversion" implisiittisen katkaisun havaitsemiseksi, kun se määritetään yksibittiselle allekirjoitetulle bittikenttään.
- Laajennettu diagnostiikka alustamattomille constexpr-muuttujille.
- Lisätty "-Wcast-function-type-strict" ja "-Winyhteensopiva-funktio-osoittimen-tyypit-tiukka" varoitukset, jotta voidaan havaita mahdolliset suoratoistotoimintotyyppien ongelmat.
Vihdoin Jos haluat tietää enemmän siitä, voit tarkistaa yksityiskohdat seuraava linkki.