Human sa unom ka bulan nga pag-uswag, ang pagpagawas sa proyekto sa LLVM 13.0 gipresentar - usa ka GCC-compatible toolkit (compilers, optimizers ug code generators) nga nag-compile sa mga programa ngadto sa intermediate bitcode sa RISC-like virtual instructions (usa ka low-level virtual machine nga adunay multi-level nga sistema sa pag-optimize). Ang namugna nga pseudocode mahimong mabag-o gamit ang JIT compiler ngadto sa mga instruksiyon sa makina direkta sa panahon sa pagpatuman sa programa.
Mga Pag-uswag sa Clang 13.0:
- Gisuportahan na karon ang garantiyadong tail calls (usa ka tawag sa usa ka subroutine sa pinakadulo sa usa ka function, nga maghimo og tail recursion kon ang subroutine motawag sa iyang kaugalingon). Gisuportahan na karon ang garantiyadong tail calls gamit ang "[[clang::musttail]]" attribute sa C++ ug "__attribute__((musttail))" sa C, nga gigamit sa "return" statement. Kini nga feature makapahimo sa mga optimization pinaagi sa pagpatag sa code ngadto sa usa ka patag nga iteration aron makadaginot sa stack space.
- Ang mga depinisyon sa attribute nga istilo sa C++11 gisuportahan na karon sa clang "using" declarations ug extensions, gamit ang "[[]]" format.
- Gidugang ang "-Wreserved-identifier" flag aron ipakita ang usa ka pasidaan kung nagtino sa mga reserved identifier sa user code.
- Gidugang ang mga flag nga "-Wunused-but-set-parameter" ug "-Wunused-but-set-variable" aron mag-imprinta og pasidaan kung ang usa ka parameter o variable gi-set apan wala gigamit.
- Gidugang ang "-Wnull-pointer-subtraction" flag aron magpasidaan kung ang code mahimong hinungdan sa wala matino nga pamatasan tungod sa paggamit sa null pointer sa mga operasyon sa pag-iban.
- Gidugang ang "-fstack-usage" flag aron makamugna og dugang nga ".su" file para sa matag code file nga adunay impormasyon bahin sa gidak-on sa stack frames para sa matag function nga gihubit sa file nga giproseso.
- Ang static analyzer adunay bag-ong output type, ang "sarif-html," nga makamugna og mga report sa HTML ug Sarif formats. Usa ka bag-ong check, ang allocClassWithName, ang gidugang. Ang opsyon nga "-analyzer-display-progress" karon nagpakita sa oras sa pag-analisa alang sa matag function. Ang smart pointer analyzer (alpha.cplusplus.SmartPtr) hapit na makompleto.
- Gipalapdan ang suporta sa OpenCL. Gidugang ang suporta para sa bag-ong cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields, ug __cl_clang_non_portable_kernel_param_types nga mga extension. Gipadayon ang pagpatuman sa OpenCL 3.0 nga espesipikasyon. Para sa C, ang OpenCL 1.2 gigamit isip default gawas kon lahi nga bersyon ang klaro nga gipili. Gidugang ang suporta para sa mga file nga adunay ".clcpp" nga extension para sa C++.
- Ang suporta para sa mga loop transformation directives ("#pragma omp unrol" ug "#pragma omp tile") nga gihubit sa OpenMP 5.1 specification napatuman na.
- Ang clang-format utility gi-update uban sa mosunod nga mga opsyon: SpacesInLineCommentPrefix para sa pagtino sa gidaghanon sa mga espasyo sa dili pa ang mga komento, IndentAccessModifiers, LambdaBodyIndentation, ug PPIndentWidth para sa pagkontrol sa pag-align sa mga rekord, lambda expressions, ug preprocessor directives. Ang mga kapabilidad sa pag-sort sa lista sa header file (SortIncludes) gipalapdan. Ang suporta para sa JSON file formatting gidugang.
- Daghang bag-ong mga tseke ang nadugang sa clang-tidy linter.
Pangunang mga inobasyon sa LLVM 13.0:
- Gidugang ang opsyon nga "-ehcontguard" aron magamit ang teknolohiya sa CET (Windows Control-flow Enforcement Technology) aron mapanalipdan batok sa pagpatuman sa mga exploit nga gihimo gamit ang mga teknik sa return-oriented programming (ROP) sa yugto sa pagdumala sa eksepsiyon.
- Ang proyekto nga debuginfo-test giilisan og ngalan ngadto sa cross-project-tests ug gidisenyo alang sa pagsulay sa mga sangkap gikan sa lainlaing mga proyekto, dili limitado sa impormasyon sa pag-debug.
- Ang sistema sa pagtukod nagsuporta sa pagtukod og daghang mga distribusyon, pananglitan, ang usa nga adunay mga utilities ug ang lain nga adunay mga librarya para sa mga developers.
- Ang backend para sa arkitektura sa AArch64 nagpatuman sa suporta para sa Armv9-A RME (Realm Management Extension) ug SME (Scalable Matrix Extension) nga mga extension sa assembler.
- Gidugang ang suporta para sa ISA V68/HVX sa backend sa arkitektura sa Hexagon.
- Ang x86 backend adunay gipauswag nga suporta para sa mga AMD Zen 3 processor.
- Gidugang na sa AMDGPU backend ang suporta para sa GFX1013 RDNA2 APU.
- Ang Libc++ nagpadayon sa pagpatuman sa mga bag-ong bahin sa mga sumbanan sa C++20 ug C++2b, lakip ang pagkompleto sa librarya sa "mga konsepto". Para sa plataporma Windows Gidugang ang suporta para sa std::filesystem nga gibase sa MinGW. Ang mga header file gibulag na. , Ug Gidugang ang LIBCXX_ENABLE_INCOMPLETE_FEATURES build option aron ma-disable ang mga header file nga adunay dili kompleto nga functionality.
- Ang LLD linker gipalapdan aron suportahan ang mga Big-endian Aarch64 processors, ug ang Mach-O backend gipauswag aron tugotan ang pag-link sa mga standard nga programa. Nalakip na ang mga pagpaayo nga gikinahanglan alang sa pag-link sa Glibc gamit ang LLD.
- Ang llvm-mca (Machine Code Analyzer) utility gi-update aron suportahan ang mga processor nga nagpatuman sa mga instruksyon nga in-order (in-order superscalar pipeline), sama sa ARM Cortex-A55.
- Ang LLDB debugger para sa AArch64 platform karon hingpit nang nagsuporta sa pointer authentication, sa Memory Tagging Extension (MemTag) mechanism, ug sa SVE registers. Gidugang ang mga command aron i-associate ang mga tag sa matag memory allocation operation ug aron masiguro nga ang pointer nalambigit sa saktong tag atol sa memory access.
- Ang LLDB debugger ug ang Fortran frontend, ang Flang, gidugang na sa binary assemblies nga gihimo sa proyekto.
Source: opennet.ru
