LLVM 13.0 ಕಂಪೈಲರ್ ಸೂಟ್‌ನ ಬಿಡುಗಡೆ

ಆರು ತಿಂಗಳ ಅಭಿವೃದ್ಧಿಯ ನಂತರ, LLVM 13.0 ಪ್ರಾಜೆಕ್ಟ್‌ನ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಯಿತು - GCC-ಹೊಂದಾಣಿಕೆಯ ಟೂಲ್‌ಕಿಟ್ (ಕಂಪೈಲರ್‌ಗಳು, ಆಪ್ಟಿಮೈಜರ್‌ಗಳು ಮತ್ತು ಕೋಡ್ ಜನರೇಟರ್‌ಗಳು) ಇದು ಪ್ರೋಗ್ರಾಂಗಳನ್ನು RISC-ತರಹದ ವರ್ಚುವಲ್ ಸೂಚನೆಗಳ ಮಧ್ಯಂತರ ಬಿಟ್‌ಕೋಡ್‌ಗೆ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ (ಒಂದು ಕಡಿಮೆ-ಮಟ್ಟದ ವರ್ಚುವಲ್ ಯಂತ್ರದೊಂದಿಗೆ ಬಹು ಹಂತದ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಿಸ್ಟಮ್). ರಚಿತವಾದ ಸೂಡೊಕೋಡ್ ಅನ್ನು JIT ಕಂಪೈಲರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ನೇರವಾಗಿ ಯಂತ್ರ ಸೂಚನೆಗಳಾಗಿ ಪರಿವರ್ತಿಸಬಹುದು.

