Itusilẹ ti LLVM 13.0 alakojo suite

Lẹhin oṣu mẹfa ti idagbasoke, itusilẹ ti iṣẹ akanṣe LLVM 13.0 ni a gbekalẹ - ohun elo irinṣẹ ibaramu GCC (awọn olupilẹṣẹ, awọn olupilẹṣẹ ati awọn olupilẹṣẹ koodu) ti o ṣajọ awọn eto sinu bitcode agbedemeji ti RISC-bii awọn ilana foju (ẹrọ foju ipele kekere pẹlu kan olona-ipele ti o dara ju eto). Pseudocode ti ipilẹṣẹ le ṣe iyipada nipa lilo olupilẹṣẹ JIT sinu awọn ilana ẹrọ taara ni akoko ipaniyan eto.

Awọn ilọsiwaju ni Clang 13.0:

  • Atilẹyin imuse fun awọn ipe iru ti o ni idaniloju (pipe subroutine kan ni ipari iṣẹ kan, ti o ṣe atunṣe iru kan ti subroutine ba pe funrararẹ). Atilẹyin fun awọn ipe iru ti o ni ẹri ti pese nipasẹ “[[clang :: musttail]]” abuda ni C ++ ati “__attribute__((musttail))” ni C, ti a lo ninu alaye “pada”. Ẹya naa ngbanilaaye lati ṣe awọn iṣapeye nipa gbigbe koodu sinu aṣetunṣe alapin lati ṣafipamọ agbara akopọ.
  • "lilo" awọn ikede ati awọn amugbooro idile n pese atilẹyin fun asọye awọn ẹya ara C ++ 11 nipa lilo ọna kika "[[]]".
  • Ṣe afikun asia "-Wreserved-identifier" lati ṣe afihan ikilọ kan nigbati o ba pato awọn idamọ ti o wa ni ipamọ ni koodu olumulo.
  • Ṣe afikun awọn asia "-Wunused-but-set-parameter" ati "-Wunused-but-set-variable" lati ṣe afihan ikilọ kan ti a ba ṣeto paramita tabi oniyipada ṣugbọn kii ṣe lilo.
  • Fikun asia "-Wnull-pointer-iyokuro" lati fun ikilọ ti koodu naa le ṣe agbekalẹ ihuwasi aisọye nitori lilo itọka asan ni awọn iṣẹ iyokuro.
  • Ṣafikun asia “-fstack-usage” lati ṣe ipilẹṣẹ fun faili koodu kọọkan afikun “.su” faili ti o ni alaye ninu nipa iwọn awọn fireemu akopọ fun iṣẹ kọọkan ti a ṣalaye ninu faili ti n ṣiṣẹ.
  • A ti ṣafikun iru iṣẹjade tuntun si olutọpa aimi - “sarif-html”, eyiti o yori si iran ti awọn ijabọ ni nigbakannaa ni awọn ọna kika HTML ati Sarif. Ṣe afikun ayẹwo allocClassWithName tuntun. Nigbati o ba n ṣalaye aṣayan “-analyzer-display-progress”, akoko itupalẹ ti iṣẹ kọọkan yoo han. Oluyanju ijuboluwoye ọlọgbọn (alpha.cplusplus.SmartPtr) ti fẹrẹ ṣetan.
  • Awọn agbara ti o ni nkan ṣe pẹlu atilẹyin OpenCL ti pọ si. Atilẹyin ti a ṣafikun fun awọn amugbooro tuntun cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields ati __cl_clang_non_portable_kernel_param_types. Imuse ti OpenCL 3.0 sipesifikesonu ti tẹsiwaju. Fun C, OpenCL 1.2 sipesifikesonu jẹ lilo nipasẹ aiyipada ayafi ti ẹya miiran ti yan ni kedere. Fun C++, atilẹyin fun awọn faili pẹlu itẹsiwaju ".clcpp" ti ni afikun.
  • Atilẹyin fun awọn itọsọna iyipada loop (“#pragma omp unrol” ati “#pragma omp tile”) ti ṣalaye ni sipesifikesonu OpenMP 5.1 ti ni imuse.
  • Awọn aṣayan ti a ṣafikun si IwUlO ọna kika idile: SpacesInLineCommentPrefix lati ṣalaye nọmba awọn aaye ṣaaju awọn asọye, IndentAccessModifiers, LambdaBodyIndentation ati PPIndentWidth lati ṣakoso titete awọn titẹ sii, awọn ikosile lambda ati awọn itọsọna iṣaaju. Awọn aye fun tito lẹsẹsẹ awọn faili akọsori (SortIncludes) ti gbooro sii. Atilẹyin ti a ṣafikun fun tito akoonu awọn faili JSON.
  • Apa nla ti awọn sọwedowo tuntun ti ṣafikun si linter clang-tidy.

Awọn imotuntun bọtini ni LLVM 13.0:

  • Ṣe afikun aṣayan “-ehcontguard” lati lo imọ-ẹrọ CET (Iṣakoso-ṣiṣan Imudaniloju Iṣakoso Windows) lati daabobo lodi si ipaniyan ti awọn ilokulo ti a ṣe nipa lilo awọn ilana Ipadabọ-Oriented Programming (ROP) ni ipele mimu iyasọtọ.
  • Iṣẹ akanṣe-idanwo debuginfo ti ni lorukọmii awọn idanwo-agbelebu-awọn idanwo ati pe a ṣe apẹrẹ lati ṣe idanwo awọn paati lati awọn iṣẹ akanṣe, ko ni opin si alaye n ṣatunṣe aṣiṣe.
  • Eto apejọ n pese atilẹyin fun kikọ ọpọlọpọ awọn pinpin, fun apẹẹrẹ, ọkan pẹlu awọn ohun elo, ati ekeji pẹlu awọn ile-ikawe fun awọn olupilẹṣẹ.
  • Ni ẹhin ẹhin fun faaji AArch64, atilẹyin fun Armv9-A RME (Itẹsiwaju Isakoso Ijọba) ati awọn amugbooro SME (Scalable Matrix Extension) ni imuse ni apejọ.
  • Atilẹyin fun ISA V68/HVX ti ṣafikun si ẹhin fun faaji Hexagon.
  • Ẹhin x86 ti ni ilọsiwaju atilẹyin fun awọn ilana AMD Zen 3.
  • Atilẹyin ti a ṣafikun fun GFX1013 RDNA2 APU si ẹhin AMDGPU.
  • Libc ++ tẹsiwaju lati ṣe awọn ẹya tuntun ti awọn iṣedede C ++ 20 ati C ++ 2b, pẹlu ipari ti ile-ikawe “awọn imọran”. Atilẹyin ti a ṣafikun fun std :: eto faili fun Syeed Windows ti o da lori MinGW. Awọn faili akọsori yapa , Ati . Aṣayan kikọ ti a ṣafikun LIBCXX_ENABLE_INCOMPLETE_FEATURES lati mu awọn faili akọsori kuro pẹlu iṣẹ ṣiṣe ti ko ni imuse ni kikun.
  • Awọn agbara ti LLD linker ti ni ilọsiwaju, ninu eyiti atilẹyin fun awọn ilana Big-endian Aarch64 ti wa ni imuse, ati pe Mach-O backend ti mu wa si ipo ti o fun laaye sisopọ awọn eto deede. Awọn ilọsiwaju ti o nilo lati ṣe asopọ Glibc ni lilo LLD.
  • IwUlO lvm-mca (Itupalẹ koodu Ẹrọ) ti ṣafikun atilẹyin fun awọn ero isise ti o ṣe awọn ilana ni aṣẹ (pipe opo gigun ti superscalar), gẹgẹbi ARM Cortex-A55.
  • Oluyipada LLDB fun pẹpẹ AArch64 n pese atilẹyin ni kikun fun Ijeri Atọka, MTE (MemTag, Ifaagun Tagging Memory) ati awọn iforukọsilẹ SVE. Awọn ofin ti a ṣafikun ti o gba ọ laaye lati di awọn afi si iṣẹ ipin iranti kọọkan ati ṣeto ayẹwo ti ijuboluwole nigbati o n wọle si iranti, eyiti o gbọdọ ni nkan ṣe pẹlu tag to pe.
  • LLDB n ṣatunṣe aṣiṣe ati iwaju iwaju fun ede Fortran - Flang ti ni afikun si awọn apejọ alakomeji ti ipilẹṣẹ nipasẹ iṣẹ akanṣe naa.

orisun: opennet.ru

Fi ọrọìwòye kun