LLVM 15.0:ssa on parannuksia eri taustajärjestelmiin, suurempi tuki ja paljon muuta

LLVM 15 toteuttaa tukiparannuksia

LLVM 15.0 sisältää myös useita mielenkiintoisia päivityksiä C/C++:aan.

Kuuden kuukauden kehityksen jälkeen LLVM 15.0 -projektin julkaisu julkistettiin, jossa paljon suuria muutoksia on tehty, sekä lisätty tuki uusille prosessoreille, arkkitehtuureille ja muille.

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 15.0: n tärkeimmät uudet ominaisuudet

Tässä esitellyssä uudessa versiossa korostetaan, että tuki Cortex-M85-prosessoreille, sekä Armv9-A-, Armv9.1-A- ja Armv9.2-A-arkkitehtuureille Armv8.1-M PACBTI-M -laajennukset.

Toinen erottuva muutos on se lisäsi kokeellisen DirectX-taustajärjestelmän että tukee DXIL-muotoa (DirectX Intermediate Language) käytetään DirectX-varjostimissa. Taustaosa otetaan käyttöön "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" -koontiversion kautta.

libc++ jatkaa uusien ominaisuuksien käyttöönottoa C++20- ja C++2b-standardeista, mukaan lukien "muoto"-kirjaston toteutuksen loppuun saattaminen ja "alueet"-kirjaston ehdotettu kokeellinen versio.

Clang 15.0:aan liittyvien muutosten osalta mainitaan, että lisätty kokeellinen tuki C-kaltaiselle kielelle HLSL (High-Level Shading Language), jota käytetään varjostimien kirjoittamiseen DirectX 9:stä alkaen sekä HLSL-varjostimien kääntämiseen DirectX 12 -yhteensopivaksi DXIL (DirectX Intermediate Language) -binäärimuotoon sekä Vulkanin käyttämään SPIR-muotoon -V. Tulevaisuudessa, aikoo ottaa käyttöön tuen DXBC-muodolle (DirectX Bytecode), jota käytetään DirectX 9-11:ssä. Toteutuksen tarjoaa Microsoft ja se perustuu vuonna 2017 julkaistuun DirectX Shader Compileriin, joka on rakennettu LLVM 3.7:n pohjalta.

Mainitaan myös, että se jatkuu tukea tulevia C2X- ja C++23-standardeja. Toteutettu C-kielelle: noreturn-attribuutti, false ja true avainsanat, _BitInt(N)-tyyppi tietyn bittisyvyyden kokonaisluvuille, *_WIDTH-makrot, u8-etuliite UTF-8-merkeille.

Sen lisäksi on toteutettu C++:lle: moduulien yhdistäminen, Funktiojäsenten ABI-eristys, ei-paikallisten muuttujien dynaaminen alustus moduulissa, moniulotteiset indeksioperaattorit, auto(x), ei-kirjaimelliset muuttujat, goto ja tunnisteet funktioissa, jotka on ilmoitettu constexpr-muodossa, erotetut erotussekvenssit, nimetyt escape-merkit.

Arkkitehtuuriin perustuville järjestelmille x86, lisätty "-fzero-call-used-regs" -lippu, joka nollaa kaikki funktiossa käytetyt CPU-rekisterit ennen ohjauksen palauttamista funktiosta. tämä vaihtoehto suojaa tietovuodolta toimintoja ja vähentää ROP (Return Oriented Programming) -laitteiden luomiseen soveltuvien lohkojen määrää hyödykkeissä noin 20 %.

Muistin sijainnin satunnaistaminen on toteutettu C-koodin rakenteista, mikä vaikeuttaa tietojen poimimista rakenteista, jos haavoittuvuuksia käytetään hyväksi. Satunnaistaminen otetaan käyttöön ja pois käytöstä attribuuttien randomize_layout ja no_randomize_layout avulla, ja se edellyttää, että siemen on asetettu "-frandomize-layout-seed"- tai "-frandomize-layout-seed-file"-lipulla toistettavien koontiversioiden varmistamiseksi.

Muista muutoksista jotka erottuvat:

  • Laajennetut OpenCL- ja OpenMP-tukeen liittyvät ominaisuudet. Lisätty tuki OpenCL-laajennukselle cl_khr_subgroup_rotate.
  • Parannetut taustaohjelmat x86-, PowerPC- ja RISC-V-arkkitehtuureille.
    Parannetut LLD-linkkeri- ja LLDB-virheenkorjausominaisuudet.
  • Lisätty lippu "-fstrict-flex-arrays=" » jolla voit hallita pehmeän taulukkoelementin rajoja rakenteissa (Soft Array Members, määrittelemättömän kokoinen taulukko rakenteen lopussa).
  • Lisätty "-warray-parameter" -vaihtoehto varoittaakseen funktioiden ohittamisesta, jos argumenttiilmoitukset eivät täsmää kiinteän ja muuttuvan pituuden taulukoihin.
  • Parannettu yhteensopivuus MSVC:n kanssa.
  • Lisätty tuki MSVC:ssä tarjotuille "#pragma-funktioille" ja "#pragma alloc_text".
  • Lisätty tuki MSVC-yhteensopiville /JMC- ja /JMC-lippuille.
  • Lisätty "-m[no-]rdpru" -lippu ohjaamaan AMD Zen2 -prosessorien tukeman RDPRU-käskyn käyttöä.
  • Lisätty "-mfunction-return=thunk-extern" -lippu suojaamaan RETBLEED-haavoittuvuutta vastaan, joka toimii lisäämällä komentosarjan, joka sulkee pois epäsuorien hyppyjen spekulatiivisen suoritusmekanismin osallistumisen.

Vihdoin Jos haluat tietää enemmän siitä, voit tarkistaa yksityiskohdat seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.