LLVM 18.1.0 saapuu tukiparannuksilla, taustajärjestelmillä ja muilla

LLVM logo

LLVM on kehys kääntäjien kehittämiseen sekä uusien ohjelmointikielien rakentamiseen ja olemassa olevien kielten parantamiseen.

Projektin käynnistäminen LLVM 18.1.0 saapuu kuuden kuukauden kehitystyön jälkeen ja sisältää parannuksia GCC q:n kanssaNe kattavat kääntäjät, optimoijat ja koodigeneraattorit. Merkittävä muutos tässä versiossa se on uusi malli versionumeroiden luomiseksi LLVM-projektissa 18.x haarasta alkaen. GCC:n ja GDB:n kaltaisten projektien käytännön mukaisesti kehitysvaiheessa on otettu käyttöön versio nolla ("N.0"), kun taas ensimmäinen vakaa versio on numeroitu "N.1". Tämä muutos tarjoaa etuja erottamalla päähaaran koontiversiot lopullisen julkaisuhaaran koontiversioista.

Esimerkiksi valmisteltaessa nykyistä julkaisua (18.1.0) kehitys tehtiin käyttämällä LLVM 18.0:n epävakaa haaraa. Ensimmäinen vakaa versio julkaistiin sitten numerolla 18.1.0, mikä merkitsi laajan kehitys- ja testaussyklin huipentumaa. Lisäksi tämä uusi järjestelmä mahdollistaa korjaavien viestien luomisen kahden viikon välein tarvittaessa numeroiden 18.1.1, 18.1.2 ja niin edelleen alla.

On tärkeää huomata, että jos nykyiseen haaraan tehdään muutoksia, jotka vaikuttavat ABI:hen (Application Binary Interface), päivitys näkyy muutoksena version toiseen numeroon, esimerkiksi 18.2.0. Tämä varmistaa johdonmukaisen ja läpinäkyvän versionhallinnan ja antaa käyttäjille tarvittavan selvyyden vakaudesta ja jokaisessa julkaisussa tehdyistä muutoksista.

LLVM 18.1.0: n tärkeimmät uudet ominaisuudet

Tässä uudessa versiossa, joka on esitetty LLVM 18.1.0:sta, X86-arkkitehtuuri, ISA-laajennusten tukiparannuksia toteutettiin. Erityisesti tuki on lisätty laajennuksille USER_MSR, AVX10.1-256 ja AVX10.1-512. Sitä paitsi, i128-tyyppi on yhdistetty __int128-tyyppiseen GCC:hen ja kiliseen, mikä helpottaa parempaa binaariyhteensopivuutta ulkoisten projektien, kuten Rust, kanssa.

Toinen kohokohta LLVM 18.1.0:ssa oli varten RISC-V, koska useita parannuksia on tehty ja merkittäviä lisäyksiä stabiloimalla jal Laajennusten tuki sekä laajennusten sisäänrakennetut toiminnot on lisätty ja kokeellinen tuki on otettu käyttöön koodin luomiseen RV32E-, RV64E-, ilp32e- ja lp64e-arkkitehtuureissa.

Arkkitehtuurin taustalla LoongArch, sisäänrakennetut toiminnot on lisätty LSX-laajennuksiin (128-bittinen SIMD) ja LASX (256-bittinen SIMD), tuki on lisätty uusille ohjeille, jotka on otettu käyttöön LoongArch Reference Manual -spesifikaatiossa 1.10, ja ensimmäinen tuki automaattiselle vektoroinnille on otettu käyttöön.

AArch64:ssä Laajennettu tuki prosessoreille, kuten Cortex-A520, Cortex-A720 ja Cortex-X4, ja tuki on otettu käyttöön Stack Clash Protection -mekanismille, joka havaitsee pinon ylivuodot ja estää hyökkäysmenetelmät pinon ja kasan leikkauspisteen perusteella.

Näiden erilaisten arkkitehtuurien taustaohjelmiin tehtyjen erityisten parannusten lisäksi on tehty yleisiä parannuksia arkkitehtuurien, kuten WebAssemblyn, MIPS:n, PowerPC:n ja AMDGPU:n, taustajärjestelmiin. LLD-linkkerin ominaisuuksia on myös laajennettu, RISC-V- ja AArch64-arkkitehtuurien tukea on parannettu ja Libc++-kirjastoon on tehty päivityksiä, jotka noudattavat C++20-, C++23- ja C-ominaisuuksia. ++26.

Lopuksi, LLDB-debuggeri on lisännyt tuen symbolien ja binääritietojen automaattiseen purkamiseen ulkoisista palvelimista jotka tukevat DEBUGINFOD-protokollaa, mikä laajentaa virheenkorjauskykyä eri arkkitehtuureissa ja lisää tukea laajennuksille, kuten SME ja SME2 (Scalable Matrix Extension), ja on tärkeää huomata, että Python-kielen sidokset on poistettu joillakin alueilla, mikä saattaa vaativat muutoksia kehitysprosesseihin, jotka riippuvat näistä linkeistä.

Osia varten parannuksia, jotka toteutettiin Clang 18:ssa, mukaan lukien C-kieleen liittyvät muutokset:

  • Rakenteita, liitoksia ja taulukoita, joissa on "const"-attribuutti, voidaan nyt käyttää vakiolausekkeina GCC:n kanssa analogisesti.
  • Enumukset näkyvät nyt TBAA-metatiedoissa (Type-Based Alias ​​Analysis) alkuperäisenä kokonaislukutyyppinä sen sijaan, että niitä olisi käsitelty "char"-tyyppinä.
  • Lisätty tuki "counted_by"-attribuutille, jonka avulla voit määrittää rakenteessa kentän joustavalla taulukolla, jotta voit määrittää joustavan taulukon elementtien lukumäärän, mikä parantaa puskurin ylivuototarkistusten tehokkuutta klanauksessa.
  • Toteutettu tuki "requires c23" -lausekkeelle moduulien linkittämiseksi ja C23-standardin tukemiseksi.
  • Kokeellinen ominaisuus otettiin käyttöön lisätyyppien kirjoittamattomien argumenttien käyttämiseksi malleissa, mikä mahdollistaa liukulukuarvojen, osoittimien ja aliobjektien viittausten määrittämisen.
  • Lisätty kokeellinen tuki "Deducing this" -mekanismille, jonka avulla voit käyttää parametreja "this"-attribuutilla mallissa ja selvittää lausekkeen luokka, jota varten tämä funktio kutsuttiin.

Lopuksi, jos haluat tietää enemmän siitä, voit tutustua yksityiskohtiin Seuraavassa linkissä.


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.