Ngemva kwezinyanga eziyisithupha zentuthuko
Ushintsho olubalulekile ekukhishweni okusha kwaba ukufakwa kwe
- Kwengezwe amandla okubuyisela isihlahla se-syntax esingabonakali (
I-AST ) yekhodi ye-C++ ephukile, engasetshenziswa ukusiza ukuhlonza amaphutha futhi inikeza ulwazi olwengeziwe ezinsizeni zangaphandle ezifana ne-clang-tidy ne-clangd. Isici sinikwe amandla ngokuzenzakalela kukhodi ye-C++ futhi silawulwa ngezinketho ze-"-Xclang -f[no-]recovery-ast". - Kungezwe izindlela zokuxilonga ezintsha:
- I-“-Wpointer-to-int-cast” iyiqembu lezexwayiso mayelana nokusakaza izikhombi kuhlobo lwe-int oluphelele olungawahlanganisi wonke amanani angenzeka.
- “-Wuninitialized-const-reference” - isexwayiso mayelana nokudlulisa okuguquguqukayo okungaqaliswanga kumapharamitha okusebenza amukela ama-agumenti ayisithenjwa ngesibaluli esithi “const”.
- "-I-Wimplicit-const-int-float-conversion" - inikwe amandla isexwayiso esizenzakalelayo mayelana nokuguqulwa okungaguquki kwangempela kohlobo lwenombolo ephelele.
- Ngeplathifomu ye-ARM, imisebenzi ye-C eyakhelwe kumhlanganisi inikezwa (
Okungaphakathi ), esikhundleni salokho yimiyalelo ye-vector esebenzayo Ingalo v8.1-M MVE kanye ne-CDE. Imisebenzi etholakalayo ichazwa kunhlokweni amafayela arm_mve.h kanye ne-arm_cde.h. -
Kwengezwe isethi yezinhlobo zenombolo enwetshiwe _ExtInt(N), ekuvumela ukuthi udale izinhlobo ezingewona amandla okuphindaphinda kabili, angacutshungulwa kahle ku-FPGA/HLS.Isibonelo , _ExtInt(7) ichaza uhlobo oluphelele oluhlanganisa amabhithi angu-7. - Amamakhro angeziwe achaza ukusekelwa kwemisebenzi eyakhelwe ngaphakathi ye-C ngokusekelwe kumiyalo ye-ARM SVE (Scalable Vector Extension):
__ARM_FEATURE_SVE, __ARM_FEATURE_SVE_BF16,
__ARM_FEATURE_SVE_MATMUL_FP32, __ARM_FEATURE_SVE_MATMUL_FP64,
__ARM_FEATURE_SVE_MATMUL_INT8,
__ARM_FEATURE_SVE2, __ARM_FEATURE_SVE2_AES,
__ARM_FEATURE_SVE2_BITPERM,
__ARM_FEATURE_SVE2_SHA3,
__ARM_FEATURE_SVE2_SM4. Isibonelo, i-macro __ARM_FEATURE_SVE ichazwa lapho kukhiqizwa ikhodi ye-AArch64 ngokusetha inketho yomugqa womyalo "-march=armv8-a+sve". - Ifulegi elithi "-O" manje selihlonzwa ngemodi yokwenza "-O1" esikhundleni sika-"-O2".
- Kwengezwe amafulegi amasha weqoqo:
- "-fstack-clash-protection" - inika amandla ukuvikela ngokumelene
izimpambano zesitaki nenqwaba . - "-ffp-exception-behavior={ignore,maytrap,strict}" - ikuvumela ukuthi ukhethe imodi yesibambi ehlukile yezinombolo zamaphuzu antantayo.
- "-ffp-model={precise,strict, fast}" - Yenza kube lula ukufinyelela ochungechungeni lwezinketho ezikhethekile zezinombolo zamaphuzu antantayo.
- "-fpch-codegen" kanye ne-"-fpch-debuginfo" ukuze kukhiqizwe unhlokweni ohlanganiswe ngaphambili (PCH) onamafayela ento ahlukene ekhodi kanye ne-debuginfo.
- I-“-fsanitize-coverage-allowlist” kanye ne-“-fsanitize-coverage-blocklist” ukuze uhlole uhlu olumhlophe nolumnyama lokuhlola ukumbozwa.
- “-mtls-size={12,24,32,48}” ukuze ukhethe usayizi we-TLS (uchungechunge lwesitoreji sendawo).
- "-menable-experimental-extension" ukuze unike amandla izandiso ze-RISC-V zokuhlola.
- "-fstack-clash-protection" - inika amandla ukuvikela ngokumelene
- Imodi ezenzakalelayo ye-C ithi "-fno-common", evumela ukufinyelela okuphumelelayo kokuguquguquka komhlaba kwamanye amapulatifomu.
- Inqolobane yemojuli emisiwe isusiwe ku/tmp yayiswa ~/.cache directory. Ukuze ukhiphe, ungasebenzisa ifulegi elithi “-fmodules-cache-path=".
- Izinga lolimi oluzenzakalelayo C libuyekeziwe ukusuka ku-gnu11 ukuya ku-gnu17.
- Kwengezwe ukwesekwa kokuqala kwesandiso se-GNU C "
asm emgqeni »ukwengeza izihlanganisi ezifakiwe. Isandiso sisahlaziywa, kodwa asicutshungulwa nganoma iyiphi indlela. - Amakhono ahlotshaniswa nosekelo lwe-OpenCL ne-CUDA anwetshiwe. Usekelo olungeziwe lwe-OpenCL 2.0 block diagnostics futhi kwasetshenziswa izici ezintsha ze-OpenMP 5.0.
- Kwengezwe inketho ye-IndentExternBlock kunsiza yefomethi ye-clang ukuze kuhlanganiswe ngaphakathi kwamabhulokhi "C" nangaphandle "C++".
- I-Static analyzer ithuthukise ukuphatha abakhi abazuzwe njengefa ku-C++. Kwengezwe amasheke amasha alpha.core.C11Khiya kanye ne-alpha.fuchsia.Khiya ukuze uhlole izingidi, alpha.security.cert.pos.34c ukuthola ukusetshenziswa okungaphephile kwe-putenv, webkit.NoUncountedMemberChecker kanye ne-webkit.RefCntblBaseVirtualDtor ukuthola izinkinga ezingabaleki ze-alpha .cplusplus .I-SmartPtr ukuze uhlole ukudereferensi kwesikhombi esihlakaniphile esingenalutho.
- Ku-linter clang-tidy
kwengezwe ingxenye enkulu yamasheke amasha. - Iseva ye-clangd caching (Clang Server) ithuthukise ukusebenza futhi yengeza amakhono amasha okuxilonga.
main
- Isistimu yokwakha ishintshelwe ekusebenziseni i-Python 3. Uma i-Python 3 ingatholakali, kungenzeka ukuthi ubuyisele emuva ekusebenziseni i-Python 2.
- Ingaphambili elinomhlanganisi wolimi lwe-Go (llgo) alifakiwe ekukhishweni, okungahle kuhlelwe kabusha ngokuzayo.
- Isibaluli se-vector-function-abi-variant sengeziwe ekumeleleni okuphakathi (IR) ukuchaza imephu phakathi komsebenzi we-scalar kanye ne-vector ukuze kuvezwe izingcingo. Kusuka ku-llvm::VectorType kunezinhlobo ezimbili ezihlukene ze-vector llvm::FixedVectorType kanye ne-llvm::ScalableVectorType.
- Igatsha elisuselwa kumanani we-udef kanye nokudlulisa amanani e-undef emisebenzini ejwayelekile yomtapo wolwazi kubonwa njengokuziphatha okungachazwanga. IN
I-memset/memcpy/memmove ivumela ukudlula izikhombi ze-undef, kodwa uma ipharamitha enosayizi inguziro. - I-LLJIT yengeze ukwesekwa kokwenza ukuqalisa okumile ngokusebenzisa i-LLJIT::iqalisa kanye ne-LLJIT::izindlela zokuyeka. Ikhono lokwengeza amalabhulali amile ku-JITDylib usebenzisa isigaba se-StaticLibraryDefinitionGenerator seliqalisiwe. Kwengezwe i-C API ye
ORCv2 (I-API yokwakha abahlanganisi be-JIT). - Ukusekelwa kwama-Cortex-A64, Cortex-A34, Cortex-A77 kanye nama-Cortex-X78 processors kwengezwe ngemuva kwesakhiwo se-AArch1. Izandiso ezisetshenziswayo ze-ARMv8.2-BF16 (BFloat16) kanye ne-ARMv8.6-A, okuhlanganisa i-RMv8.6-ECV (I-Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity Monitors virtualization) kanye ne-ARMv8.0-DGH (Isu lokuqoqwa kwedatha). Ikhono lokukhiqiza ikhodi ye-funcns-bindings eyakhelwe ngaphakathi imiyalelo ye-SVE vector inikeziwe.
- Usekelo lwe-Cortex-M55, i-Cortex-A77, i-Cortex-A78 ne-Cortex-X1 processors yengezwe ngemuva kwezakhiwo ze-ARM. Izandiso zisetshenzisiwe
I-Armv8.6-A Matrix Phindaphinda futhi RMv8.2-AA32BF16 BFloat16. - Ukusekelwa kokukhiqizwa kwekhodi kwamaphrosesa we-POWER10 kungeziwe ku-backend yezakhiwo ze-PowerPC. Ukulungiselelwa kwe-Loop kunwetshiwe futhi nokusekelwa kwendawo elintantayo kuthuthukisiwe.
- Ingemuva lesakhiwo se-RISC-V sivumela ukwamukelwa kwamapeshi asekela amasethi emiyalo anwetshiwe angakagunyazwa ngokusemthethweni.
- Ingemuva le-architecture ye-AVR idluliselwe kusukela esigabeni sokuhlola ukuya kuzinzile, okufakwe ekusabalaliseni okuyisisekelo.
- I-backend yezakhiwo ze-x86 isekela imiyalo ye-Intel AMX kanye ne-TSXLDTRK. Ukuvikelwa okwengeziwe ekuhlaselweni
I-LVI (Layisha Umjovo Wenani), futhi iphinde isebenzise indlela evamile Yokucindezela I-Speculative Execution Side Effect ukuze uvimbele ukuhlasela okubangelwa ukuqaliswa kokuqagela kokusebenza ku-CPU. - Ngemuva kwesakhiwo seSystemZ, usekelo lweMemorySanitizer neLeakSanitizer lwengeziwe.
- I-Libc++ yengeza ukusekelwa kwefayela elingasekhanda elinama-constants ezibalo
. -
Kunwetshiwe Amakhono okuxhumanisa we-LLD. Ukusekelwa okuthuthukisiwe kwefomethi ye-ELF, okuhlanganisa izinketho ezengeziwe "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- single-module", "-iyingqayizivele", "-rosegment", "-threads=N". Kwengezwe inketho ethi "--time-trace" ukuze ulondoloze umkhondo wefayela, elingase lihlaziywe ngesixhumi esibonakalayo se-chrome://tracing ku-Chrome.
Source: opennet.ru