ಕ್ಲಾಂಗ್ 13.0 ರಲ್ಲಿ ಸುಧಾರಣೆಗಳು:

  • ಗ್ಯಾರಂಟಿಡ್ ಟೈಲ್ ಕರೆಗಳು (ಫಂಕ್ಷನ್‌ನ ಕೊನೆಯಲ್ಲಿ ಸಬ್‌ರುಟೀನ್ ಅನ್ನು ಕರೆಯುವುದು, ಸಬ್‌ರುಟೀನ್ ಸ್ವತಃ ಕರೆದರೆ ಟೈಲ್ ಪುನರಾವರ್ತನೆಯನ್ನು ರಚಿಸುವುದು) ಬೆಂಬಲಿತವಾಗಿದೆ. "ರಿಟರ್ನ್" ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುವ C++ ನಲ್ಲಿ "[[clang::musttail]]" ಗುಣಲಕ್ಷಣ ಮತ್ತು C ನಲ್ಲಿ "__attribute__((musttail))" ಅನ್ನು ಬಳಸಿಕೊಂಡು ಗ್ಯಾರಂಟಿಡ್ ಟೈಲ್ ಕರೆಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಈ ವೈಶಿಷ್ಟ್ಯವು ಸ್ಟಾಕ್ ಜಾಗವನ್ನು ಉಳಿಸಲು ಕೋಡ್ ಅನ್ನು ಫ್ಲಾಟ್ ಪುನರಾವರ್ತನೆಯಾಗಿ ಬಿಚ್ಚುವ ಮೂಲಕ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
  • C++11-ಶೈಲಿಯ ಗುಣಲಕ್ಷಣ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ಈಗ "[[]]" ಸ್ವರೂಪವನ್ನು ಬಳಸಿಕೊಂಡು ಘೋಷಣೆಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳನ್ನು "ಬಳಸಿ" ಕ್ಲಾಂಗ್‌ನಲ್ಲಿ ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ.
  • ಬಳಕೆದಾರ ಕೋಡ್‌ನಲ್ಲಿ ಕಾಯ್ದಿರಿಸಿದ ಗುರುತಿಸುವಿಕೆಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಾಗ ಎಚ್ಚರಿಕೆಯನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡಲು "-Wreserved-identifier" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಒಂದು ಪ್ಯಾರಾಮೀಟರ್ ಅಥವಾ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿದ್ದರೂ ಬಳಸದಿದ್ದರೆ ಎಚ್ಚರಿಕೆಯನ್ನು ಮುದ್ರಿಸಲು "-Wunused-but-set-parameter" ಮತ್ತು "-Wunused-but-set-variable" ಫ್ಲ್ಯಾಗ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ವ್ಯವಕಲನ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಶೂನ್ಯ ಪಾಯಿಂಟರ್ ಬಳಕೆಯಿಂದಾಗಿ ಕೋಡ್ ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗಬಹುದೇ ಎಂದು ಎಚ್ಚರಿಸಲು "-Wnull-pointer-subtraction" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಪ್ರಕ್ರಿಯೆಗೊಳ್ಳುತ್ತಿರುವ ಫೈಲ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಪ್ರತಿಯೊಂದು ಕಾರ್ಯಕ್ಕಾಗಿ ಸ್ಟಾಕ್ ಫ್ರೇಮ್‌ಗಳ ಗಾತ್ರದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುವ ಪ್ರತಿ ಕೋಡ್ ಫೈಲ್‌ಗೆ ಹೆಚ್ಚುವರಿ ".su" ಫೈಲ್ ಅನ್ನು ರಚಿಸಲು "-fstack-usage" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಸ್ಥಿರ ವಿಶ್ಲೇಷಕಕ್ಕೆ ಹೊಸ ಔಟ್‌ಪುಟ್ ಪ್ರಕಾರವನ್ನು ಸೇರಿಸಲಾಗಿದೆ — "sarif-html", ಇದು HTML ಮತ್ತು Sarif ಸ್ವರೂಪಗಳಲ್ಲಿ ವರದಿಗಳ ರಚನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಹೊಸ ಪರಿಶೀಲನೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ allocClassWithName. "-analyzer-display-progress" ಆಯ್ಕೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವಾಗ, ಪ್ರತಿ ಕಾರ್ಯದ ವಿಶ್ಲೇಷಣಾ ಸಮಯವು ಔಟ್‌ಪುಟ್ ಆಗಿದೆ. ಸ್ಮಾರ್ಟ್ ಪಾಯಿಂಟರ್ ವಿಶ್ಲೇಷಕ (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") ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ.
  • ಕ್ಲಾಂಗ್-ಫಾರ್ಮ್ಯಾಟ್ ಉಪಯುಕ್ತತೆಯನ್ನು ಈ ಕೆಳಗಿನ ಆಯ್ಕೆಗಳೊಂದಿಗೆ ನವೀಕರಿಸಲಾಗಿದೆ: ಕಾಮೆಂಟ್‌ಗಳ ಮೊದಲು ಸ್ಥಳಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಧರಿಸಲು SpacesInLineCommentPrefix, ದಾಖಲೆಗಳ ಜೋಡಣೆ, ಲ್ಯಾಂಬ್ಡಾ ಅಭಿವ್ಯಕ್ತಿಗಳು ಮತ್ತು ಪ್ರಿಪ್ರೊಸೆಸರ್ ನಿರ್ದೇಶನಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು IndentAccessModifiers, LambdaBodyIndentation, ಮತ್ತು PPIndentWidth. ಹೆಡರ್ ಫೈಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ವಿಂಗಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು (SortIncludes) ವಿಸ್ತರಿಸಲಾಗಿದೆ. JSON ಫೈಲ್‌ಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಖಣಿಲು-ಅಚ್ಚುಕಟ್ಟಾದ ಲಿಂಟರ್‌ಗೆ ಹೊಸ ಚೆಕ್‌ಗಳ ದೊಡ್ಡ ಬ್ಯಾಚ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

LLVM 13.0 ನಲ್ಲಿನ ಪ್ರಮುಖ ಆವಿಷ್ಕಾರಗಳು:

  • CET ತಂತ್ರಜ್ಞಾನವನ್ನು ಬಳಸಲು "-ehcontguard" ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ (Windows ರಿಟರ್ನ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ (ROP) ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ಮಿಸಲಾದ ಶೋಷಣೆಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯಿಂದ ವಿನಾಯಿತಿ ನಿರ್ವಹಣೆಯ ಹಂತದಲ್ಲಿ ರಕ್ಷಣೆಗಾಗಿ ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಜಾರಿ ತಂತ್ರಜ್ಞಾನ).
  • debuginfo-test ಯೋಜನೆಯನ್ನು cross-project-tests ಎಂದು ಮರುನಾಮಕರಣ ಮಾಡಲಾಗಿದೆ ಮತ್ತು debug ಮಾಹಿತಿಗೆ ಸೀಮಿತವಾಗಿರದೆ, ವಿವಿಧ ಯೋಜನೆಗಳ ಘಟಕಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
  • ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಬಹು ವಿತರಣೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಒಂದು ಉಪಯುಕ್ತತೆಗಳೊಂದಿಗೆ ಮತ್ತು ಇನ್ನೊಂದು ಡೆವಲಪರ್‌ಗಳಿಗೆ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ.
  • AArch64 ಆರ್ಕಿಟೆಕ್ಚರ್‌ನ ಬ್ಯಾಕೆಂಡ್ ಅಸೆಂಬ್ಲರ್‌ನಲ್ಲಿ Armv9-A RME (ರಿಯಲ್ಮ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್) ಮತ್ತು SME (ಸ್ಕೇಲೆಬಲ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಎಕ್ಸ್‌ಟೆನ್ಶನ್) ವಿಸ್ತರಣೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.
  • ISA V68/HVX ಗೆ ಬೆಂಬಲವನ್ನು ಹೆಕ್ಸಾಗನ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಬ್ಯಾಕೆಂಡ್‌ಗೆ ಸೇರಿಸಲಾಗಿದೆ.
  • x86 ಬ್ಯಾಕೆಂಡ್ AMD ಝೆನ್ 3 ಪ್ರೊಸೆಸರ್‌ಗಳಿಗೆ ಸುಧಾರಿತ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ.
  • AMDGPU ಬ್ಯಾಕೆಂಡ್‌ಗೆ GFX1013 RDNA2 APU ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಲಿಬ್ಸಿ++ "ಪರಿಕಲ್ಪನೆಗಳು" ಗ್ರಂಥಾಲಯದ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ಒಳಗೊಂಡಂತೆ C++20 ಮತ್ತು C++2b ಮಾನದಂಡಗಳ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಮುಂದುವರೆಸಿದೆ. ವೇದಿಕೆಗಾಗಿ Windows MinGW ಆಧಾರಿತ std::filesystem ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಹೆಡರ್ ಫೈಲ್‌ಗಳನ್ನು ಬೇರ್ಪಡಿಸಲಾಗಿದೆ. , ಮತ್ತು ಅಪೂರ್ಣ ಕಾರ್ಯನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಹೆಡರ್ ಫೈಲ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು LIBCXX_ENABLE_INCOMPLETE_FEATURES ಬಿಲ್ಡ್ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಬಿಗ್-ಎಂಡಿಯನ್ ಆರ್ಚ್64 ಪ್ರೊಸೆಸರ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸಲು LLD ಲಿಂಕರ್ ಅನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ ಮತ್ತು ನಿಯಮಿತ ಪ್ರೋಗ್ರಾಂಗಳ ಲಿಂಕ್ ಅನ್ನು ಅನುಮತಿಸಲು Mach-O ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ. LLD ಬಳಸಿಕೊಂಡು Glibc ಅನ್ನು ಲಿಂಕ್ ಮಾಡಲು ಅಗತ್ಯವಾದ ಸುಧಾರಣೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ARM ಕಾರ್ಟೆಕ್ಸ್-A55 ನಂತಹ ಇನ್-ಆರ್ಡರ್ ಸೂಪರ್‌ಸ್ಕೇಲಾರ್ ಪೈಪ್‌ಲೈನ್ ಪ್ರೊಸೆಸರ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸಲು llvm-mca (ಮೆಷಿನ್ ಕೋಡ್ ವಿಶ್ಲೇಷಕ) ಉಪಯುಕ್ತತೆಯನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ.
  • AArch64 ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಾಗಿ LLDB ಡೀಬಗರ್ ಈಗ ಪಾಯಿಂಟರ್ ದೃಢೀಕರಣ, MTE (MemTag, ಮೆಮೊರಿ ಟ್ಯಾಗಿಂಗ್ ವಿಸ್ತರಣೆ) ಕಾರ್ಯವಿಧಾನ ಮತ್ತು SVE ರಿಜಿಸ್ಟರ್‌ಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೆಂಬಲಿಸುತ್ತದೆ. ಪ್ರತಿ ಮೆಮೊರಿ ಹಂಚಿಕೆ ಕಾರ್ಯಾಚರಣೆಗೆ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಬಂಧಿಸಲು ಮತ್ತು ಮೆಮೊರಿಯನ್ನು ಪ್ರವೇಶಿಸುವಾಗ ಪಾಯಿಂಟರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಆಜ್ಞೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಮಾನ್ಯವಾದ ಟ್ಯಾಗ್‌ಗೆ ಬದ್ಧವಾಗಿರಬೇಕು.
  • ಯೋಜನೆಯಿಂದ ಉತ್ಪತ್ತಿಯಾಗುವ ಬೈನರಿ ಅಸೆಂಬ್ಲಿಗಳಿಗೆ LLDB ಡೀಬಗರ್ ಮತ್ತು ಫೋರ್ಟ್ರಾನ್ ಮುಂಭಾಗದ ಫ್ಲಾಂಗ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ಸೈಟ್‌ಗಳಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ 🔥 DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್‌ಸೈಟ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ | ProHoster