LLVM 18.1.0 ateina su palaikymo patobulinimais, užpakalinėmis programomis ir kt

LLVM logotipas

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

Projekto startas LLVM 18.1.0 ateina po šešių mėnesių kūrimo ir turi patobulinimų su GCC qJie apima kompiliatorius, optimizatorius ir kodų generatorius. Pastebimas pokytis šioje versijoje yra nauja schema versijų numeriams generuoti LLVM projekte, pradedant nuo 18.x šakos. Remiantis tokių projektų kaip GCC ir GDB praktika, kuriant buvo priimta naudoti nulinę versiją („N.0“), o pirmoji stabili versija pažymėta „N.1“. Šis pakeitimas suteikia pranašumų, nes atskiriant pagrindine šaka pagrįstas versijas nuo galutinio leidimo šakos versijų.

Pavyzdžiui, ruošiantis dabartinei versijai (18.1.0), plėtra buvo atlikta naudojant nestabilią LLVM 18.0 šaką. Tada pirmoji stabili versija buvo išleista 18.1.0 numeriu, pažymint plataus kūrimo ir testavimo ciklo kulminaciją. Be to, ši nauja schema leidžia prireikus generuoti korekcinius ryšius kas dvi savaites pagal numerius 18.1.1, 18.1.2 ir pan.

Svarbu atkreipti dėmesį, kad jei dabartinėje šakoje bus atlikti pakeitimai, turintys įtakos ABI (Application Binary Interface), naujinimas atsispindės pakeitus antrąjį versijos skaitmenį, pavyzdžiui, 18.2.0. Tai užtikrina nuoseklų ir skaidrų versijų valdymą, suteikiant vartotojams reikiamo aiškumo dėl stabilumo ir kiekvienos laidos modifikacijų.

Pagrindinės naujos „LLVM 18.1.0“ funkcijos

Šioje naujoje versijoje, kuri pateikiama LLVM 18.1.0, Įdiegta X86 architektūra, ISA plėtinių palaikymo patobulinimai. Visų pirma, buvo pridėtas USER_MSR, AVX10.1-256 ir AVX10.1-512 plėtinių palaikymas. Be to, i128 tipas buvo suvienodintas su __int128 tipo GCC ir skamba, kuris palengvina didesnį dvejetainį suderinamumą su išoriniais projektais, tokiais kaip Rust.

Kitas akcentas LLVM 18.1.0 buvo skirtas RISC-V, nes buvo atlikti keli patobulinimai ir reikšmingi papildymai stabilizuojant irl Pridėta plėtinių palaikymas ir įmontuotos plėtinių funkcijos ir buvo įdiegtas eksperimentinis palaikymas kodų generavimui RV32E, RV64E, ilp32e ir lp64e architektūrose.

Architektūros gale LSX plėtiniams buvo pridėtos „LoongArch“ integruotos funkcijos (128 bitų SIMD) ir LASX (256 bitų SIMD), buvo pridėtas palaikymas naujoms instrukcijoms, pateiktoms LoongArch Reference Manual specifikacijoje 1.10, ir pradinis automatinio vektorizavimo palaikymas.

AArch64, Išplėstas procesorių, tokių kaip Cortex-A520, Cortex-A720 ir Cortex-X4, palaikymas, ir buvo įdiegtas „Stack Clash Protection“ mechanizmo palaikymas, kuris aptinka krūvos perpildymą ir blokuoja atakos metodus pagal dėklo ir krūvos sankirtą.

Be šių konkrečių įvairių architektūrų užpakalinių sistemų patobulinimų, buvo atlikti bendri tokių architektūrų kaip WebAssembly, MIPS, PowerPC ir AMDGPU užpakalinių sistemų patobulinimai. Taip pat buvo išplėstos LLD linkerio galimybės, patobulintas RISC-V ir AArch64 architektūrų palaikymas, o Libc++ bibliotekos atnaujinimai įgyvendinti, kad atitiktų C++20, C++23 ir C galimybes. standartai ++26.

Galiausiai, LLDB derinimo priemonė papildė automatinio simbolių ir dvejetainių duomenų iš išorinių serverių palaikymą kurie palaiko DEBUGINFOD protokolą, taip išplečiant derinimo galimybes įvairiose architektūrose ir pridedant palaikymą plėtiniams, tokiems kaip SME ir SME2 (Scalable Matrix Extension), ir svarbu pažymėti, kad kai kuriose srityse Python kalbos susiejimas buvo pašalintas, o tai gali reikia koreguoti kūrimo procesus, kurie priklauso nuo šių nuorodų.

Dėl dalių patobulinimai, kurie buvo įgyvendinti Clang 18, įskaitant pakeitimus, susijusius su C kalba:

  • Struktūras, sąjungas ir masyvus su atributu „const“ dabar leidžiama naudoti kaip pastovias išraiškas, remiantis analogija su GCC.
  • Enums dabar atsispindi TBAA (tipu pagrįstos slapyvardžių analizės) metaduomenyse kaip pirminis sveikųjų skaičių tipas, o ne traktuojamas kaip „char“ tipas.
  • Pridėtas atributo „counted_by“ palaikymas, leidžiantis nurodyti lauką struktūroje su lanksčiu masyvu, kad būtų galima nustatyti lanksčiame masyve esančių elementų skaičių, taip pagerinant buferio perpildymo patikrinimų efektyvumą skambant.
  • Įdiegtas palaikymas „reikalauja c23“ išraiškai, kad būtų galima susieti modulius ir palaikyti C23 standartą.
  • Buvo įdiegta eksperimentinė funkcija, leidžianti šablonuose naudoti papildomų tipų neįrašytus argumentus, leidžiančius nurodyti slankiojo kablelio reikšmes, rodykles ir poobjektų nuorodas.
  • Pridėtas eksperimentinis mechanizmo „Išvedimas tai“ palaikymas, leidžiantis šablone naudoti parametrus su atributu „this“ ir atrasti išraiškos kategoriją, kuriai ši funkcija buvo iškviesta.

Galiausiai, jei jus domina daugiau apie tai sužinoti, galite susipažinti su išsamia informacija Šioje nuorodoje.


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ą.