Saadaval on LLVM 18 kompilaatorite komplekt

PĂ€rast kuut kuud arendust on vĂ€lja antud projekti LLVM 18.1.0 versioon - GCC ĂŒhilduv tööriistakomplekt (kompilaatorid, optimeerijad ja koodi genereerijad), mis kompileerib programme RISC-sarnaste virtuaalsete kĂ€skluste vahebitkoodi (madala taseme virtuaalmasin mitmekihilise optimeerimissĂŒsteemiga). Genereritud pseudokood saab JIT-kompilaatori abil tĂ”lkida masinakeelde programmi tĂ€itmise hetkel.

Alates harust 18.x on projekt lĂ€inud ĂŒle uuele versiooninumbrite vormindamise skeemile. Sarnaselt GCC ja GDB projektidele kasutatakse nullversiooni ('N.0') nĂŒĂŒd arenduse protsessis, esimene stabiilne versioon tarnitakse numbri 'N.1' all. Muudatus eraldab arendusharu alusel (mainline) loodud kogumid lĂ”ppversioonide kogumitest. NĂ€iteks praeguse vĂ€ljaande ettevalmistamisel töötati ebatavalise LLVM 18.0 haru peal, samas kui esimene stabiilne versioon ilmus numbri 18.1.0 all. Edaspidi vĂ”ivad vajadusel iga kahe nĂ€dala tagant ilmuda parandavad vĂ€ljaanded numbritega 18.1.1, 18.1.2 jne. Kui praeguses harus tehakse muudatusi, mis rikuvad ABI-d, vormistatakse uuendus teise versiooninumbri muutmisega (st 18.2.0).

Peamised tÀiustused Clang 18-s:

  • C keelega seotud muudatused:
    • Struktuurid, liideseformenid ja massiivid, millel on 'const' atribuuti, saavad nĂŒĂŒd kasutada nagu konstantseid vĂ€ljendeid, sarnaselt GCC-le.
    • Loetelud (enum) kajastuvad nĂŒĂŒd TBAA (Type Based Alias Analysis) metaandmetes oma algses tĂ€isarvutĂŒĂŒbis, selle asemel et töödelda neid 'char' tĂŒĂŒbina.
    • Lisatud on 'counted_by' atribuudi tugi, mille kaudu saab mÀÀrata struktuuris paindliku massiivi vĂ€lja, mis mÀÀrab massiivi elementide arvu. Atribuuti saab Clangis kasutada mĂ€luaĂŒlemineku kontrollimise efektiivsuse suurendamiseks.
  • Tulevase C standardi C23 mÀÀratud vĂ”imalused:
    • Lisatud on '−std=c23' ja '−std=gnu23' lippude tugi, samuti vÀÀrtus '202311L' makros jaoks '__STDC_VERSION__', mis mÀÀratleb C23 standardi ja GNU C23 laiendused.
    • Lisatud on 'requires c23' vĂ€ljendi tugi, et siduda mooduleid C23 standardi toe poole.
    • Rakendatud on tĂŒĂŒbi vĂ€ljundi tugi objektide mÀÀratlemisel, mis vĂ”imaldab tĂŒĂŒbile 'auto' asemel mÀÀrata muutujate tĂŒĂŒbi nende initsialiseerimiseks vĂ€ljendi tĂŒĂŒbi pĂ”hjal. NĂ€iteks: 'auto y = cos(x);'.
    • Lisatud on pealkirja faili tugi, kus on makrod tĂ€isarvuliste arvutuste kontrollimiseks.
    • MĂ€rgiste asetamine on lubatud mis tahes kohtades komposiitvĂ€ljendite sees.
    • C23 reĆŸiimis kompileerimise korral lĂ”petatakse kolmekordsete ASCII-te mĂ€rkide trigonide toimetamine. NĂ€iteks '??=' jĂ€rjendit vĂ”is kasutada '#' asemel. Unicode'i tekkimisega on trigonide tugi kaotanud mĂ”tte.
  • C++20 standardiga seotud vĂ”imalused: Katsekatse mitmesuguste argumentide, mis ei ole tĂŒĂŒbid, kasutamiseks mallides, nĂ€iteks lubatakse mÀÀrata ujukvektorite, osutite ja osade viidete vÀÀrtused.
  • C++23 standardiga seotud vĂ”imalused: Ekspserimitalunnik tugi mehhanismile 'Deducing this', mis vĂ”imaldab mallis kasutada 'this' atribuute ja annab klassifunktsioonile vĂ”imaluse teada saada vĂ€ljendi kategooriat (nĂ€iteks, kas see on konstant), mille jaoks see funktsioon kutsuti.
  • C++2c (C++26) tuleviku standardiga seotud vĂ”imalused:
    • Lisatud vĂ”imalus kasutada korraga mitut tĂ€itmismuutuja nimega „_“ ĂŒhes ulatuses, nĂ€iteks on nĂŒĂŒd kehtivad konstruktsioonid: struct S { int _, _; }; void func() { int _, _; } void other() { int _; // varem kuvati hoiatust reĆŸiimis -Wunused }
    • Antud vĂ”imalus kasutada stringi literaale kontekstis, kus neid ei kasutata mĂ€rgistusmassiivide initsialiseerimiseks ja nad ei satu lĂ”ppkoodisse, vaid kasutatakse ainult kompileerimise ajal diagnostikateadeteks ja eelprotsessimiseks, nĂ€iteks direktiivide ja atribuutide _Pragma, asm, extern, static_assert, [[deprecated]] ja [[nodiscard]] parameetritena.
    • Ebakohane on implicitide arvu muutmine loendavate vÀÀrtuste aritmeetilistes arvutustes. int main() { enum E1 { e }; enum E2 { f }; bool b = e

      Allikas: opennet.ru
Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster