αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžˆαž»αžαž…αž„αž€αŸ’αžšαž„ LLVM 10.0

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž”αž„αŸ’αž αžΆαž‰ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‚αž˜αŸ’αžšαŸ„αž„ αž’αž·αž›αž’αž·αž›αž’αž·αž˜ ៑៑ - αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž†αž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™ GCC (αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ) αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ…αž‡αžΆαž”αŸŠαžΈαžαž€αžΌαžŠαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αž·αž˜αŸ’αž˜αž·αžαžŠαžΌαž… RISC (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž€αž˜αŸ’αžšαž·αžαž‘αžΆαž”αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž–αž αž»αž€αž˜αŸ’αžšαž·αž)αŸ” αž€αžΌαžŠαž€αŸ’αž›αŸ‚αž„αž€αŸ’αž›αžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ JIT αž‘αŸ…αž‡αžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„ LLVM 10.0 αžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ C++ Concepts αž›αŸ‚αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Clang αž‡αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ CFG (control flow guard) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows αž“αž·αž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž˜αžαŸ’αžαž—αžΆαž– CPU αžαŸ’αž˜αžΈαŸ”

αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’ αž“αŸ…αž€αŸ’αž“αž»αž„ Clang 10.0:

  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "αž‚αŸ†αž“αž·αž", αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž‚αŸ†αžšαžΌ C++ αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ C++2a (αž”αžΎαž€αžŠαŸ„αž™αž‘αž„αŸ‹ -std=c++2a) αŸ”
    αž‚αŸ†αž“αž·αžαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‚αŸ†αžšαžΌαžŠαŸ‚αž›αž“αŸ…αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αž€αŸ†αžŽαžαŸ‹αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“αž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‚αŸ†αžšαžΌαŸ” αž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž—αžΆαž–αž˜αž·αž“αžŸαŸŠαžΈαž‚αŸ’αž“αžΆαž“αŸƒαž‘αžΌαž‡αžΈαžαž›αžšαžœαžΆαž„αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌ αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž‰αŸ’αž…αžΌαž›αŸ”

    αž‚αŸ†αžšαžΌ
    αž‚αŸ†αž“αž·αžαžŸαž˜αž—αžΆαž–αž”αŸ’αžšαŸ€αž”αž’αŸ€αž” = αž‘αžΆαž˜αž‘αžΆαžš(T a, T b) {
    { a == b } -> std::boolean;
    { a != b } -> std::boolean;
    };

  • αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ (β€œclang -cc1”) αžŠαŸ‚αž›αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αžˆαž”αŸ‹αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžšαž½αž…αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž˜αŸ’αž”αž„ αž αžΎαž™αž‡αž˜αŸ’αžšαžΎαžŸ "-fno-integrated-cc1" αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžŠαžΆαžšαž₯αžšαž·αž™αžΆαž”αžαž…αžΆαžŸαŸ‹αŸ”
  • αžšαž”αŸ€αž”αž’αŸ’αžœαžΎαžšαŸ„αž‚αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžαŸ’αž˜αžΈαŸ–
    • "-Wc99-designator" αž“αž·αž„ "-Wreorder-init-list" αž–αŸ’αžšαž˜αžΆαž“αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ C99 initializers αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” C++ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž–αž½αž€αžœαžΆαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„ C99 αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αŸ‚αž“αž“αŸ…αž€αŸ’αž“αž»αž„ C++20 αž‘αŸαŸ”
    • "-Wsizeof-array-div" - αž…αžΆαž”αŸ‹αž™αž€αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαžΌαž…αž‡αžΆ "int arr[10]; …sizeof(arr) / sizeof(short)…” (αž‚αž½αžšαžαŸ‚ β€œsizeof(arr) / sizeof(int)”)αŸ”
    • "-Wxor-used-as-po" - αž–αŸ’αžšαž˜αžΆαž“αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸ†αžŽαž„αŸ‹αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžΎαžŸαž‰αŸ’αž‰αžΆ "^" (xor) αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž…αŸ’αžšαž‘αŸ†αž‡αžΆαž˜αž½αž™αž“αž·αž‘αžŸαŸ’αžŸαž“αŸ’αž (2^16)αŸ”
    • "-Wfinal-dtor-non-final-class" - αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ "αž…αž»αž„αž€αŸ’αžšαŸ„αž™" αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ†αž•αŸ’αž›αžΆαž‰αžŠαŸ‚αž›αž˜αžΆαž“αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ "αž…αž»αž„αž€αŸ’αžšαŸ„αž™" αŸ”
    • "-Wtautological-bitwise-compare" αž‚αžΊαž‡αžΆαž€αŸ’αžšαž»αž˜αž“αŸƒαž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžšαŸ„αž‚αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž” tautological αžšαžœαžΆαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš bitwise αž“αž·αž„αžαŸαžšαž˜αž½αž™ αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžŠαŸ‚αž›αžαŸ‚αž„αžαŸ‚αž–αž·αž αžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš bitwise OR αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‘αŸ…αž›αŸαžαžŠαŸ‚αž›αž˜αž·αž“αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αŸ”
    • "-Wbitwise-conditional-parentheses" αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸ…αž–αŸαž›αž›αžΆαž™αžŸαž‰αŸ’αž‰αžΆαž”αŸ’αžšαž˜αžΆαžŽαžœαž·αž’αžΈαž‘αžΌαž‡αžΈαžαž› AND (&) αž“αž·αž„ OR (|) αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒ (?:) αŸ”
    • "-Wmisleading-indentation" αž‚αžΊαž‡αžΆ analogue αž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαž–αžΈ GCC αžŠαŸ‚αž›αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αž“αŸ’αžŸαŸ„αž˜αžŠαŸ‚αž›αž”αžΆαž“αž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαž”αŸ’αž›αž»αž€ if/else/for/while αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αžαž–αž½αž€αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αž“αŸαŸ‡αž‘αŸαŸ” .
    • αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ β€œ-Wextra” αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ β€œ-Wdeprecated-copy” αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ αžŠαŸ„αž™αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ constructors
      "αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈ" αž“αž·αž„ "αž…αž˜αŸ’αž›αž„" αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž“αž·αž™αž˜αž“αŸαž™αž’αŸ’αž“αž€αž”αŸ†αž•αŸ’αž›αžΆαž‰αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ”

    • αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ "-Wtautological-overlap-compare", "-Wsizeof-pointer-div", "-Wtautological-compare", "-Wrange-loop-analysis" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αŸ”
    • αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ "-Wbitwise-op-parentheses" αž“αž·αž„ "-Wlogical-op-parentheses" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ”
  • αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ C αž“αž·αž„ C++ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αž–αŸ’αžœαž“αŸ’αž’αž‘αŸ’αžšαž“αž·αž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžαŸ‚αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž§αž”αž€αžšαžŽαŸαž’αž“αžΆαž˜αŸαž™αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” "-fsanitize=pointer-overflow" αž₯αž‘αžΌαžœαž“αŸαŸ‡αž…αžΆαž”αŸ‹αž€αžšαžŽαžΈαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αž»αž αŸ’αžœαžŸαž·αžαž˜αž·αž“αžŸαžΌαž“αŸ’αž™αž‘αŸ…αž‘αŸ’αžšαž“αž·αž…αž‘αž‘αŸ αž¬αž”αž„αŸ’αž€αžΎαžαž‘αŸ’αžšαž“αž·αž…αž‘αž‘αŸ αž“αŸ…αž–αŸαž›αžŠαž€αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž–αžΈαž‘αŸ’αžšαž“αž·αž…αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž˜αŸ„αžƒαŸˆαŸ”
  • αžšαž”αŸ€αž” "-fsanitize=implicit-conversion" (Implicit Conversion Sanitizer) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“ αž“αž·αž„αž”αž“αŸ’αžαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž˜αžΆαž“αž‘αŸ†αž αŸ†αž”αŸŠαžΈαžαžαžΌαž…αž‡αžΆαž„αž”αŸ’αžšαž—αŸαž‘ "int"αŸ”
  • αž“αŸ…αž–αŸαž›αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‚αŸ„αž›αžŠαŸ… x86 "-march=skylake-avx512", "-march=icelake-client", "-march=icelake-server", "-march=cascadelake" αž“αž·αž„ "-march=cooperlake" αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž€αŸ’αž“αž»αž„αžœαŸ‰αž·αž…αž‘αŸαžšαŸ” αž€αžΌαžŠαž”αžΆαž“αžˆαž”αŸ‹αž”αŸ’αžšαžΎαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ zmm 512 αž”αŸŠαžΈαž αž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αž€αžΆαžšαž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž•αŸ’αž‘αžΆαž›αŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αŸ” αž αŸαžαž»αž•αž›αž‚αžΊαžαžΆαž”αŸ’αžšαŸαž€αž„αŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌαžαž™αž…αž»αŸ‡αž“αŸ…αž–αŸαž›αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš 512 αž”αŸŠαžΈαž αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αžŠαž›αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž₯αžšαž·αž™αžΆαž”αžαžαŸ’αž˜αžΈ αž‡αž˜αŸ’αžšαžΎαžŸ "-mprefer-vector-width=512" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αŸ”
  • αž₯αžšαž·αž™αžΆαž”αžαž“αŸƒαž‘αž„αŸ‹ "-flax-vector-conversions" αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ GCCαŸ– αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžœαŸ‰αž·αž…αž‘αŸαžšαžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›αžšαžœαžΆαž„αž…αŸ†αž“αž½αž“αž‚αžαŸ‹ αž“αž·αž„αžœαŸ‰αž·αž…αž‘αŸαžšαž’αžŽαŸ’αžαŸ‚αžαž‘αžΉαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž±αŸ’αž™αž”αŸ’αžšαžΎαž‘αž„αŸ‹αž‡αžΆαžαž·
    "-flax-vector-conversions=all" αžŠαŸ‚αž›αž‡αžΆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ”

  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸŠαžΈαž—αžΈαž™αžΌ MIPS αž“αŸƒαž‚αŸ’αžšαž½αžŸαžΆαžš Octeon αŸ” αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ "octeon+" αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž”αŸ’αžšαž—αŸαž‘ CPU αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”
  • αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αžšαž”αžŸαŸ‹ WebAssembly αž§αž”αž€αžšαžŽαŸαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– wasm-opt αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”
  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ RISC-V αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžαž˜αŸ’αž›αŸƒαž…αŸ†αžŽαž»αž…αž’αžŽαŸ’αžαŸ‚αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ†αž‘αžΎαž„αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αž„αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžαŸ’αž˜αžΈαŸ– "-fgnuc-version" αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž€αŸ†αžŽαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "__GNUC__" αž“αž·αž„αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαŸ” "-fmacro-prefix-map=OLD=NEW" αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αž“αž½αžŸαž”αž»αž–αŸ’αžœαž”αž‘αžαž OLD αž‡αžΆαž˜αž½αž™ NEW αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαžΌαž…αž‡αžΆ "__FILE__"; "-fpatchable-function-entry=N[,M]" αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž…αŸ†αž“αž½αž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† NOP αž˜αž»αž“ αž“αž·αž„αž€αŸ’αžšαŸ„αž™αž…αŸ†αžŽαž»αž…αž”αž‰αŸ’αž…αžΌαž›αž˜αž»αžαž„αžΆαžšαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RISC-V
    αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž„αŸ‹ "-ffixed-xX", "-mcmodel=medany" αž“αž·αž„ "-mcmodel=medlow" αŸ”

  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ '__attribute__((αž‚αŸ„αž›αžŠαŸ…("αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαžŸαžΆαžαžΆ=..."))) αž₯αž‘αŸ’αž’αž·αž–αž›αžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž‡αž˜αŸ’αžšαžΎαžŸ - សអខអ - αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš.
  • αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆαžœαžΈαž“αžŠαžΌ αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αž„αŸ‹ "-cfguard" αž€αžΆαžšαž‡αŸ†αž“αž½αžŸαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž›αŸ†αž αžΌαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· (Control Flow Guard) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αž€αžΆαžšαž‡αŸ†αž“αž½αžŸαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž‘αž„αŸ‹ "-cfguard-nochecks" ឬ "__declspec(guard(nocf))" αž€αŸ‚αž”αŸ’αžšαŸ‚αŸ”
  • αž₯αžšαž·αž™αžΆαž”αžαž“αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ gnu_inline αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ GCC αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αž‚αž“αŸ’αž›αžΉαŸ‡ "extern" αŸ”
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš OpenCL αž“αž·αž„ CUDA αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αŸ” αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ OpenMP 5.0 αžαŸ’αž˜αžΈαŸ”
  • αž‡αž˜αŸ’αžšαžΎαžŸαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹ clang αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž€αŸ†αžŽαŸ‚αž“αŸƒαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš C++ αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž‰αŸ‚αž€ αž“αž·αž„αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž€αžΌαžŠ (αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αž, αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·, c ++03, c ++ 11, c ++ 14, αž‚ ++ ៑៧, αž‚ ++ ្០) αŸ”
  • αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαŸ– alpha.cplusplus.PlacementNew αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž˜αžΆαž“αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž¬αž’αžαŸ‹, fuchsia.HandleChecker αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αž˜αžΎαž›αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ Fuchsia, security.insecureAPI.decodeValueOfObjCType αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αž˜αžΎαž›αž€αžΆαžšαž αŸ€αžšαžŸαŸ†αž”αŸ„αžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ [NSCoderbovoOVV : αž“αŸ…:] αŸ”
  • Undefined Behavior Sanitizer (UBSan) αž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡αžšαž”αžŸαŸ‹αž‘αŸ’αžšαž“αž·αž…αžšαž”αžŸαŸ‹αžœαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž™αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸƒαž’αž»αž αŸ’αžœαžŸαž·αžαžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžŸαžΌαž“αŸ’αž™αž‘αŸ…αž‘αŸ’αžšαž“αž·αž… NULL αž¬αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž’αž»αž αŸ’αžœαžŸαž·αžαž‘αŸ’αžšαž“αž·αž… NULL αŸ”
  • αž“αŸ…αž€αŸ’αž“αž»αž„ linter clang-tidy αž”αž“αŸ’αžαŸ‚αž˜ αž•αŸ’αž“αŸ‚αž€αž’αŸ†αž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αž˜αžΈαŸ”

