ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ LLVM 9.0 ืงืึทืžืคึผื™ื™ืœืขืจ ืฉื˜ืขืœืŸ

ื ืึธืš ื–ืขืงืก ื—ื“ืฉื™ื ืคื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื“ืขืจืœืื ื’ื˜ ืคึผืจื•ื™ืขืงื˜ ืžืขืœื“ื•ื ื’ LLVM 9.0 - GCC-ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื›ืฉื™ืจื™ื (ืงืึทืžืคึผื™ื™ืœืขืจื–, ืึธืคึผื˜ื™ืžื™ื–ืขืจืก ืื•ืŸ ืงืึธื“ ื’ืขื ืขืจืึทื˜ืึธืจืก), ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืžื’ื™ืœื” ืื™ืŸ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ื™ื˜ืงืึธื“ืข ืคื•ืŸ โ€‹โ€‹RISC-ื•ื•ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– (ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžื™ื˜ ืึท ืžืึทืœื˜ื™-ืžื“ืจื’ื” ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืกื™ืกื˜ืขื). ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคึผืกืขื•ื•ื“ืึธืงืึธื“ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืžื™ื˜ ืึท JIT ืงืึทืžืคึผื™ื™ืœืขืจ ืื™ืŸ ืžืึทืฉื™ืŸ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก ื’ืœื™ื™ึทืš ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื.

