Rhyddhau'r gyfres casglu LLVM 13.0

Ar ôl chwe mis o ddatblygiad, cyflwynwyd rhyddhau'r prosiect LLVM 13.0 - pecyn cymorth sy'n gydnaws â'r GCC (casglu, optimeiddio a generaduron cod) sy'n crynhoi rhaglenni i god did canolradd o gyfarwyddiadau rhithwir tebyg i RISC (peiriant rhithwir lefel isel gyda a system optimeiddio aml-lefel). Gellir trosi'r ffuggod a gynhyrchir gan ddefnyddio casglwr JIT yn gyfarwyddiadau peiriant yn uniongyrchol ar adeg gweithredu'r rhaglen.

Gwelliannau yn Clang 13.0:

  • Wedi gweithredu cefnogaeth ar gyfer galwadau cynffon gwarantedig (galw is-reolwaith ar ddiwedd swyddogaeth, gan ffurfio dychweliad cynffon os yw'r is-reolwaith yn galw ei hun). Darperir cefnogaeth ar gyfer galwadau cynffon gwarantedig gan y briodwedd "[[clang::musttail]]" yn C++ a "__attribute__((musttail))" yn C, a ddefnyddir mewn datganiad "dychwelyd". Mae'r nodwedd yn caniatáu ichi weithredu optimeiddiadau trwy ddefnyddio cod mewn iteriad gwastad i arbed defnydd o stac.
  • Mae datganiadau "defnyddio" ac estyniadau clang yn darparu cefnogaeth ar gyfer diffinio priodoleddau arddull C++11 gan ddefnyddio'r fformat "[[]]".
  • Ychwanegwyd y faner "-Wreserved-identifier" i ddangos rhybudd pan fyddwch yn nodi dynodwyr neilltuedig yn y cod defnyddiwr.
  • Ychwanegwyd baneri "-Wunused-but-set-parameter" a "-Wunused-but-set-variable" i ddangos rhybudd os yw paramedr neu newidyn wedi'i osod ond heb ei ddefnyddio.
  • Ychwanegwyd baner "-Wnull-pointer-subtraction" i roi rhybudd os gallai'r cod gyflwyno ymddygiad heb ei ddiffinio oherwydd y defnydd o bwyntydd null mewn gweithrediadau tynnu.
  • Ychwanegwyd y faner "-fstack-usage" i gynhyrchu ffeil ".su" ychwanegol ar gyfer pob ffeil cod yn cynnwys gwybodaeth am faint fframiau stac ar gyfer pob swyddogaeth a ddiffinnir yn y ffeil sy'n cael ei phrosesu.
  • Mae math allbwn newydd wedi'i ychwanegu at y dadansoddwr statig - “sarif-html”, sy'n arwain at gynhyrchu adroddiadau ar yr un pryd mewn fformatau HTML a Sarif. Ychwanegwyd siec allocClassWithName newydd. Wrth nodi'r opsiwn "-analyzer-display-progress", mae amser dadansoddi pob swyddogaeth yn cael ei arddangos. Mae'r dadansoddwr pwyntydd smart (alpha.cplusplus.SmartPtr) bron yn barod.
  • Mae'r galluoedd sy'n gysylltiedig â chefnogaeth OpenCL wedi'u hehangu. Ychwanegwyd cefnogaeth ar gyfer estyniadau newydd cl_khr_integer_dot_product, cl_khr_extended_bit_ops, __cl_clang_bitfields a __cl_clang_non_portable_kernel_param_types. Mae gweithredu manyleb OpenCL 3.0 wedi parhau. Ar gyfer C, defnyddir manyleb OpenCL 1.2 yn ddiofyn oni bai bod fersiwn arall yn cael ei dewis yn benodol. Ar gyfer C++, mae cefnogaeth i ffeiliau gyda'r estyniad “.clcpp” wedi'i ychwanegu.
  • Mae cefnogaeth i gyfarwyddebau trawsnewid dolen (“#pragma omp unrol” a “#pragma omp deilsen”) a ddiffinnir ym manyleb OpenMP 5.1 wedi’i rhoi ar waith.
  • Ychwanegwyd opsiynau at y cyfleustodau fformat clang: SpacesInLineCommentPrefix i ddiffinio nifer y bylchau cyn sylwadau, IndentAccessModifiers, LambdaBodyIndentation a PPIndentWidth i reoli aliniad cofnodion, mynegiadau lambda a chyfarwyddebau rhagbrosesydd. Mae'r posibiliadau ar gyfer didoli'r cyfrif o ffeiliau pennawd (SortIncludes) wedi'u hehangu. Ychwanegwyd cefnogaeth ar gyfer fformatio ffeiliau JSON.
  • Mae cyfran fawr o wiriadau newydd wedi'u hychwanegu at dacluso lint.

Datblygiadau arloesol allweddol yn LLVM 13.0:

  • Ychwanegwyd yr opsiwn “-ehcontguard” i ddefnyddio technoleg CET (Technoleg Gorfodi Llif Rheoli Windows) i amddiffyn rhag cyflawni campau a adeiladwyd gan ddefnyddio technegau Rhaglennu sy'n Canolbwyntio ar Ddychwelyd (ROP) ar y cam trin eithriadau.
  • Mae'r prosiect debuginfo-test wedi'i ailenwi'n brofion traws-brosiect ac mae wedi'i gynllunio i brofi cydrannau o wahanol brosiectau, heb fod yn gyfyngedig i wybodaeth dadfygio.
  • Mae'r system gydosod yn darparu cefnogaeth ar gyfer adeiladu sawl dosbarthiad, er enghraifft, un gyda chyfleustodau, a'r llall gyda llyfrgelloedd i ddatblygwyr.
  • Yn y cefndir ar gyfer pensaernïaeth AArch64, mae cefnogaeth ar gyfer yr estyniadau Armv9-A RME (Estyniad Rheolaeth Realm) ac SME (Estyniad Matrics Scalable) yn cael ei weithredu yn y cydosodwr.
  • Mae cefnogaeth i ISA V68/HVX wedi'i ychwanegu at gefnlen pensaernïaeth Hecsagon.
  • Mae'r backend x86 wedi gwella cefnogaeth ar gyfer proseswyr AMD Zen 3.
  • Cefnogaeth ychwanegol ar gyfer GFX1013 RDNA2 APU i gefn AMDGPU.
  • Mae Libc ++ yn parhau i weithredu nodweddion newydd y safonau C++20 a C++2b, gan gynnwys cwblhau'r llyfrgell “cysyniadau”. Cefnogaeth ychwanegol ar gyfer system ffeiliau std:: ar gyfer platfform Windows MinGW. Ffeiliau pennyn wedi'u gwahanu , Ac . Ychwanegwyd opsiwn adeiladu LIBCXX_ENABLE_INCOMPLETE_FEATURES i analluogi ffeiliau pennyn gyda swyddogaeth heb ei gweithredu'n llawn.
  • Mae galluoedd y cysylltydd LLD wedi'u hehangu, lle mae cefnogaeth i broseswyr Aarch64 Big-endian yn cael ei weithredu, ac mae backend Mach-O wedi'i ddwyn i gyflwr sy'n caniatáu cysylltu rhaglenni rheolaidd. Yn cynnwys gwelliannau sydd eu hangen i gysylltu Glibc gan ddefnyddio LLD.
  • Mae cyfleustodau llvm-mca (Machine Code Analyzer) wedi ychwanegu cefnogaeth i broseswyr sy'n gweithredu cyfarwyddiadau mewn trefn (piblinell superscalar mewn trefn), fel yr ARM Cortex-A55.
  • Mae dadfygiwr LLDB ar gyfer y platfform AArch64 yn darparu cefnogaeth lawn ar gyfer Dilysu Pointer, MTE (MemTag, Estyniad Tagio Cof) a chofrestrau SVE. Ychwanegwyd gorchmynion sy'n eich galluogi i glymu tagiau i bob gweithrediad dyrannu cof a threfnu gwiriad o'r pwyntydd wrth gyrchu cof, y mae'n rhaid iddo fod yn gysylltiedig â'r tag cywir.
  • Mae dadfygiwr LLDB a blaen blaen yr iaith Fortran - Flang wedi'u hychwanegu at y gwasanaethau deuaidd a gynhyrchwyd gan y prosiect.

Ffynhonnell: opennet.ru

Ychwanegu sylw