ááŒá±á¬ááºáááŒá¬ááŒá®ážáá±á¬áẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯
LLVM 10.0 ááœáẠá¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááẠC++ Concepts áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯á áá®ážááŒá¬ážáá¯ááºáááºážá ááºá¡ááŒá ẠClang ááᯠááá¯ááºáá±á¬ááºáá±á¬á·áá²á Windows á¡ááœáẠCFG (control flow guard) á á áºáá±ážááŸá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŸáá·áº CPU á áœááºážáááºá¡áá áºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááá¯á· áá«áááºáááºá
- áá¶á·ááá¯ážáá°áá®ááŸá¯ áááºáá±á¬ááºáž "
ááá±á¬ááá¬áž "á C++ template extension áá áºáá¯á C++2a (-std=c++2a á¡áá¶ááŒáá·áº ááœáá·áºáá¬ážáááº)á
ááá±á¬ááá¬ážáá»á¬ážááẠááá·áºá¡á¬áž áááºážáááááºáá±á¬ááºááá·áºáááºáá»ááºáá»á¬ážá¡ááŒá Ạáááºáá¶ááá¯ááºáá±á¬ á¡ááŒááºážá¡áá¯á¶áá»á¬ážááᯠá á¯á ááºážááá·áºá¡áá»áááºá ááá·áºáááºáá¬ážáá±á¬ áá¯á¶á á¶áááááºáá«áá¬áá®áᬠáááºááŸááºáá»ááºáá»á¬ážááᯠáááºááŸááºááœáá·áºááŒá¯áááºá áá¯á¶á á¶ááœááºá¡ááœááºážá¡áá¯á¶ážááŒá¯ááá·áº áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá áá¯ááºááá¹áááá»á¬ážááŸáá·áº ááá·áºááœááºážááá·áºáááºáá±á¬ááºáá»á¬ážá áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá¯ááºááá¹áááá»á¬ážááŒá¬áž áá¯áá¹ááááá®áá±á¬ ááá±á¬ááá¬ážáá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážááẠááá±á¬ááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááá¯á¶á á¶ááœááº
EqualityComparable = ááá¯á¡ááºáááº(T a, T b) {
{ a == b } -> std::boolean;
{ a != b } --> std::boolean;
}; - áá°áááºážá¡á¬ážááŒáá·áºá á á¯á ááºážááŸá¯áá¯ááºáá±á¬ááºááŒááºážááᯠáááºááá·áºááá·áº áá®ážááŒá¬ážáá¯ááºáááºážá áẠ(âclang -cc1â) ááᯠá áááºááŒááºážááŒá áºáááºá ááá¯á á¯á ááºážááŸá¯ááᯠáááºááá¯ááºáááºážá ááºááœáẠáá¯ááºáá±á¬ááºááŒá®ážááŒá áºááŒá®ážá "-fno-integrated-cc1" ááœá±ážáá»ááºááŸá¯ááᯠá¡ááŒá¯á¡áá°áá±á¬ááºážááᯠááŒááºáááºááá°ááẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- áá±á¬áá«ááŸá¬ááœá±áá±ážáá¯ááºá¡áá
áºáá»á¬áž-
- "-Wc99-designator" ááŸáá·áº "-Wreorder-init-list" ááẠC99 ááœááºááŸááºáááºáá±á¬áºáááºáž C++99 ááœááºááá¯ááºááá·áºááá á¹á áá»á¬ážááœáẠC++ áá¯ááºááœáẠC20 áááŠážá¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážáááŒá¯ááẠááááá±ážáá¬ážáááºá
- "-Wsizeof-array-div" - "int arr[10] áá²á·ááá¯á·áá±á¬ á¡ááŒá±á¡áá±áá»á¬ážááᯠáááºážáá°áááºá âŠsizeof(arr)/sizeof(short)âŠâ (âsizeof(arr)/sizeof(int)â)á
- "-Wxor-used-as-po" - á¡ááœáŸááºážááááºáž (2^16) ááŸáá·áº áá±á¬ááœá±ážááá¯ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠ"^" (xor) á¡á±á¬áºááá±áᬠá¡áá¯á¶ážááŒá¯ááŒááºážáá²á·ááá¯á·áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡á¬áž ááááá±ážáááºá
- "-Wfinal-dtor-non-final-class" - "áá±á¬ááºáá¯á¶áž" áááºááŸááºáá»ááºááŒáá·áº á¡ááŸááºá¡áá¬ážááá¬ážáá±á¬ á¡áááºážáá»á¬ážá¡ááŒá±á¬ááºáž ááááá±ážáááºá ááá¯á·áá±á¬áº "áá±á¬ááºáá¯á¶áž" áááºááœáŸááºážáá»ááºááŒáá·áº destructor áá áºáá¯ááŸááááºá
- "-Wtautological-bitwise-compare" ááẠbitwise áááºáááºááŸá¯ááŸáá·áº á¡áááºáááŒááºááŒá¬ážá០tautological ááŸáá¯ááºážááŸá¥áºááŸá¯áá»á¬ážááᯠááŸá¬ááœá±áá±á¬áºáá¯ááºáááºá¡ááœáẠááááá±ážáá»ááºá¡á¯ááºá á¯áá áºá á¯ááŒá áºááŒá®ážá bitwise OR áá¯ááºáá±á¬ááºáá»ááºááẠá¡áá¯ááºááá¹ááá¬ááá¯ááºáá±á¬ áá¶áá«ááºáá áºáá¯ááá¯á· áááºáá±á¬ááºááá·áº á¡ááŒá²áááºáž-ááŸááºáá±á¬ ááŸáá¯ááºážááŸááºááŸá¯áá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºáááºá¡ááœááºááŒá áºáááºá
- "-Wbitwise-conditional-parentheses" ááẠá¡ááŒá±á¡áá±ááá¯ááºáᬠá¡á±á¬áºááá±áᬠ(?:) ááŸáá·áº áá¯áá¹ááááŸááá±á¬ á¡á±á¬áºááá±áá¬áá»á¬áž AND (&) ááŸáá·áº OR (|) ááá¯á·ááᯠáá±á¬ááŸá±á¬áá±á¬á¡áá« ááŒá¿áá¬áá»á¬ážááᯠááááá±ážáááºá
- "-Wmisleading-indentation" ááẠif/else/for/while block á áá áºá áááºáá áºááá¯ááºážááŒá áºááá²á·ááá¯á· áááºážááá¯á·ááẠif/else/for/while block á á¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºááŒá±á¬ááºáž ááááá±ážááá·áº GCC á០áá°áá®áá±á¬á¡áááºá á áºáá±ážááŸá¯á analogue áá áºáá¯ááŒá áºáááºá .
- â-Wextraâ ááᯠáááºááŸááºááá·áºá¡áá«á â-Wdeprecated-copyâ á
á
áºáá±ážááŸá¯ááᯠááœáá·áºáá¬ážááŒá®áž áááºáá±á¬ááºáá°áá»á¬áž á¡áá¯á¶ážááŒá¯ááŸá¯ááŸáá·áºáááºáááºá ááááá±ážáá»ááº
áááá»ááŒááºáá¬ážáá±á¬ destructor á¡áááá¹áá«ááºááŒáá·áº á¡áááºážáá»á¬ážááœáẠ"ááœáŸá±á·" ááŸáá·áº "áá±á¬áºáá®"á - "-Wtautological-overlap-compare", "-Wsizeof-pointer-div", "-Wtautological-compare", "-Wrange-loop-analysis" á á áºáá±ážááŸá¯áá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáá«áááºá
- "-Wbitwise-op-parentheses" ááŸáá·áº "-Wlogical-op-parentheses" á á áºáá±ážááŸá¯áá»á¬ážááᯠáá°áááºážá¡á¬ážááŒáá·áº ááááºáá¬ážáááºá
- C ááŸáá·áº C++ áá¯ááºááœáẠááœáŸááºááááºážááááºážáááºá¹áá»á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠarray áá»á¬ážááœááºáᬠááœáá·áºááŒá¯áá¬ážáááºá "-fsanitize=pointer-overflow" áá¯ááºááŸá áááºááŸááºáá¬ážáá±á¬ ááááºááŸááºáá¬ážáá±á¬ á¡áá°á¡áá»áá·áº ááá·áºá ááºáá±ážááẠááá¯á¡áá« null pointer ááá¯á· ááááºážááŒáá·áºááá¯ááºáá±á¬ á¡ááŸááºá¡áá¬ážáá áºáá¯á០ááááºážááŒáá·áºááá¯áá¯ááºááá·áºá¡áá« null pointer áááºáá®ážááŒááºážáá²á·ááá¯á·áá±á¬ ááá á¹á áááºáá»á¬ážááᯠáááºážá á¬ážáá«áááºá
- "-fsanitize=implicit-conversion" (Implicit Conversion Sanitizer) áá¯ááºááᯠ"int" á¡áá»áá¯ážá¡á á¬ážááẠáá±ážáááºáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá¡ááœáẠááá¯ážááŒááºážááŸáá·áº áá»áŸá±á¬á·áá»ááŒááºážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºááẠááŒá¯ááŒááºáá¬ážáá«áááºá
- x86 áá áºááŸááºáááá¯áá¬áá»á¬áž "-march=skylake-avx512", "-march=icelake-client", "-march=icelake-server", "-march=cascadelake" ááŸáá·áº "-march=cooperlake" ááᯠáá¯á¶áá±ááŒáá·áº ááœá±ážáá»ááºáá±á¬á¡áá«á áá¯ááºááẠá¡áááºážá¡ááŒá áºáá¯ááºááœáẠáááºážááá¯á·á ááá¯ááºááá¯ááºááœáŸááºááŒáá»ááºááŸááœá²á 512-bit zmm ááŸááºáá¯á¶áááºááŸá¯áá»á¬ážááᯠáááºááá·áºáá¬ážáááºá á¡ááŒá±á¬ááºážáááºážááŸá¬ 512-bit áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠCPU ááŒáááºááŸá¯ááºáž áá»á±á¬á·áá»ááœá¬ážáá±á¬ááŒá±á¬áá·áºá áááºážááẠá¡áá¯á¶ážá á¯á¶á áœááºážáá±á¬ááºáááºááᯠááááá¯ááºá á±ááá¯ááºáá«áááºá á¡áá°á¡áá»áá·áºá¡áá áºááᯠááŒá±á¬ááºážáá²ááẠááœá±ážáá»ááºá áᬠ"-mprefer-vector-width=512" ááᯠáá±ážáá¬ážáááºá
- "-flax-vector-conversions" á¡áá¶áá¡ááŒá¯á¡áá°ááẠGCC ááŸáá·áºáááºáá°áááº- ááááºážááŒáá·áºááŸáá·áº floating-point vector áá»á¬ážááŒá¬ážááœáẠááœááºááá¯ááºáá±á¬ vector bit ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠáá¬ážááŒá
áºáá¬ážáááºá á€ááá·áºáááºáá»ááºááᯠáááºááŸá¬ážááẠá¡áá¶ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááá¯ááŒá¯áá¬ážáááºá
áá¯á¶áá±ááŒá áºááá·áº "-flax-vector-conversions=all" ááŒá áºáááºá - Octeon áááá¬ážá á¯á MIPS CPU áá»á¬ážá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá¶á·ááá¯ážááŸá¯á ááá¬ážááẠCPU á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá á¬áááºážááœáẠ"octeon+" ááᯠááá·áºáá¬ážáááºá
- WebAssembly á¡áááºá¡áááºáá¯ááºááá¯á· á á¯á ááºážáá±á¬á¡áá«á á áá áºááœááºáááá¯ááºáá»áŸáẠwasm-opt optimizer ááᯠá¡ááá¯á¡áá»á±á¬ááºáá±á«áºáááºá
- RISC-V áááá¯áá¬á¡ááŒá±áá¶á áá áºáá»á¬ážá¡ááœááºá áá±áá±á«áºááœáá¯áá·áºáááºááá¯ážáá»á¬ážááᯠááááºážáááºážááá·áº ááŸááºáá¯á¶áááºáá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážááᯠá¡ááŒá±á¡áá±á¡á áááºáááºáá° á¡ááºááá¯ááºážááá·áºááœááºážááŸá¯áá»á¬ážá ááá·áºáááºááááºááá¯á·ááŸá¯áá»á¬ážááœáẠááœáá·áºááŒá¯áá¬ážáááºá
- á¡áá
áºááá·áºáá¬ážáá±á¬ compiler á¡áá¶áá»á¬áž- "__GNUC__" ááŸáá·áº á¡áá¬ážáá° macros á¡ááœáẠáá¬ážááŸááºážáááºááá¯ážááᯠáááºááŸááºááẠ"-fgnuc-version" "-fmacro-prefix-map=OLD=NEW"á "-fpatchable-function-entry=N[,M]" áá¯ááºáá±á¬ááºáá»ááºááá·áºááœááºážááŸá¯á¡ááŸááºáááá¯ááºáá®ááŸáá·áºááŒá®ážáá±á¬áẠNOP ááœáŸááºááŒá¬ážáá»ááºá¡áá»áá¯á·ááᯠáá¯ááºáá±ážáááºá RISC-V á¡ááœááº
"-ffixed-xX", "-mcmodel=medany" ááŸáá·áº "-mcmodel=medlow" á¡áá¶áá»á¬ážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯á - '__attribute__((áá
áºááŸááº("áá¬áááœá²-áá¬ááœááºááŸá¯=..."))) áááºááœáŸááºážáá»ááºá ááœá±ážá
áá¬ááŸáá·áº áááºáá°ááá·áº á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯
-mbranch-á¡áá¬á¡ááœáẠ. - Windows ááááºáá±á¬ááºážááœááºá â-cfguardâ á¡áá¶ááᯠáááºááŸááºááá·áºá¡áá«á ááœááºááá¯ááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá¯ááºáá±á¬ááºááŸá¯á á®ážáááºážááŸá¯ááá¬ááá á áºáá±ážááŸá¯áá»á¬áž (Control Flow Guard) ááᯠá¡á á¬ážááá¯ážááŒááºážááᯠáá¯ááºáá±á¬ááºáá«áááºá á¡á á¬ážááá¯ážá á áºáá±ážááŸá¯ááᯠááááºááẠáááºááẠâ-cfguard-nochecksâ á¡áᶠááá¯á·ááá¯áẠâ__declspec(guard(nocf))â ááœááºážáá¶ááŸá¯á¡á¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
- gnu_inline áááºááœáŸááºážáá»ááºá á¡ááŒá¯á¡áá°ááẠ"extern" áá±á¬á·áá»ááºá á¬áá¯á¶ážááá«áá² á¡áá¯á¶ážááŒá¯ááá·áºááá á¹á áá»á¬ážááœáẠGCC ááŸáá·áº áááºáá°áááºá
- OpenCL ááŸáá·áº CUDA áá¶á·ááá¯ážááŸá¯ááá¯á·ááŸáá·áº áááºá ááºáá±áá±á¬ á áœááºážáááºáá»á¬ážááᯠááá¯ážáá»á²á·áá¬ážáááºá OpenMP 5.0 á¡ááºá¹áá«áááºá¡áá áºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá
- á á¶ááœá±ážáá»ááºááœáá·áºááᯠclang-format utility ááœáẠááá·áºááœááºážáá¬ážááŒá®ážá áá¯ááºááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážááŸáá·áº áá±á¬áºáááºáá»áá¬ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº C++ á á¶áá¬ážááŸááºáž (áá±á¬ááºáá¯á¶ážáá±á«áºá á¡á±á¬áºááá¯á c++03á c++11á c++14á c++17á c++20)á
- á á áºáá±ážááŸá¯á¡áá áºáá»á¬ážááᯠáááºááŒáááºááŸá¯ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááœáẠááá·áºááœááºážáá¬ážáááº- alpha.cplusplus.PlacementNew ááẠáá¯á¶áá±á¬ááºáá±á¬ááá¯ááŸá±á¬ááºááŸá¯áá±áá¬ááœááºááŸááááŸá áá¯á¶ážááŒááºáááºá Fuchsia.HandleChecker ááŸáá·áº Fuchsia áááºááá¯ááºáááááá¬áá»á¬ážááŸáá·áº áááºááá¯ááºááá·áº áá±á«ááºááŒá¬ážááŸá¯áá»á¬ážááᯠááŸá¬ááœá±áááºá security.insecureAPI.decodeValueOfObjCType ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ ááŒá¬ážáá¶áá»á¬ážááá¯áá»áŸá¶ááŸá¯áá»á¬ážááᯠááŸá¬ááœá±ááẠfuchsia.HandleChecker :at:]á
- Undefined Behavior Sanitizer (UBSan) ááẠNULL pointer áá»á¬ážááá¯á· áá¯áááá¯ááºáá±á¬ offsets áá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºáž ááá¯á·ááá¯áẠNULL pointer offset á ááááºáá»á¬ážááᯠáááºážáá°ááẠáááºážá pointer overflow checks ááᯠááá¯ážáá»á²á·áá¬ážáá«áááºá
- áá»ááºááŸá±á¬ááº-áááºáááº
áááºááŒá±á¬áááºá á á áºáá±ážááŸá¯á¡áá áºáá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááááºá
á¡ááá
- áá°áá±á¬ááºáá®ááá¯á·
áááºááœáŸááºážáááºá á¡ááŒááºá¡ááŸááºáá¯ááºáá¯á¶ážáá¯ááºáááºáž ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº ááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡áá áºáá»á¬ážááᯠááá·áºááœááºážáá¬ážáááºá ááá°áá®áá±á¬ áá¯ááºáá±á¬áº áá áá¯á á¡ááŒá±á¡áá±ááᯠááá·áºááŸááºážáá¬ážááŒá®ážá áááºááœáŸááºážáá»áẠáá áᯠLLVM IR ááŸáá·áº á¡áááºááŸááºááŒááºážáá²á·ááá¯á·áá±á¬ á ááá¹áááá¯ááºááẠá áá¯ááá¯á· áá«áááºáááºá - compiler ááœáẠááá·áºááœááºážáááºáá±á¬ááºáá¬ážáá±á¬ matrix áááºá¹áá»á¬áá¯ááºáá±á¬ááºáá»ááºá¡áá
áºáá»á¬áž (
áááºááá¯áẠ) á á¯á ááºážááŸá¯á¡ááœááºáž áááá±á¬ááºáá±á¬ vector ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáá¬ážáááºá - X86á AArch64á ARMá SystemZá MIPSá AMDGPU ááŸáá·áº PowerPC áááá¯áá¬áá»á¬ážá¡ááœáẠáá±á¬ááºááœááºááœáẠááá¯ážáááºááŸá¯áá»á¬ážá
áœá¬ ááŒá¯áá¯ááºáá¬ážáá«áááºá CPU áá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá
Cortex-A65á Cortex-A65AEá Neoverse E1 ááŸáá·áº Neoverse N1á ARMv8.1-M á¡ááœááºá áá¯ááºáá¯ááºáá¯ááºááŒááºážáá¯ááºáááºážá ááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒá®ážááŒá áºááẠ(á¥ááá¬á á¡áááºážáááºáá»áŸáá¬áá±á¬ overhead ááŸááá±á¬ loops áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±á«áºáá¬áááº) ááŸáá·áº autovectorization á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠMVE ááá¯ážáá»á²á·ááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á ááá·áºááœááºážáá¬ážáá«áááºá ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ CPU MIPS Octeon áá¶á·ááá¯ážááŸá¯á PowerPC á¡ááœááºá MASSV (Mathematical Acceleration SubSystem) á á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºá¹áá»á¬ááá¯ááºáᬠá¡ááœá²áá»á¬ážááᯠvectorization ááŒá¯áá¯ááºááŒááºážááᯠááœáá·áºáá¬ážááŒá®ážá áá¯ááºáá¯ááºáá¯ááºááŒááºážááᯠááŒáŸáá·áºáááºáá¬ážááŒá®áž loops áá»á¬ážá០memory access ááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáááºá x86 á¡ááœááºá vector á¡áá»áá¯ážá¡á á¬áž v2i32á v4i16á v2i16á v8i8á v4i8 ááŸáá·áº v2i8 ááá¯á·ááᯠááá¯ááºááœááºááŸá¯á¡á¬áž ááŒá±á¬ááºážáá²áá¬ážáááºá - WebAssembly á¡ááœáẠáá¯ááºáá®ážá ááºááᯠááŒáŸáá·áºáááºáá¬ážáááºá TLS (Thread-Local Storage) ááŸáá·áº atomic.fence ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá SIMD áá¶á·ááá¯ážááŸá¯ááᯠáááááá¬áᬠááá¯ážáá»á²á·áá¬ážáá«áááºá WebAssembly á¡áá¬ááá¹áá¯ááá¯ááºáá»á¬ážááẠááá¯á¡áá« áááºááá¯ážáá»á¬ážá áœá¬ááŸááá±á¬ áá¯ááºáá±á¬ááºáá»áẠáááºááŸááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážááŸááááºá
- ááœááºážáááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« ááœá²ááŒááºážá
áááºááŒá¬áááááá¬ááᯠá¡áá¯á¶ážááŒá¯áááºá
MemorySSA ááá°áá®áá±á¬ memory áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŒá¬ážááœáẠááŸá®ááá¯ááŸá¯ááᯠáááºááŸááºááá¯ááºá á±ááá·áºá MemorySSA ááẠá á¯á ááºážááŸá¯ááŸáá·áº áá¯ááºáá±á¬ááºáá»áááºááᯠáá»áŸá±á¬á·áá»ááá¯ááºááẠááá¯á·ááá¯áẠá áœááºážáá±á¬ááºááẠááá¯á¶ážááŸá¯á¶ážáá² AliasSetTracker á¡á á¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá - LLDB á¡ááŸá¬ážááŸá¬ááŒááºáá°ááẠDWARF v5 áá±á¬áºáááºá¡ááœáẠáááááá¬áᬠááá¯ážáááºáá±á¬ááºážááœááºáá¬áá²á·áááºá MinGW ááŒáá·áº áááºáá±á¬ááºááŒááºážá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá¶á·ááá¯ážáá°áá®ááŸá¯
ááŸáá·áº ARM ááŸáá·áº ARM64 áááá¯áá¬áá»á¬ážá¡ááœáẠWindows executable áá»á¬ážááᯠá¡ááŸá¬ážááŸá¬ááŒááºááẠáááŠážá áœááºážáááºááᯠáááºáá±á¬ááºážááá·áºáá¬ážáááºá áááºááŸáááºááŒááºážááŒáá·áº á¡ááá¯á¡áá»á±á¬ááºááŒáá·áºááœááºážááá·áºá¡áá« áááºážááŸááºážáá¬ážáá±á¬ ááœá±ážáá»ááºá áá¬áá»á¬ážá áá±á¬áºááŒáá»ááºáá»á¬ážá¡á¬áž áá±á«ááºážááá·áºáá¬ážáááºá -
áá»á²á·ááœááºáá²á·áááºá LLD linker á áœááºážáááºáá»á¬ážá .note.gnu.property ááá¹áááᯠáááºááŸááºááẠPT_GNU_PROPERTY ááá¹áááᯠáááºááŸááºááẠPT_GNU_PROPERTY ááá¯ááºááá¯ááºááŸá¯ááᯠááá·áºáá±á«ááºážááá·áºááŒááºáž (á¡áá¬áááºááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá Linux kernels)á
â-z noseparate-codeâá â-z áá®ážááŒá¬áž-áá¯ááºâ ááŸáá·áº â-z ááœá²ááœááºááá¯ááºáá±á¬ á¡ááá¯ááºážáá»á¬ážâ áá¯ááºáá»á¬ážááᯠá¡áá±á¬ááºá¡ááẠáá±á¬áºáá¬ážáááºá MinGW ááŸáá·áº WebAssembly á¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ áá¶á·ááá¯ážááŸá¯á
source: opennet.ru