ื ื™ื™ึทืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ LLVM 9.0 ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ื™ ื‘ืึทื–ื™ื™ึทื˜ื™ืงื•ื ื’ ืคื•ืŸ ื“ื™ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ืคึผืœืึทืŸ ืงื•ื•ื™ื˜ืœ ืคื•ืŸ ื“ื™ ืฆื™ืœ RISC-V ืคึผืœืึทื˜ืคืึธืจืžืข, C ++ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ OpenCL, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืฉืคึผืึทืœื˜ืŸ ืึท ืคึผืจืึธื’ืจืึทื ืื™ืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืœืึธื•ื“ื™ื“ ืคึผืึทืจืฅ ืื™ืŸ LLD, ืื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ "ื•ื•ื™ ื’ื•ื˜", ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืงืึธื“. libc ++ ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ื•ืึทืกื™ (ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืกื™ืกื˜ืขื ืฆื•ื‘ื™ื ื“), ืื•ืŸ LLD ืฆื•ื’ืขื’ืขื‘ืŸ ืขืจืฉื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ื“ื™ื ืึทืžื™ืฉ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’.

ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ืื™ืŸ ืงืœืึทื ื’ 9.0:

  • ืฆื•ื’ืขื’ืขื‘ืŸ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ GCC-ืกืคึผืขืฆื™ืคื™ืฉ ืื•ื™ืกื“ืจื•ืง "ื•ื•ื™ ื’ื•ื˜", ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคื•ืŸ ืึท ื™ื ืœื™ื ืข ื‘ืœืึธืง ืคื•ืŸ ืึท ืึทืกืขืžื‘ืึทืœืœืขืจ ืฆื• ืึท ืคื™ืจืžืข ืื™ืŸ C ืงืึธื“. ื“ืขืจ ืฉื˜ืจื™ืš ืื™ื– ืคืืจืœืื ื’ื˜ ืฆื• ื‘ื•ื™ืขืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืื™ืŸ ื“ื™ "CONFIG_JUMP_LABEL = y" ืžืึธื“ืข ื ื™ืฆืŸ ืงืœืึทื ื’ ืื•ื™ืฃ ืกื™ืกื˜ืขืžืขืŸ ืžื™ื˜ x86_64 ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ. ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื•ื’ืขืœื™ื™ื’ื˜ ืื™ืŸ ืคืจื™ืขืจื“ื™ืงืŸ ืจื™ืœื™ืกื™ื–, ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืงืขื ืขืŸ ืื™ืฆื˜ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ืงืœืึทื ื’ ืคึฟืึทืจ ื“ื™ x86_64 ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ (ืคืจื™ืขืจ ื‘ืœื•ื™ื– ื‘ื ื™ืŸ ืคึฟืึทืจ ื“ื™ ืึธืจืขื, aarch64, ppc32, ppc64le ืื•ืŸ mips ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื™ื– ื’ืขืฉื˜ื™ืฆื˜). ื“ืขืจืฆื•, ืึทื ื“ืจื•ื™ื“ ืื•ืŸ ChromeOS ืคึผืจืึทื“ื–ืฉืขืงืก ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืฆื• ื ื•ืฆืŸ ืงืœืึทื ื’ ืคึฟืึทืจ ืงืขืจืŸ ื‘ื ื™ืŸ, ืื•ืŸ Google ืื™ื– ื˜ืขืกื˜ื™ื ื’ ืงืœืึทื ื’ ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ื‘ื ื™ืŸ ืงืขืจื ืึทืœื– ืคึฟืึทืจ ื–ื™ื™ึทืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ืœื™ื ื•ืงืก ืกื™ืกื˜ืขืžืขืŸ. ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜, ืื ื“ืขืจืข LLVM ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ื“ื™ ืงืขืจืŸ ื‘ื•ื™ืขืŸ ืคึผืจืึธืฆืขืก, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ LLD, llvm-objcopy, llvm-ar, llvm-nm ืื•ืŸ llvm-objdump;
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื ื™ืฆืŸ C ++ 17 ืื™ืŸ OpenCL. ืกืคึผืขืฆื™ืขืœืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึทื“ืจืขืก ืคึผืœืึทืฅ ืึทื˜ืจื™ื‘ื™ื•ืฅ, ื‘ืœืึทืงื™ื ื’ ืึทื“ืจืขืก ืคึผืœืึทืฅ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ื“ื•ืจืš ื˜ื™ืคึผ ืงืึทืกื˜ื™ื ื’ ืึธืคึผืขืจื™ื™ื˜ืขืจื–, ืฆื•ืฉื˜ืขืœืŸ ื•ื•ืขืงื˜ืึธืจ ื˜ื™ื™ืคึผืก ื•ื•ื™ ืื™ืŸ OpenCL ืคึฟืึทืจ C, ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืกืคึผืขืฆื™ืคื™ืฉ OpenCL ื˜ื™ื™ืคึผืก ืคึฟืึทืจ ื‘ื™ืœื“ืขืจ, events, ื˜ืฉืึทื ืึทืœื–, ืขื˜ืง.
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื ื™ื™ึท ืงืึทืžืคึผื™ื™ืœืขืจ ืคืœืึทื’ืก "-ftime-trace" ืื•ืŸ "-ftime-trace-granularity=N" ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ื‘ืึทืจื™ื›ื˜ ื•ื•ืขื’ืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜ ืคื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ืคืจืึธื ื˜ืขื ื“ (ืคึผืึทืจืกื™ื ื’, ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ) ืื•ืŸ ื‘ืึทืงืขื ื“ (ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืกื˜ืึทื’ืขืก). ื“ืขืจ ื‘ืึทืจื™ื›ื˜ ืื™ื– ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื™ืŸ ื“ื–ืฉืกืึธืŸ ืคึฟืึธืจืžืึทื˜, ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื™ื˜ chrome://tracing ืื•ืŸ speedscope.app;
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ ื“ื™ "__declspec (ืึทืœืึธืงืึทื˜ืึธืจ)" ืกืคึผืขืกื™ืคื™ืขืจ ืื•ืŸ ื“ื•ืจ ืคื•ืŸ ืึทืงืึทืžืคึผืึทื ื™ื™ื ื’ ื“ื™ื‘ืึทื’ื™ื ื’ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืžืึธื ื™ื˜ืึธืจ ื–ื›ึผืจื•ืŸ ืงืึทื ืกืึทืžืฉืึทืŸ ืื™ืŸ ื“ื™ ื•ื•ื™ืกื•ืึทืœ ืกื˜ื•ื“ื™ืึธ ืกื•ื•ื™ื•ื•ืข;
  • ืคึฟืึทืจ ื“ื™ C ืฉืคึผืจืึทืš, ืฉื˜ื™ืฆืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืคึฟืึทืจ ื“ื™ "__FILE_NAME__" ืžืึทืงืจืึธื•, ื•ื•ืึธืก ืจื™ื–ืขืžื‘ืึทืœื– ื“ื™ "__FILE__" ืžืึทืงืจืึธื•, ืึธื‘ืขืจ ื›ื•ืœืœ ื‘ืœื•ื™ื– ื“ื™ ื˜ืขืงืข ื ืึธืžืขืŸ ืึธืŸ ื“ื™ ืคื•ืœ ื“ืจืš;
  • C ++ ื”ืื˜ ื™ืงืกืคึผืึทื ื“ื™ื“ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึทื“ืจืขืก ืคึผืœืึทืฅ ืึทื˜ืจื™ื‘ื™ื•ืฅ ืฆื• ื“ืขืงืŸ ืคืึทืจืฉื™ื“ืŸ C ++ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื•ืŸ ืึทืจื’ื•ืžืขื ื˜ ืคึผืึทื˜ืขืจื ื–, ืจืขืคึฟืขืจืขื ืฅ ื˜ื™ื™ืคึผืก, ืฆื•ืจื™ืงืงื•ืžืขืŸ ื˜ื™ืคึผ ื™ื ืคืขืจืึทื ืก, ืึทื‘ื“ื–ืฉืขืงืฅ, ืึทื•ื˜ืึธ-ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคืึทื ื’ืงืฉืึทื ื–, ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื–, ืื•ืŸ ืžืขืจ.
  • ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ OpenCL, OpenMP ืื•ืŸ CUDA ื–ืขื ืขืŸ ื™ืงืกืคึผืึทื ื“ื™ื“. ื“ืึธืก ื›ื•ืœืœ ืขืจืฉื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื™ืžืคึผืœื™ืกืึทื˜ ื™ื ืงืœื•ื–ืฉืึทืŸ ืคื•ืŸ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ OpenCL ืคืึทื ื’ืงืฉืึทื ื– (ื“ื™ "-fdeclare-opencl-builtins" ืคืึธืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ), ื“ื™ cl_arm_integer_dot_product ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ืŸ ื“ื™ืึทื’ื ืึธืกื˜ื™ืง ืžื›ืฉื™ืจื™ื ื–ืขื ืขืŸ ื™ืงืกืคึผืึทื ื“ื™ื“;
  • ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ื™ ืกื˜ืึทื˜ื™ืง ืึทื ืึทืœื™ืกื™ืก ืื™ื– ื™ืžืคึผืจื•ื•ื•ื“ ืื•ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืกื˜ืึทื˜ื™ืง ืึทื ืึทืœื™ืกื™ืก ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ. ืฆื•ื’ืขื’ืขื‘ืŸ ืคืœืึทื’ืก ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืคืึทืจืึทื ืขืŸ ื˜ืฉืขืงืขืจ ืžืึทื“ื–ืฉื•ืœื– ืื•ืŸ ื’ืขืฉื˜ื™ืฆื˜ ืึธืคึผืฆื™ืขืก ("-ืึทื ืึทืœื™ื–ืขืจ-ื˜ืฉืขืงืขืจ[-ืึธืคึผืฆื™ืข]-ื”ื™ืœืฃ", "-ืึทื ืึทืœื™ื–ืขืจ-ื˜ืฉืขืงืขืจ[-ืึธืคึผืฆื™ืข]-ื”ื™ืœืฃ-ืึทืœืฃ" ืื•ืŸ "-ืึทื ืึทืœื™ื–ืขืจ-ื˜ืฉืขืงืขืจ[-ืึธืคึผืฆื™ืข]-ื”ื™ืœืฃ "-ื“ืขื•ื•ืขืœืึธืคึผืขืจ"). ืฆื•ื’ืขื’ืขื‘ืŸ "-analyzer-werror" ืคืึธืŸ ืฆื• ืžื™ื™ึทื›ืœ ื•ื•ืึธืจื ื™ื ื’ื– ื•ื•ื™ ืขืจืจืึธืจืก.
    ืฆื•ื’ืขืœื™ื™ื’ื˜ ื ื™ื™ึทืข ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ ืžืึธื“ืขืก:

    • security.insecureAPI.DeprecatedOrUnsafeBuffer ื”ืึทื ื“ืœื™ื ื’ ืฆื• ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ืึทื ืกื™ื™ืฃ ืคึผืจืึทืงื˜ื™ืกื™ื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื‘ืึทืคืขืจื–;
    • osx.MIGChecker ืฆื• ื–ื•ื›ืŸ ืคึฟืึทืจ ื•ื•ื™ื™ืึทืœื™ื™ืฉืึทื ื– ืคื•ืŸ MIG (Mach Interface Generator) ืจื•ืคืŸ ื›ึผืœืœื™ื;
    • optin.osx.OSObjectCStyleCast ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืคืึทืœืฉ ืงืึทื ื•ื•ืขืจื–ืฉืึทื ื– ืคื•ืŸ XNU ืœื™ื‘ืงืขืจืŸ ื›ื™ื™ืคืขืฅ;
    • apiModeling.llvm ืžื™ื˜ ืึท ื’ืึทื ื’ ืคื•ืŸ ืžืึธื“ืขืœื™ื ื’ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืคืึทื ื’ืงืฉืึทื ื– ืฆื• ื“ืขื˜ืขืงื˜ ืขืจืจืึธืจืก ืื™ืŸ ื“ื™ LLVM ืงืึธื“ืขื‘ืึทืกืข;
    • ืกื˜ืึทื‘ื™ืœื™ื–ืขื“ ืงืึธื“ ืคึฟืึทืจ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืึทื ื™ื ื™ืฉื™ืึทืœื™ื™ื–ื“ C ++ ืึทื‘ื“ื–ืฉืขืงืฅ (ื•ื ื™ื ื™ื˜ื™ืึทืœืœื™ื–ืขื“ืึธื‘ื“ื–ืฉืขืงื˜ ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ืŸ.ืงืคึผืœื•ืกืคึผืœื•ืก ืคึผืขืงืœ);
  • ื“ื™ ืงืœืึทื ื’ ืคึฟืึธืจืžืึทื˜ ื ื•ืฆืŸ ื”ืื˜ ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ืงืึธื“ ืื™ืŸ ื“ื™ C # ืฉืคึผืจืึทืš ืื•ืŸ ื’ื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ืงืึธื“ ืคืึธืจืžืึทื˜ื˜ื™ื ื’ ื ื•ืกื— ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ืžื™ื™ืงืจืึธืกืึธืคึฟื˜;
  • clang-cl, ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ื‘ืึทืคึฟืขืœืŸ-ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ ื•ื•ืึธืก ื’ื™ื˜ ืึธืคึผืฆื™ืข-ืžื“ืจื’ื” ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืžื™ื˜ ื“ื™ cl.exe ืงืึทืžืคึผื™ื™ืœืขืจ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื•ื•ื™ืกื•ืึทืœ ืกื˜ื•ื“ื™ืึธ, ื”ืื˜ ืฆื•ื’ืขืœื™ื™ื’ื˜ ื›ื™ื•ืจื™ืกื˜ื™ืงืก ืฆื• ืžื™ื™ึทื›ืœ ื ื™ื˜-ืขื’ื–ื™ืกื˜ืึทื ื˜ ื˜ืขืงืขืก ื•ื•ื™ ื‘ืึทืคึฟืขืœืŸ-ืฉื•ืจื” ืึธืคึผืฆื™ืขืก ืื•ืŸ ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ืึท ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื•ื•ืืจืขื ื•ื ื’ (ืœืžืฉืœ, ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง "ืงืœืึทื ื’-ืงืœ / ื“ื™ืึทื’ื ืึธืกื˜ื™ืง: ืงืึทืจืขื˜ / C test.cc");
  • ื ื’ืจื•ื™ืก ื˜ื™ื™ืœ ืคื•ืŸ ื ื™ื™ึท ื˜ืฉืขืงืก ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ ืœื™ื ื“ืขืจ ืงืœืึทื ื’-ืฆื™ื›ื˜ื™ืง, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืฆื•ื’ืขืœื™ื™ื’ื˜ ื˜ืฉืขืงืก ืกืคึผืขืฆื™ืคื™ืฉ ืฆื• ื“ื™ OpenMP API;
  • ื™ืงืกืคึผืึทื ื“ื™ื“ ืกืขืจื•ื•ืขืจ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– clangd (ืงืœืึทื ื’ ืกืขืจื•ื•ื™ืจืขืจ), ืื™ืŸ ื•ื•ืึธืก ื“ืขืจ ื”ื™ื ื˜ืขืจื’ืจื•ื ื˜ ืื™ื ื“ืขืงืก ื‘ื™ืœื“ื™ื ื’ ืžืึธื“ืข ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืงืึธื ื˜ืขืงืกื˜ื•ืึทืœ ืึทืงืฉืึทื ื– ืžื™ื˜ ืงืึธื“ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ (ื‘ื™ื™ึทื˜ืœืขืš ืจื™ื˜ืจื™ื•ื•ืึทืœ, ื™ืงืกืคึผืึทื ืฉืึทืŸ ืคื•ืŸ ืึทื•ื˜ืึธ ืื•ืŸ ืžืึทืงืจืึธื• ื“ืขืคึฟื™ื ื™ืฆื™ืข, ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืคื•ืŸ ืื ื˜ืจื•ื ืขืŸ ืกื˜ืจื™ื ื’ืก ืฆื• ืึทื ืขืกืงืึทืคึผื“ ืึธื ืขืก), ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ ื•ื•ืึธืจื ื™ื ื’ื– ืคื•ืŸ ืงืœืึทื ื’-ืฆื™ื›ื˜ื™ืง, ื™ืงืกืคึผืึทื ื“ื™ื“ ื“ื™ืึทื’ื ืึธืกื˜ื™ืงืก ืคื•ืŸ ืขืจืจืึธืจืก ืื™ืŸ ื›ืขื“ืขืจ ื˜ืขืงืขืก ืื•ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ื˜ื™ืคึผ ื›ื™ื™ืขืจืึทืจืงื™;

ื”ื•ื™ืคึผื˜ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– LLVM 9.0:

  • ืึทืŸ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’ ืฉื˜ืจื™ืš ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ LLD ืœื™ื ืงืขืจ, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืคึผืึทืœื˜ืŸ ืื™ื™ืŸ ืคึผืจืึธื’ืจืึทื ืื™ืŸ ืขื˜ืœืขื›ืข ืคึผืึทืจืฅ, ื™ืขื“ืขืจ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ELF ื˜ืขืงืข. ื“ืขืจ ืฉื˜ืจื™ืš ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืงืึทื˜ืขืจ ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื, ื•ื•ืึธืก ื•ื•ืขื˜ ืœืึธื“ืŸ ืื ื“ืขืจืข ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื•ื•ื™ ื“ืืจืฃ ื‘ืขืฉืึทืก ืึธืคึผืขืจืึทืฆื™ืข (ืœืžืฉืœ, ืื™ืจ ืงืขื ืขืŸ ืฆืขื˜ื™ื™ืœืŸ ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคึผื“ืฃ ืฆื•ืงื•ืงืขืจ ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื˜ืขืงืข, ื•ื•ืึธืก ื•ื•ืขื˜ ืœืึธื“ืŸ ื‘ืœื•ื™ื– ื•ื•ืขืŸ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืึธืคึผืขื ืก ื“ื™ PDF. ื˜ืขืงืข).

    LLD ืœื™ื ืงืขืจ ื’ืขื‘ืจืึทื›ื˜ ืฆื• ื“ืขืจ ืคืึธืจ ืฆื• ืึท ืฉื˜ืึทื˜ ืคึผืึทืกื™ืง ืคึฟืึทืจ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืคึฟืึทืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื– ืคื•ืŸ arm32_7, arm64, ppc64le ืื•ืŸ x86_64.
    ื ื™ื™ึทืข ืึธืคึผืฆื™ืขืก "-" (ืึทื•ื˜ืคึผื•ืฅ ืฆื• ืกื˜ื“ืึธื•ื˜), "-[ื ืึธ-] ืœืึธื–ืŸ-ืฉืœื™ื‘-ื•ื ื“ืขืคื™ื ืขื“", "-ื•ื ื“ืขืคื™ื ืขื“-ื’ืœืึธื‘", "-ื ืžืึทื’ื™ืง", "-ืึธืžืึทื’ื™ืง", "-ืึธืคืขื ื’ื™ืง-ื‘ื™ื‘ืœื™ืึธื˜ืขืง", "- z ifunc-noplt" ืื•ืŸ "-z ืคึผืจืึธืกื˜ ื‘ืœืึทื˜ ื’ืจื™ื™ืก". ืคึฟืึทืจ ื“ื™ AArch64 ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ BTI (Branch Target Indicator) ืื•ืŸ PAC (Pointer Authentication Code) ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ. ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ MIPS, RISC-V ืื•ืŸ PowerPC ืคึผืœืึทื˜ืคืึธืจืžืก ืื™ื– ื‘ืื˜ื™ื™ื˜ื™ืง ื™ืžืคึผืจื•ื•ื•ื“. ืฆื•ื’ืขื’ืขื‘ืŸ ืขืจืฉื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ื ืึทืžื™ืฉ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืคึฟืึทืจ ื•ื•ืขื‘ ืึทืกืขืžื‘ืœื™;

  • ืื™ืŸ libc++ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืคืึทื ื’ืงืฉืึทื ื– ssize, std::is_constant_evaluated, std::midpoint ืื•ืŸ std::lerp, ืžืขื˜ื”ืึธื“ืก "ืคืจืึธื ื˜" ืื•ืŸ "ืฆื•ืจื™ืง" ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• std::span, ืึทื˜ืจื™ื‘ื™ื•ืฅ ืคื•ืŸ ื˜ื™ื™ืคึผืก std::is_unbounded_array ืื•ืŸ std::is_bounded_array ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ , ืกื˜ื“ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื™ืงืกืคึผืึทื ื“ื™ื“:: ืึทื˜ืึธืžื™ืฉืข. ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ GCC 4.9 ืื™ื– ื“ื™ืกืงืึทื ื˜ื™ื ื™ื•ื“ (ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืžื™ื˜ GCC 5.1 ืื•ืŸ ื ื™ื™ึทืขืจ ืจื™ืœื™ืกื™ื–). ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ื•ื•ืึทืกื™ (ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืกื™ืกื˜ืขื ืฆื•ื‘ื™ื ื“, ืึท ืฆื•ื‘ื™ื ื“ ืคึฟืึทืจ ื ื™ืฆืŸ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืึทืจื•ื™ืก ื“ืขื ื‘ืœืขื˜ืขืจืขืจ);
  • ื ื™ื™ึท ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทื ื– ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ. ืขื ื™ื™ื‘ืึทืœื“ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืคื•ืŸ memcmp ืจื•ืคื˜ ืฆื• bcmp ืื™ืŸ ืขื˜ืœืขื›ืข ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก. ื™ืžืคึผืœืึทืžืขื ืึทื“ ืึธื•ืžื™ืฉืึทืŸ ืคื•ืŸ ืงื™ื™ื˜ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืคึฟืึทืจ ืฉืคึผืจื™ื ื’ืขืŸ ื˜ื™ืฉืŸ ืื™ืŸ ื•ื•ืึธืก ื ื™ื“ืขืจื™ืงืขืจ ื‘ืึทืฉื˜ื™ืžืขืŸ ื‘ืœืึทืงืก ื–ืขื ืขืŸ ืึทื ืจื™ื˜ืฉืึทื‘ืึทืœ ืึธื“ืขืจ ื•ื•ืขืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื™ืฆื˜, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื•ื•ืขืŸ ืคืึทืš ืคืึทื ื’ืงืฉืึทื ื– ืžื™ื˜ ื˜ื™ืคึผ ืคึผืึธืกืœ;
  • ื“ื™ ื‘ืึทืงืขื ื“ ืคึฟืึทืจ ื“ื™ RISC-V ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื™ื– ืกื˜ื™ื™ื‘ืึทืœื™ื™ื–ื“, ื•ื•ืึธืก ืื™ื– ื ื™ื˜ ืžืขืจ ืคึผืึทื–ื™ืฉืึทื ื“ ื•ื•ื™ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ืื•ืŸ ืื™ื– ื’ืขื‘ื•ื™ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜. ืคึผืจืึธื•ื•ื™ื“ืขืก ืคื•ืœ ืงืึธื“ ื“ื•ืจ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ RV32I ืื•ืŸ RV64I ื™ื ืกื˜ืจื•ืงื˜ื™ืึธื ืก ืฉื˜ืขืœืŸ ื•ื•ืขืจื™ืึทื ืฅ ืžื™ื˜ MAFDC ื™ืงืกื˜ืขื ืฉืึทื ื–;
  • ืคื™ืœืข ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืฆื• ื‘ืึทืงืขื ื“ื– ืคึฟืึทืจ X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ืื•ืŸ PowerPC ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืคึฟืึทืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ
    AArch64 ื”ืึธื˜ ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ SVE2 (Scalable Vector Extension 2) ืื•ืŸ MTE (Memory Tagging Extensions) ื™ื ืกื˜ืจืึทืงืฉืึทื ื–; ืื™ืŸ ื“ื™ ARM ื‘ืึทืงืขื ื“, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ Armv8.1-M ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ืŸ ื“ื™ MVE (M-Profile Vector Extension) ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ. ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ GFX10 (ื ืึทื•ื•ื™) ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ AMDGPU ื‘ืึทืงืขื ื“, ืคื•ื ืงืฆื™ืข ืคืึทืš ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ื–ืขื ืขืŸ ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืื•ืŸ ืึท ืงืึทืžื‘ื™ื™ื ื“ ืคืึธืจืŸ ืื™ื– ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ื“ืคึผืคึผ (ื“ืึทื˜ืึท-ืคึผืึทืจืึทืœืขืœ ืคึผืจื™ืžื™ื˜ื™ื•ื•ืŸ).

  • ื“ื™ LLDB ื“ื™ื‘ื•ื’ื’ืขืจ ืื™ืฆื˜ ื”ืื˜ ืงืึธืœื™ืจ ื›ื™ื™ืœื™ื™ื˜ื™ื ื’ ืคึฟืึทืจ ื‘ืึทืงื˜ืจืึทืกืขืก ืื•ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ DWARF4 ื“ืขื‘ื•ื’_ื˜ื™ืคึผืขืก ืื•ืŸ DWARF5 debug_info ื‘ืœืึทืงืก;
  • ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึทื‘ื“ื–ืฉืขืงืฅ ืื•ืŸ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก ืื™ืŸ COFF ืคึฟืึธืจืžืึทื˜ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ llvm-objcopy ืื•ืŸ llvm-strip ื™ื•ื˜ื™ืœืึทื˜ื™ื–.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’