αžŸαŸ†αžαžΆαž“αŸ‹ αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αž LLVM 10.0αŸ–

  • αž‘αŸ…αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒ αžαŸ†αžŽαžΆαž„ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž’αž“αŸ’αžαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αŸ” αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ 19 αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αŸ’αž™αžΆαž€αžšαžŽαŸ αžšαž½αž˜αž‘αžΆαŸ†αž„ 12 αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ 12 LLVM IR αž“αž·αž„ 7 αž›αž€αŸ’αžαžŽαŸˆαž’αžšαžΌαž”αžΈαžŠαžΌαž…αž‡αžΆαž—αžΆαž–αžšαžŸαŸ‹αžšαžœαžΎαž€αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž˜αž»αžαž„αžΆαžšαž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆαž˜αŸ‰αžΆαž‘αŸ’αžšαžΈαžŸαžαŸ’αž˜αžΈαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ (αž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžœαŸ‰αž·αž…αž‘αŸαžšαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αŸ†αž‘αž»αž„αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αŸ”
  • αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ X86, AArch64, ARM, SystemZ, MIPS, AMDGPU αž“αž·αž„ PowerPC αŸ” αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαŸŠαžΈαž—αžΈαž™αžΌ
    Cortex-A65, Cortex-A65AE, Neoverse E1 αž“αž·αž„ Neoverse N1 αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ARMv8.1-M αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžš (αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αžαž·αž…αž”αŸ†αž•αž»αžαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“) αž αžΎαž™αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ autovectorization αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ MVE αŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš CPU MIPS Octeon αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PowerPC αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžœαŸ‰αž·αž…αž‘αŸαžšβ€‹αž“αŸƒβ€‹αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αžšαž„β€‹αž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆβ€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ MASSV (Mathematical Acceleration SubSystem) αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αžΎαž€ αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž€αžΌαžŠβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžŸαžΎαžš αž αžΎαž™β€‹αž€αžΆαžšβ€‹αž…αžΌαž›β€‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹β€‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†β€‹αž–αžΈβ€‹αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžŸαžΎαžšβ€‹αž‘αžΎαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ x86 αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ’αžšαž—αŸαž‘αžœαŸ‰αž·αž…αž‘αŸαžš v2i32, v4i16, v2i16, v8i8, v4i8 αž“αž·αž„ v2i8 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ WebAssembly αŸ” αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ TLS (Thread-Local Storage) αž“αž·αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ atomic.fenceαŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš SIMD αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž―αž€αžŸαžΆαžšαžœαžαŸ’αžαž» WebAssembly αž₯αž‘αžΌαžœαž“αŸαŸ‡αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž αžαŸ’αžαž›αŸαžαžΆαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž…αŸ’αžšαžΎαž“αŸ”
  • αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ† MemorySSAαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαžœαžΆαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” MemorySSA αž’αžΆαž…αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž¬αž’αžΆαž…αž”αŸ’αžšαžΎαž‡αŸ†αž“αž½αžŸ AliasSetTracker αžŠαŸ„αž™αž˜αž·αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ LLDB αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αžΌαžœαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹ DWARF v5 αŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžŸαžΆαž„αž‡αžΆαž˜αž½αž™ MinGW
    αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ†αž”αžΌαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ Windows αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ ARM αž“αž·αž„ ARM64 αŸ” αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž²αŸ’αž™ αž“αŸ…αž–αŸαž›αž”αŸ†αž–αŸαž‰αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž…αž»αž…αž•αŸ’αž‘αžΆαŸ†αž„αŸ”

  • αž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€ αžŸαž˜αžαŸ’αžαž—αžΆαž–αž—αŸ’αž‡αžΆαž”αŸ‹ LLD αŸ” αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹ ELF αžšαž½αž˜αž‘αžΆαŸ†αž„αž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆαž–αŸαž‰αž›αŸαž‰αž“αŸƒαž‚αŸ†αžšαžΌ glob αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹ GNU αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž”αŸ‹ ".zdebug" αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž· PT_GNU_PROPERTY αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž“αŸ‚αž€ .note.gnu.property (αž’αžΆαž…αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž…αž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αž αžαžΊαžŽαŸ‚αž›),
    αžšαž”αŸ€αž” "-z noseparate-code", "-z αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€-αž€αžΌαžŠ" αž“αž·αž„ "-z αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€-αž•αŸ’αž‘αž»αž€-αž•αŸ’αž“αŸ‚αž€" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ MinGW αž“αž·αž„ WebAssembly αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