Ngemva kwezinyanga eziyisithupha zentuthuko
Izici ezintsha ze-LLVM 9.0 zifaka ukususwa komaka womklamo wokuhlola kusukela kungxenyekazi eqondiwe ye-RISC-V, usekelo lwe-C++ lwe-OpenCL, ikhono lokuhlukanisa uhlelo lube izingxenye ezilayishwe ngamandla ku-LLD, kanye nokuqaliswa kokuthi “
-
Kwengeziwe ukuqaliswa kwenkulumo ethize ye-GCC "ngiza ", okukuvumela ukuthi usuke ku-assembler inline block uye kulebula enekhodi C. Lesi sici siyadingeka ukuze kwakhiwe i-Linux kernel kumodi ye-“CONFIG_JUMP_LABEL=y” kusetshenziswa i-Clang kumasistimu ane-x86_64 architecture. Uma kucatshangelwa izinguquko ezingezwe ekukhishweni kwangaphambilini, i-Linux kernel manje ingakhiwa e-Clang ye-x86_64 architecture (ngaphambilini eyakhiwe kuphela ingalo, i-aarch64, i-ppc32, i-ppc64le kanye ne-mips architectures yayisekelwe). Ngaphezu kwalokho, amaphrojekthi we-Android ne-ChromeOS asevele aguqulwa ukuze asebenzise i-Clang yokwakha i-kernel, futhi i-Google ihlola i-Clang njengenkundla eyinhloko yokwakha izinhlamvu zezinhlelo zayo ze-Linux zokukhiqiza. Ngokuzayo, ezinye izingxenye ze-LLVM zingasetshenziswa kunqubo yokwakha i-kernel, okuhlanganisa i-LLD, i-llvm-objcopy, i-llvm-ar, i-llvm-nm, ne-llvm-objdump; - Kwengezwe usekelo lokuhlola lokusebenzisa i-C++17 ku-OpenCL. Izici ezithile zifaka ukusekelwa kwezibaluli zesikhala samakheli, ukuvimbela ukuguqulwa kwesikhala sekheli ngohlobo lwama-opharetha okusakaza, ukuhlinzekwa kwezinhlobo ze-vector njengaku-OpenCL ye-C, ukuba khona kwezinhlobo ezithile ze-OpenCL zezithombe, imicimbi, iziteshi, njll.
- Kwengezwe amafulegi amasha weqoqo elithi “-ftime-trace” kanye ne-“-ftime-trace-granularity=N” ukuze kukhiqizwe umbiko ngesikhathi sokwenziwa kwezigaba ezihlukene ze-frontend (ukuhlaziya, ukuqalisa) kanye ne-backend (izigaba zokuthuthukisa). Umbiko ulondolozwe ngefomethi ye-json, ehambisana ne-chrome://tracing kanye ne-speedscope.app;
- Ukucutshungulwa okungeziwe kwesicacisi se-“__declspec(allocator)” nokukhiqizwa kolwazi lokususa iphutha olukuvumela ukuthi ugade ukusetshenziswa kwememori endaweni ye-Visual Studio;
- Olimini C, usekelo lwengeziwe lwe-“__FILE_NAME__” macro, efana ne-“__FILE__” macro, kodwa ehlanganisa kuphela igama lefayela ngaphandle kwendlela egcwele;
- I-C++ iye yandisa ukusekelwa kwezibaluli zesikhala samakheli ukuze ihlanganise izici ezihlukahlukene ze-C++, okuhlanganisa ipharamitha namaphethini wokungqubuzana, izinhlobo zereferensi, inkomba yohlobo lokubuyisela, izinto, imisebenzi ekhiqizwa ngokuzenzekelayo, ama-opharetha akhelwe ngaphakathi, nokuningi.
- Amakhono ahlobene nokusekelwa kwe-OpenCL, i-OpenMP ne-CUDA anwetshiwe. Lokhu kuhlanganisa ukusekelwa kokuqala kokufakwa okucacile kwemisebenzi ye-OpenCL eyakhelwe ngaphakathi (ifulegi elithi “-fdeclare-opencl-builtins” lengeziwe), isandiso se-cl_arm_integer_dot_product sifakiwe, futhi amathuluzi okuxilonga anwetshiwe;
- Umsebenzi womhlaziyi omile uthuthukisiwe futhi nemibhalo yokwenza ukuhlaziya okumile yengeziwe. Kwengezwe amafulegi ukuze kuboniswe amamojula okuhlola atholakalayo nezinketho ezisekelwayo (“-i-analyzer-checker[-option]-help”, “-i-analyzer-checker[-option]-help-alpha” kanye “nesihloli-sihloli[-inketho]-usizo "-unjiniyela"). Kwengezwe ifulegi elithi "-analyzer-werror" ukuphatha izexwayiso njengamaphutha.
Kungezwe izindlela zokuqinisekisa ezintsha:- security.insecureAPI.DeprecatedNomaUnsafeBufferHandling ukuhlonza imikhuba engaphephile yokusebenza ngezikhindi;
- osx.MIGChecker ukucinga ukwephulwa kwemithetho yekholi ye-MIG (Mach Interface Generator);
- optin.osx.OSObjectCStyleCast ukuthola ukuguqulwa kwento ye-XNU ye-libkern okungalungile;
- i-apiModeling.llvm enesethi yemisebenzi yokuhlola ukumodela ukuze kutholwe amaphutha ku-codebase ye-LLVM;
- Ikhodi ezinzile yokuhlola izinto ze-C++ ezingaqaliswanga (UninitializedObject in the optin.cplusplus package);
- Isisetshenziswa sefomethi ye-clang sengeze ukusekelwa kwekhodi yokufometha ngolimi lwe-C# futhi sinikeza ukusekelwa kwesitayela sokufometha sekhodi esisetshenziswa yi-Microsoft;
- i-clang-cl, enye i-interface yomugqa womyalo enikeza ukuhambisana kwezinga lokukhetha nomhlanganisi we-cl.exe ofakwe ku-Visual Studio, yengeze i-heuristics ukuphatha amafayela angekho njengezinketho zomugqa womyalo futhi ibonise isixwayiso esihambisanayo (isibonelo, lapho usebenzisa "clang-cl / diagnostic :caret /c test.cc");
- Ingxenye enkulu yokuhlola okusha yengezwe ku-linter clang-tidy, okuhlanganisa ukuhlola okungeziwe okuqondene ne-OpenMP API;
-
Kunwetshiwe amakhono esevaclangd (Iseva ye-Clang), lapho imodi yokwakha inkomba yangemuva ivulwa ngokuzenzakalelayo, ukusekelwa kwezenzo zomongo ngekhodi kuye kwengeziwe (ukubuyisa okuguquguqukayo, ukunwetshwa kwezincazelo ezizenzakalelayo nezinkulu, ukuguqulwa kwezintambo eziphunyukile zibe ezingaphunyukile), ikhono lokubonisa izixwayiso ezivela ku-Clang-tidy, ukuxilonga okunwetshiwe kwamaphutha kumafayela anhlokweni futhi kwengeza ikhono lokubonisa ulwazi mayelana nohlobo lwesigaba;
main
- Isici sokuhlola sokuhlukanisa sengezwe kusixhumi se-LLD, esikuvumela ukuthi uhlukanise uhlelo olulodwa lube izingxenye ezimbalwa, ngayinye etholakala kufayela elihlukile le-ELF. Lesi sici sikuvumela ukuthi wethule ingxenye eyinhloko yohlelo, ezolayisha ezinye izingxenye njengoba kudingeka ngesikhathi sokusebenza (ngokwesibonelo, ungahlukanisa isibukeli se-PDF esakhelwe ngaphakathi sibe ifayela elihlukile, elizolayisha kuphela lapho umsebenzisi evula i-PDF. ifayela).
I-LLD Linker
alethwe phambili esimeni esifanele ukuxhumanisa i-Linux kernel ye-architectures ye-arm32_7, arm64, ppc64le kanye ne-x86_64.
Izinketho ezintsha "-" (okuphumayo ku-stdout), "-[no-]vumela-shlib-undefined", "-undefined-glob", "-nmagic", "-omagic", "-dependent-library", " - z ifunc-noplt" kanye ne-"-z common-page-size". Ngokwakheka kwe-AArch64, usekelo lwe-BTI (Isikhombi Esiqondisiwe Segatsha) kanye ne-PAC (Ikhodi Yokuqinisekisa Yesikhombi) yengeziwe. Ukusekelwa kwezinkundla ze-MIPS, RISC-V kanye ne-PowerPC kuthuthukiswe kakhulu. Kwengezwe ukusekelwa kokuqala kokuxhumanisa okunamandla kwe-WebAssembly; - Ku-libc++
kwenziwe usayizi wemisebenzi, std::is_constant_evaluated, std::midpoint kanye ne-std::lerp, izindlela “ngaphambili” kanye “nomuva” zengezwe ku-std::span, izici zezinhlobo std::is_unbounded_array futhi std::is_bounded_array yengeziwe , amandla e-std anwetshiwe: :atomic. Ukusekelwa kwe-GCC 4.9 kunqanyuliwe (kungasetshenziswa ne-GCC 5.1 kanye nokukhishwa okusha). Ukwesekwa okwengeziweWASI (I-WebAssembly System Interface, isixhumi esibonakalayo sokusebenzisa i-WebAssembly ngaphandle kwesiphequluli); - Ukulungiselelwa okusha kwengeziwe. Kunikwe amandla ukuguqulwa kwamakholi we-memcmp abe yi-bcmp kwezinye izimo. Ukweqiwa okwenziwe kobubanzi bokuhlola amatafula okugxuma lapho amabhulokhi eswishi aphansi engafinyeleleki noma lapho imiyalelo ingasetshenziswa, isibonelo, lapho ubiza imisebenzi enohlobo olungenalutho;
- Ingemuva lesakhiwo se-RISC-V sizinzile, esingasabekwa njengesilingo futhi sakhiwe ngokuzenzakalelayo. Inikeza ukwesekwa okugcwele kokukhiqizwa kwekhodi ye-RV32I kanye ne-RV64I yokuhlukahluka kwesethi yemiyalelo enezandiso ze-MAFDC;
- Kuningi okuthuthukisiwe okwenziwe kuma-backends wezakhiwo ze-X86, AArch64, ARM, SystemZ, MIPS, AMDGPU kanye ne-PowerPC. Isibonelo, ngezokwakha
I-AArch64 yengeze ukusekelwa kwe-SVE2 (Scalable Vector Extension 2) kanye nemiyalelo ye-MTE (Memory Tagging Extensions); ku-backend ye-ARM, usekelo lwezakhiwo ze-Armv8.1-M kanye nesandiso se-MVE (M-Profile Vector Extension) sengeziwe. Ukusekelwa kwe-architecture ye-GFX10 (Navi) yengezwe ku-backend ye-AMDGPU, amandla okushaya ucingo anikwe amandla ngokuzenzakalelayo, futhi iphasi elihlanganisiwe liyasebenza.I-DPP (Data-Parallel Primitives). - Isilungisi sephutha se-LLDB manje sinokugqanyiswa kombala kokulandela ngemuva futhi sengeze usekelo lwezinhlobo ze-DWARF4 debug_types kanye namabhulokhi we-DWARF5 debug_info;
- Ukusekelwa kwezinto namafayela asebenzisekayo ngefomethi ye-COFF kwengezwe ezintweni ezisetshenziswayo ze-llvm-objcopy kanye ne-llvm-strip.
Source: opennet.ru