Ngemva nje kwezinyanga eziyisithupha zokuthuthuka, ukwethulwa kwe- inguqulo entsha yephrojekthi LLVM 16.0, inguqulo lapho inani elikhulu lezinguquko nokuthuthukiswa okwenziwa khona.
Kulabo abangayijwayele i-LLVM, kufanele wazi ukuthi lokhu ingumqambi ohambisana ne-GCC (abadidiyeli, izilungiseleli, nezikhiqizi zekhodi) ezihlanganisa izinhlelo zibe yibhithikhodi emaphakathi yokufundisa efana ne-RISC (umshini wezinga eliphansi onohlelo lokwenza amaleveli amaningi).
I-pseudocode ekhiqiziwe ingashintshwa yi-JIT compiler ibe imiyalelo yomshini ngesikhathi sokwenziwa kohlelo.
Izici ezintsha eziyinhloko ze-LLVM 16.0
Kule nguqulo entsha ethulwayo, singathola ukuthuthukiswa okumbalwa okubalulekile ngo-clang 16.0, okuyizinga elizenzakalelayo le-C++/ObjC++ eligqamayo, okuyilo isethwe ku-gnu++17 (ngaphambilini okwakuyi-gnu++14), okuyinto kusho ukusekelwa kwezici ze-C++17 ezinezandiso ze-GNU ngokuzenzakalela. Ukusetshenziswa kwezinto ezichazwe ezingeni le-C++17 kuvunyelwe kukhodi ye-LLVM.
Olunye ushintsho olugqamayo ukuthi selufakiwe ukusekelwa kwe-Cortex-A715, Cortex-X3 kanye ne-Neoverse CPUs I-V2, izandiso ze-Armv8.3 nezici zenguqulo eminingi ku-backend ye-AArch64.
La ukuhambisana yesikhulumi I-Armv2, i-Armv2A, i-Armv3 ne-Armv3M ayiqhubeki ku-backend ye-architecture ye-ARM, lapho ukukhiqizwa kwekhodi efanele bekungaqinisekisiwe. Kwengezwe ikhono lokukhiqiza ikhodi ukuze iziqondiso zisebenze ngezinombolo eziyinkimbinkimbi futhi zengezwe ukwesekwa kwezakhiwo yamasethi eziyalezo (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT kuya ku-X86 backend.
Ngaphandle kwalokho, izidingo zokwakha i-LLVM zinyusiwe, Futhi ukwakhiwa kufanele manje kuhambisane nezinga le-C++17, okungukuthi ukwakha kudinga okungenani i-GCC 7.1, Clang 5.0, Apple Clang 10.0 noma i-Visual Studio 2019 16.7.
Ngakolunye uhlangothi, ibuye igqamise i-backends ethuthukisiwe ye-MIPS, i-PowerPC ne-RISC-V yezakhiwo, kanye nokusekelwa kokulungisa iphutha le-64-bit esebenzisekayo yezakhiwo ze-LoongArch kusilungisi sephutha se-LLDB kanye nokuphathwa okuthuthukisiwe kwezimpawu zokususa iphutha ze-COFF.
Kwezinye izinguquko okugqamile:
- Kulabhulali ye-Libc++, umsebenzi oyinhloko ubugxile ekusebenziseni ukusekelwa kwezici ezintsha zamazinga e-C++20 kanye ne-C++23.
- Isikhathi sokuxhuma sincishiswe kakhulu kusixhumi se-LDD ngokufanisa ukuskena kokuthuthwa kwekheli nemisebenzi yokuqalisa isigaba. Kwengezwe ukusekelwa kokucindezelwa kwesigaba kusetshenziswa i-algorithm ye-ZSTD.
- Imisebenzi ethuthukisiwe eyenziwe ngezinga le-C++20 nayo iyagqanyiswa.
- bamba izixhumanisi ezakhiwe emisebenzini ye-lambda.
- I-opharetha yokulingana ngaphakathi kwezinkulumo.
- Ikhono lokungacacisi igama elingukhiye legama kwezinye izimo,
- Ukuvunyelwa kokuqaliswa kwengezwe phakathi kwabakaki ("Aggr(val1, val2)").
- Imisebenzi esetshenzisiwe echazwe ezingeni elizayo le-C++2b.
- Usekelo luhlinzekwe ngohlobo lwe-char8_t,
- Kunwetshwe ububanzi bezinhlamvu ezivunyelwe ukusetshenziswa kokuthi "\N{...}",
- Kwengezwe amandla okusebenzisa okuguquguqukayo okumenyezelwe njengokuthi "static constexpr" emisebenzini emenyezelwe njenge-constexpr.
- Imisebenzi esetshenzisiwe echazwe ezingeni elizayo le-C2x C:
- Ukwesekwa okwengeziwe kokulayisha amafayela amaningi okumisa (amafayela okumisa azenzakalelayo alayishwa kuqala, bese lawo acaciswe ngefulegi elithi “–config=", manje elingacaciswa izikhathi eziningi).
- I-oda elishintshiwe lokulayisha lamafayela okusetha azenzakalelayo: u-clang uzama ukulayisha ifayela kuqala - .cfg futhi uma ingayitholi, izama ukulayisha amafayela amabili .cfg kanye .cfg.
- Kwengezwe ifulegi elisha lokwakha elithi "-fcoro-aligned-allocation" lokusabalalisa okuhambisana nohlaka olujwayelekile.
- Kwengezwe ifulegi elithi "-fmodule-output" ukuze unike amandla imodeli yokwakha yesigaba esisodwa samamojula ajwayelekile e-C++.
- Imodi engeziwe "-Rpass-analysis=stack-frame-layout" ukuze uhlole izinkinga ngesakhiwo sozimele wesitaki.
- Kwengezwe isibaluli esisha __attribute__((target_version("cpu_features"))) futhi kwanwetshwa ukusebenza kwe-__attribute__((target_clones("cpu_features1″,"cpu_features2",…)))) ukuze ukhethe izinguqulo ezithile zezici ezinikezwe64 CPUA .
- Amathuluzi okuxilonga athuthukisiwe:
- Isexwayiso esingeziwe "-Wsingle-bit-bitfield-constant-conversion" ukuze ubambe ukunqanyulwa okucacile lapho unikeza eyodwa endaweni eyodwa esayiniwe.
- Ukuxilongwa okunwetshiwe kokuhlukahluka kwe-constexpr okungaqaliswanga.
- Kwengezwe izexwayiso ze-"-Wcast-function-type-strict" kanye "nezixwayiso-ze-Wincompatible-function-pointer-types-strict" ukuze kubanjwe izinkinga ezingaba khona lapho kusakaza izinhlobo zokusebenza.
Okokugcina Uma unesifiso sokwazi okwengeziwe ngakho, ungabheka imininingwane kufayela le- isixhumanisi esilandelayo.