Emva nje kweenyanga ezintandathu zophuhliso, ukumiliselwa kwe Inguqulelo entsha yeprojekthi I-LLVM 16.0, inguqulelo apho inani elikhulu lotshintsho kunye nophuculo luphunyezwa.
Kwabo bangayazi i-LLVM, kuya kufuneka uyazi ukuba oku yi-GCC compiler compiler (abahlanganisi, abalungiseleli, kunye nabavelisi bekhowudi) abaqulunqa iinkqubo zibe yi-RISC-efana nomyalelo we-virtual bitcode ephakathi (umatshini wenyani okwinqanaba elisezantsi onenkqubo yokwandisa amanqanaba amaninzi).
I-pseudocode eyenziweyo inokuguqulwa ngumqambi we-JIT kwimiyalelo yomatshini kanye ngexesha lokwenziwa kweprogram.
Iimpawu ezintsha zeLLVM 16.0
Kolu guqulelo lutsha lunikezelweyo, sinokufumana uphuculo oluninzi olubalulekileyo kwi clang 16.0, apho umgangatho we-C ++/ObjC++ ongagqibekanga umi ngaphandle, leyo imiselwe ku-gnu++17 (eyayisakuba ngu-gnu++14), leyo kuthetha inkxaso kwiifitsha ze-C++17 ezinezandiso ze-GNU ngokungagqibekanga. Ukusetyenziswa kwezinto ezichazwe kumgangatho we-C ++ 17 kuvunyelwe kwikhowudi ye-LLVM.
Olunye utshintsho olugqamayo kukuba yongezwe inkxaso yeCortex-A715, Cortex-X3 kunye neNeoverse CPUs I-V2, i-Armv8.3 izandiso kunye neempawu ezininzi kwiinguqulelo ze-AArch64 ngasemva.
La ukuhambelana kweqonga I-Armv2, i-Armv2A, i-Armv3 kunye ne-Armv3M ziye zayekwa kwi-backend yolwakhiwo lwe-ARM, apho ukuveliswa kwekhowudi echanekileyo akuzange kuqinisekiswe. Kongezwe ukukwazi ukuvelisa ikhowudi yemiyalelo yokusebenza ngamanani anzima kwaye yongezwa inkxaso yoyilo lwezakhiwo yeesethi zemiyalelo (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT ukuya kwi-X86 backend.
Ngaphandle koko, iimfuno zokwakha iLLVM zonyusiwe, Kwakhona ukwakhiwa kufuneka ngoku kuhambelane nomgangatho we-C ++ 17, oko kukuthi ukwakha kufuna ubuncinane i-GCC 7.1, i-Clang 5.0, i-Apple Clang 10.0 okanye i-Visual Studio 2019 16.7.
Kwelinye icala, ikwaqaqambisa i-backends ephuculweyo ye-MIPS, i-PowerPC kunye ne-RISC-V ye-architectures, kunye nenkxaso yokulungiswa kwe-64-bit ephunyeziweyo kwi-architecture ye-LoongArch kwi-LLDB debugger kunye nokuphathwa okuphuculweyo kweesimboli ze-COFF.
Olunye utshintsho ezibalaseleyo:
- Kwilayibrari yeLibc ++, umsebenzi oyintloko wawugxininise ekuphumezeni inkxaso kwiimpawu ezintsha zeC ++ 20 kunye neC ++ 23 imigangatho.
- Ixesha lokudibanisa liye lancitshiswa kakhulu kwikhonkco ye-LDD ngokufanisa ukuskena kwedilesi yokufuduka kunye nemisebenzi yokuqalisa icandelo. Inkxaso eyongeziweyo yoxinzelelo lwecandelo usebenzisa i-algorithm ye-ZSTD.
- Imisebenzi ephezulu ephunyezwe ngomgangatho we-C ++ 20 nayo ibonakaliswe.
- bamba amakhonkco acwangcisiweyo kwimisebenzi ye-lambda.
- Umsebenzisi wokulingana phakathi kweenkcazo.
- Ukukwazi ukukhankanya igama elingundoqo legama elingundoqo kwezinye iimeko,
- Ukuvunyelwa kokuqaliswa kongezwe phakathi kwezibiyeli ("Aggr(val1, val2)").
- Iphunyeziwe imisebenzi echazwe kwinqanaba elizayo le-C++2b.
- Inkxaso enikezelwe ngohlobo lwe-char8_t,
- Yandisa uluhlu lwamagama avumelekileyo ukuba asetyenziswe kwi "\N{...}",
- Kongezwe amandla okusebenzisa izinto eziguquguqukayo ezibhengezwe njenge "static constexpr" kwimisebenzi ebhengezwe njenge-constexpr.
- Iphunyeziwe imisebenzi echazwe kumgangatho weC2x C wexesha elizayo:
- Inkxaso eyongeziweyo yokulayisha iifayile ezininzi zoqwalaselo (iifayile zoqwalaselo oluhlala lukhona zilayishwa kuqala, emva koko ezo zicaciswe nge "-config="" iflegi, enokuthi ngoku ichazwe izihlandlo ezininzi).
- Ulungelelwaniso lomthwalo olutshintshiweyo lweefayile zoqwalaselo ezingagqibekanga: i-clang izama ukulayisha ifayile kuqala - .cfg kwaye ukuba ayikwazi ukuyifumana, izama ukulayisha iifayile ezimbini .cfg kunye .cfg.
- Kongezwe iflegi entsha yokwakha "-fcoro-aligned-allocation" yosasazo lwesiqhelo olulungelelanisiweyo.
- Kongezwe iflegi "-fmodule-output" ukwenza imodeli yolwakhiwo lwenqanaba elinye leemodyuli eziqhelekileyo ze-C++.
- Imo eyongeziweyo "-Rpass-analysis=stack-frame-layout" ukuxilonga imiba ngoyilo lwesakhelo sesitaki.
- Kongezwe uphawu olutsha __attribute__((target_version("cpu_features"))) kwaye kwandiswe ukusebenza kwe __attribute__((target_clones("cpu_features1″,"cpu_features2",...)))))))))) .
- Izixhobo zokuxilonga ezomeleziweyo:
- Isilumkiso esongeziweyo "-Wsingle-bit-bitfield-constant-conversion" ukubamba ukunqunyulwa okufihlakeleyo xa unika enye indawo encinci esayiniweyo.
- Uxilongo olwandisiweyo lwe-constexpr variables engasetyenziswanga.
- Kongezwe "-Wcast-function-type-strict" kunye ne "-Wincompatible-function-pointer-types-strict" izilumkiso zokubamba imiba enokubakho xa uphosa iindidi zomsebenzi.
Gqibela Ukuba unomdla wokwazi okungakumbi ngayo, ungajonga iinkcukacha kwi ukulandela ikhonkco.