LLVM 16.0 ir ji buvo išleista, ir tai yra jos naujienos

LLVM logotipas

LLVM yra sistema, skirta kurti kompiliatorius, taip pat padėti kurti naujas programavimo kalbas ir tobulinti esamas kalbas.

Po kiek daugiau nei šešių mėnesių plėtros, paleidimas naują projekto versiją LLVM 16.0, versija, kurioje įdiegta daugybė pakeitimų ir patobulinimų.

Tiems, kurie nėra susipažinę su LLVM, turėtumėte žinoti, kad tai yra su GCC suderinamas kompiliatorius (kompiliatoriai, optimizatoriai ir kodų generatoriai), kuris programas kompiliuoja į RISC panašų virtualių instrukcijų tarpinį bitų kodą (žemo lygio virtuali mašina su kelių lygių optimizavimo sistema).

Sukurtą pseudokodą JIT kompiliatorius gali konvertuoti į mašinos komandas tik programos vykdymo metu.

Pagrindinės naujos „LLVM 16.0“ funkcijos

Šioje pateiktoje naujoje versijoje galime rasti keletą svarbių patobulinimų Clang 16.0, iš kurių išsiskiria numatytasis C++/ObjC++ standartas, kuris nustatytas į gnu++17 (anksčiau gnu++14), kuri reiškia C++17 funkcijų palaikymą su GNU plėtiniais pagal numatytuosius nustatymus. LLVM kode leidžiama naudoti C++17 standarte apibrėžtus elementus.

Kitas pakeitimas, kuris išsiskiria, yra tai, kad jis buvo pridėtas Cortex-A715, Cortex-X3 ir Neoverse procesorių palaikymas V2, Armv8.3 plėtiniai ir kelių versijų funkcijos, skirtos AArch64 backend.
La platformos suderinamumas Armv2, Armv2A, Armv3 ir Armv3M buvo nutraukti ARM architektūros foninėje programoje, kuriai nebuvo garantuotas teisingas kodo generavimas. Pridėta galimybė generuoti kodą instrukcijoms dirbti su kompleksiniais skaičiais ir pridėta palaikymas architektūroms instrukcijų rinkinių (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT į X86 backend.

Neskaitant to, padidinti LLVM pastato reikalavimai, Taip pat dabar versija turėtų būti suderinama su C++17 standartu, t. y. norint sukurti reikia bent GCC 7.1, Clang 5.0, Apple Clang 10.0 arba Visual Studio 2019 16.7.

Kita vertus, tai taip pat pabrėžia patobulintos MIPS, PowerPC ir RISC-V architektūros foninės programos, taip pat palaikymas 64 bitų vykdomųjų failų, skirtų LoongArch architektūrai, derinimui su LLDB derintuvu ir patobulintas COFF derinimo simbolių tvarkymas.

Iš kitų pokyčių kad išsiskiria:

  • Libc++ bibliotekoje pagrindinis darbas buvo sutelktas į naujų C++20 ir C++23 standartų funkcijų palaikymą.
  • Susiejimo laikas buvo žymiai sutrumpintas LDD linkeryje, lygiagrečiavus adresų perkėlimo nuskaitymą ir sekcijos inicijavimo operacijas. Pridėtas sekcijos glaudinimo palaikymas naudojant ZSTD algoritmą.
  • Taip pat paryškintos pažangios funkcijos, įdiegtos su C++20 standartu.
  • užfiksuoti struktūrines nuorodas lambda funkcijose.
  • Lygybės operatorius išraiškose.
  • Galimybė nenurodyti tipo pavadinimo raktinio žodžio kai kuriuose kontekstuose,
  • Skliausteliuose pridėtas inicijavimo leidimas ("Aggr(val1, val2)").
  • Įdiegtos būsimame C++2b standarte apibrėžtos funkcijos.
  • char8_t tipo palaikymas,
  • Išplėtė „\N{…}“ leidžiamų naudoti simbolių diapazoną,
  • Pridėta galimybė naudoti kintamuosius, deklaruotus kaip "static constexpr" funkcijose, deklaruotose kaip constexpr.
  • Įdiegtos funkcijos, apibrėžtos būsimame C2x C standarte:
  • Pridėtas kelių konfigūracijos failų įkėlimo palaikymas (pirmiausia įkeliami numatytieji konfigūracijos failai, tada tie, kurie nurodyti per vėliavėlę „–config=“, kurią dabar galima nurodyti kelis kartus).
  • Pakeista numatytųjų konfigūracijos failų įkėlimo tvarka: clang pirmiausia bando įkelti failą - .cfg ir jei neranda, bando įkelti du failus .cfg ir .cfg.
  • Pridėta nauja kūrimo vėliavėlė „-fcoro-aligned-allocation“, skirta įprastam kadrų suderintam paskirstymui.
  • Pridėta vėliavėlė „-fmodule-output“, kad būtų įjungtas standartinių C++ modulių vienfazis kūrimo modelis.
  • Pridėtas režimas „-Rpass-analysis=stack-frame-layout“, kad būtų galima diagnozuoti dėklo rėmelių išdėstymo problemas.
  • Pridėtas naujas atributas __attribute__((target_version("cpu_features"))) ir išplėstas atributo __attribute__((target_clones("cpu_features1","cpu_features2",…))) funkcionalumas, kad būtų galima pasirinkti konkrečias CPU Aarch64 teikiamų funkcijų versijas .
  • Patobulinti diagnostikos įrankiai:
  • Pridėtas įspėjimas „-Wsingle-bit-bitfield-constant-conversion“, kad būtų užfiksuotas numanomas sutrumpinimas priskiriant jį vieno bito pasirašytam bitų laukui.
  • Išplėstinė nepainicijuotų constexpr kintamųjų diagnostika.
  • Pridėta įspėjimų „-Wcast-function-type-strict“ ir „-Windependent-function-pointer-types-strict“, kad būtų galima nustatyti galimas perdavimo funkcijų tipų problemas.

Pagaliau Jei norite sužinoti daugiau apie tai, išsamią informaciją galite patikrinti sekanti nuoroda.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.