ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ ááŒá±á¬ááºáá¡ááŒá¬ááœááºá LLVM 13.0 ááá±á¬áá»ááºááᯠáá¯ááºááœáŸáá·áºááŒááá²á·ááẠ- GCC-áááá¬áááŒá áºáá±á¬ áááááá¬áááºáá¬ááá¬áá»á¬áž (compilersá optimizers ááŸáá·áº code generators) ááẠáááá¯ááááºáá»á¬ážááᯠRISC áá²á·ááá¯á·áá±á¬ á¡áááºá¡áááºáá áºáá¯ááºá¡ááŒá Ạá á¯á ááºážáá¬ážáá±á¬ RISC áá²á·ááá¯á·áá±á¬ virtual ááœáŸááºááŒá¬ážáá»ááºáá»á¬áž (á¡ááá·áºáááá·áº virtual machine áá áºáá¯áá«ááŸááá±á¬á Multi-level optimization á áá áº)á áá¯ááºáá¯ááºááá¯ááºáá±á¬ pseudocode ááᯠJIT compiler áá¯á¶ážááŒá®áž áááá¯ááááºááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá»áááºááœáẠááá¯ááºááá¯áẠá ááºááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááŒá ẠááŒá±á¬ááºážáá²ááá¯ááºáááºá
Clang 13.0 ááœáẠááá¯ážáááºááŸá¯áá»á¬áž-
- á¡á¬ááá¶áá¬ážáá±á¬ á¡ááŒá®ážáá±á«áºááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážáá°áá®ááŸá¯ (áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯áá¡áá¯á¶ážááœáẠá¡ááŒá®ážááá¯ááºážáá áºáá¯á¡á¬áž áá±á«áºááá¯ááŒááºážááŒá áºááŒá®ážá áá¯ááºááá¯ážáá¯ááºá ááºáá áºáá¯á áá°á·áá¬áá¬áá°áá±á«áºááá¯áá«á á¡ááŒá®ážááŒááºááŸáá·áºááŒááºážáá¯á¶á á¶) ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá C++ ááŸáá·áº "__attribute__((musttail))" ááœááºá¡áá¯á¶ážááŒá¯ááá·áº "[[clang::musttail]]" attribute á០á¡á¬ááá¶áá¬ážáá±á¬ á¡ááŒá®ážáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá á€á¡ááºá¹áá«áááºááẠá¡á á¯á¡á ááºážáá¯á¶ážá áœá²ááŸá¯ááᯠáááºáá¬á á±ááẠáá¯ááºááᯠá¡ááŒá¬ážááá¯ááºááŒá¯áá¯ááºááŒááºážááŒáá·áº ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºá á±áá«áááºá
- "á¡áá¯á¶ážááŒá¯" ááŒá±ááŒá¬áá»ááºáá»á¬ážááŸáá·áº clang ááá¯ážáá»á²á·ááŸá¯áá»á¬ážááẠ"[[]]" áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯á C++ 11-á ááá¯áẠattribute áá»á¬ážááᯠáááºááŸááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážáá±ážáá«áááºá
- á¡áá¯á¶ážááŒá¯áá°áá¯ááºááœáẠáá®ážááá·áºáááºááŸááºáá±ážááá·áº á¡áá±á¬ááºá¡áá¬ážáá»á¬ážááᯠáááºááŸááºááá·áºá¡áá« ááááá±ážáá»ááºááŒáááẠ"-Wreserved-identifier" á¡áá¶ááᯠáá±á«ááºážááá·áºáá¬ážáááºá
- ááá·áºáááºáá»ááºáá áºáá¯áááºááŸááºáá¬ážáá±á¬áºáááºáž á¡áá¯á¶ážáááŒá¯áá«á ááááá±ážáá»ááºááŒáááẠ"-Wunused-but-set-parameter" ááŸáá·áº "-Wunused-but-set-variable" á¡áá¶áá»á¬ážááᯠááá·áºááœááºážáá¬ážáááºá
- á¡áá¯ááºáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááœáẠnull pointer ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒá±á¬áá·áº áá¯ááºááẠáááºááŸááºááá¬ážáá±á¬ á¡áá°á¡áá»áá·áºááᯠááááºáááºáá¬áá«á ááááá±ážáá»ááºáá¯ááºááẠ"-Wnull-pointer-subtraction" á¡áá¶ááᯠáá±á«ááºážááá·áºáá¬ážáááºá
- áá¯ááºááá¯ááºáá áºáá¯á á®á¡ááœáẠáá¯ááºáá¯ááºááẠ"-fstack-usage" á¡áá¶ááᯠááá·áºááœááºážááŒá®áž áá¯ááºáá áºáá¯á á®á¡ááœáẠáá¯ááºáá±á¬ááºáá±ááá·áº ááá¯ááºáá áºáá¯á á®á¡ááœáẠáááºááŸááºáá¬ážááá·áº áá¯ááºáá±á¬ááºááŸá¯áá áºáá¯á á®á¡ááœáẠstack frames á¡ááœááºá¡á á¬ážááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºáá«ááŸááá±á¬ áá±á¬ááºááẠ".su" ááá¯ááºáá áºáá¯á
- HTML ááŸáá·áº Sarif áá±á¬áºáááºáá»á¬ážááŒáá·áº áá áºááŒáá¯ááºááẠá¡á á®áááºáá¶á á¬áá»á¬áž áá¯ááºáá±ážááŒááºážááᯠááŒá áºáá±á«áºá á±ááá·áº static analyzer - "sarif-html" ááœáẠá¡ááœááºá¡áá»áá¯ážá¡á á¬ážá¡áá áºááᯠááá·áºááœááºážáá¬ážáá«áááºá allocClassWithName á¡áá áºááᯠáááºáá¶á á áºáá±ážáá«á â-analyzer-display-progressâ option ááᯠáááºááŸááºáá±á¬á¡áá«á function áá áºáá¯á á®á ááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡áá»áááºááᯠááŒááááºá á áááºááœáŸááºááŒááŸá¯ááœá²ááŒááºážá áááºááŒá¬áá° (alpha.cplusplus.SmartPtr) á¡áááºááá·áºááŒá áºáá¯áá®ážáá«ážááŒá áºáááºá
- OpenCL áá¶á·ááá¯ážáá°áá®ááŸá¯ááŸáá·áº áááºá ááºáá¯ááºáá±á¬ááºááá¯ááºá áœááºážáá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáááºá áá±á¬ááºáááºááœá²á¡áá áºáá»á¬áž cl_khr_integer_dot_productá cl_khr_extended_bit_opsá __cl_clang_bitfields ááŸáá·áº __cl_clang_non_portable_kernel_param_types áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá OpenCL 3.0 áááºááŸááºáá»ááºááᯠáááºáááºá¡áá±á¬ááºá¡áááºáá±á¬áºáá±áá«áááºá C á¡ááœááºá á¡ááŒá¬ážáá¬ážááŸááºážááᯠááŒááºáá¬ážá áœá¬ ááœá±ážáá»ááºááá¬ážáá«á OpenCL 1.2 áááºááŸááºáá»ááºááᯠáá°áááºážá¡ááá¯ááºáž á¡áá¯á¶ážááŒá¯áá«áááºá C++ á¡ááœááºá â.clcppâ ááá¯ážáá»á²á·ááŸá¯áá«ááŸááá±á¬ ááá¯ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
- OpenMP 5.1 áááºááŸááºáá»ááºááœáẠáááºááŸááºáá¬ážáá±á¬ ááœááºážáááºá¡ááœááºááŒá±á¬ááºážááŒááºážááá¯ááºáᬠáááºážááœáŸááºáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ (â#pragma omp unrolâ ááŸáá·áº â#pragma omp tileâ) ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážááŒá áºáááºá
- clang-format utility ááœáẠááœá±ážáá»ááºá áá¬áá»á¬áž áááºááá·áºáááº- ááŸááºáá»ááºáá»á¬áž áááŒá¯áá® áá±áá¬ááœáẠá¡áá±á¡ááœááºááᯠáááºááŸááºááẠSpacesInLineCommentPrefixá IndentAccessModifiersá LambdaBodyIndentation ááŸáá·áº PPIndentWidth ááẠentry áá»á¬ážá áá»áááºááŸáááŸá¯á lambda á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáá·áº preprocessor áááºážááœáŸááºáá»ááºáá»á¬ážááᯠááááºážáá»á¯ááºáááºá áá±á«ááºážá á®ážááá¯ááºáá»á¬áž á á¬áááºážáá±á¬ááºáá°ááŒááºáž (SortIncludes) ááᯠá á®ááẠááŒá áºááá¯ááºáá»á±áá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáááºá JSON ááá¯ááºáá»á¬ážááᯠáá±á¬áºáááºáá»ááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá
- á á áºáá±ážááŸá¯á¡áá áºá¡áá»á¬ážá¡ááŒá¬ážááᯠlinter clang-tidy ááœáẠááá·áºááœááºážáá¬ážáááºá
LLVM 13.0 ááœáẠá¡ááá áá®ááœááºáááºážáá áºááŸá¯áá»á¬áž-
- ááŒáœááºážáá»áẠááá¯ááºááœááºááŸá¯á¡ááá·áºááœáẠReturn-Oriented Programming (ROP) áááºážááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºáá±á¬ááºáá¬ážáá±á¬ á¡ááŒááºáá¯ááºááŸá¯áá»á¬ážááᯠáá¬ááœááºááẠCET (Windows Control-flow Enforcement Technology) áááºážááá¬ááᯠá¡áá¯á¶ážááŒá¯ááẠâ-ehcontguardâ ááœá±ážáá»ááºááœáá·áºááᯠááá·áºááœááºážáá²á·áááºá
- áá®áá¬ááºá¡ááºááá¯-á ááºážáááºááá±á¬áá»ááºááᯠááá±á¬áá»ááº-á ááºážáááºááŸá¯áá»á¬ážáᯠá¡áááºááŒá±á¬ááºážáá¬ážááŒá®áž á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážááᯠá¡ááá·áºá¡áááºáááŸáá ááá°áá®áá±á¬ ááá±á¬áá»ááºáá»á¬ážá០á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠá ááºážáááºáááºá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá
- á ááºážáá±ážááœá²á áá áºááẠááŒáá·áºááŒá°ážááŸá¯áá»á¬ážá áœá¬ááᯠáááºáá±á¬ááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážáá±ážáááºá á¥ááá¬á¡á¬ážááŒáá·áº áá áºáá¯ááẠutilities áá«áá±á¬á áá±á¬ááºáá áºáá¯ááẠdeveloper áá»á¬ážá¡ááœáẠá á¬ááŒáá·áºááá¯ááºáá»á¬ážáá«ááŸááááºá
- AArch64 áááá¯áá¬áááºáá¬á¡ááœáẠáá±á¬ááºááœááºááœááºá Armv9-A RME (Realm Management Extension) ááŸáá·áº SME (Scalable Matrix Extension) ááá¯ážáá»á²á·ááŸá¯áá»á¬ážááᯠáááºáááºáááááá¬ááœáẠáá¶á·ááá¯ážáá±ážáá«áááºá
- ISA V68/HVX á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠHexagon áááá¯áá¬á¡ááœáẠáá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá
- x86 backend ááẠAMD Zen 3 áááá¯áááºáá¬áá»á¬ážá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬áá¶á·ááá¯ážááŸá¯áá±ážáá¬ážáááºá
- GFX1013 RDNA2 APU á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠAMDGPU áá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá
- Libc++ ááẠ"á¡áá°á¡ááá»á¬áž" á á¬ááŒáá·áºááá¯ááºááᯠááŒá®ážá á®ážááŒááºážá¡áá«á¡ááẠC++20 ááŸáá·áº C++2b á á¶ááŸá¯ááºážáá»á¬ážá á¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááᯠáááºáááºá¡áá±á¬ááºá¡áááºáá±á¬áºáá±áá«áááºá MinGW á¡ááŒá±ááŒá¯ Windows ááááºáá±á¬ááºážá¡ááœáẠstd::filesystem á¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá áá±á«ááºážá á®ážááá¯ááºáá»á¬ážááᯠááœá²ááŒá¬ážáá¬ážáááºá á ááŸáá·áº . á¡ááŒáá·áºá¡ááá¯ááºáá±á¬ááºááá¯ááºá áœááºážáááŸááá±á¬ áá±á«ááºážá á®ážááá¯ááºáá»á¬ážááᯠááááºáááºá¡ááœáẠáááºáá±á¬ááºááŸá¯ááœá±ážáá»ááºááŸá¯ LIBCXX_ENABLE_INCOMPLETE_FEATURES ááᯠááá·áºááœááºážáá¬ážáááºá
- Big-endian Aarch64 áááá¯áááºáá¬áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážáá°áá®ááŸá¯ááŒáá·áº LLD linker áá áœááºážáááºáá»á¬ážááᯠáá»á²á·ááœááºáá¬ážááŒá®áž Mach-O backend ááẠáá¯á¶ááŸááºáááá¯ááááºáá»á¬ážááᯠáá»áááºáááºááá¯ááºá á±ááá·áº á¡ááŒá±á¡áá±ááá¯á· áá°áá±á¬ááºáá¬áá²á·áááºá LLD ááᯠá¡áá¯á¶ážááŒá¯á Glibc áá»áááºáááºááẠááá¯á¡ááºáá±á¬ ááá¯ážáááºááŸá¯áá»á¬áž áá«áááºáááºá
- llvm-mca (Machine Code Analyzer) utility ááẠARM Cortex-A55 áá²á·ááá¯á·áá±á¬ á¡ááŸá¬á ᬠ(in-order superscalar pipeline) ááœáẠááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº áááá¯áááºáá¬áá»á¬ážá¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠáá±á«ááºážááá·áºáá¬ážáááºá
- AArch64 ááááºáá±á¬ááºážá¡ááœáẠLLDB á¡ááŸá¬ážááŸá¬ááŒááºáá°ááẠPointer Authenticationá MTE (MemTagá Memory Tagging Extension) ááŸáá·áº SVE ááŸááºáá¯á¶áááºááŒááºážáá»á¬ážá¡ááœáẠá¡ááŒáá·áºá¡ááá¶á·ááá¯ážáá±ážáá«áááºá ááŸááºáá¬ááºááœá²áá±ááŸá¯áá¯ááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááœáẠáááºáá»á¬ážááᯠáá»áááºáááºáááºááŸáá·áº ááŸááºáááºáá±á¬áááºááºááŸáá·áº áááºá ááºááŸá¯ááŸááááá·áº áááºááá¯áá®ááᯠáááºáá±á¬ááºááá·áºá¡áá« á¡ááŸááºá¡áá¬ážá á á áºáá±ážááŸá¯ááᯠá á¯á ááºážááẠááœáá·áºááŒá¯ááá·áº ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá
- LLDB á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž ááŸáá·áº Fortran áá¬áá¬á áá¬ážá¡ááœáẠááŸá±á·áá¯á¶ážáááºáž - Flang ááᯠááá±á¬áá»ááºá០áá¯ááºáá±ážáá±á¬ binary á ááºážáá±ážááœá²áá»á¬ážááœáẠááá·áºááœááºážáá¬ážáááºá
source: opennet.ru