Sakin saitin mai tarawa na LLVM 16.0

Bayan watanni shida na haɓakawa, an gabatar da ƙaddamar da aikin LLVM 16.0 - kayan aikin GCC mai jituwa (masu haɗawa, masu haɓakawa da janareta na lamba) waɗanda ke tattara shirye-shirye cikin matsakaicin bitcode na RISC-kamar umarnin kama-da-wane (ƙananan injin kama-da-wane tare da Multi-matakin inganta tsarin). Za'a iya canza lambar ƙirar ƙira ta amfani da mai tara JIT zuwa umarnin injin kai tsaye a lokacin aiwatar da shirin.

Babban haɓakawa a cikin Clang 16.0:

  • Tsohuwar ma'aunin C ++/ObjC++ shine gnu++17 (a da gnu++14), wanda ke nufin fasalin C++17 tare da kari na GNU ana tallafawa ta tsohuwa. Don dawo da halayen da suka gabata, zaku iya amfani da zaɓin "-std=gnu++14".
  • Ayyukan ci-gaba masu alaƙa da ma'aunin C++20:
    • Yanayi maras muhimmanci na musamman na memba,
    • kama tsarin ɗaure a cikin ayyukan lambda,
    • Ma'aikacin daidaito a cikin maganganu,
    • Zabin don ƙetare kalmar keyword a wasu mahallin,
    • Ingantacciyar ƙaddamarwar haɗakarwa a cikin baka ("Aggr(val1, val2)").
  • An aiwatar da sifofin da aka ayyana a ma'aunin C++2b na gaba:
    • An ba da izinin sanya takalmi a ƙarshen maganganun mahalli,
    • mai aiki a tsaye(),
    • mai aiki a tsaye[],
    • An tabbatar da dacewa da nau'in char8_t,
    • An faɗaɗa kewayon haruffan da aka yarda don amfani a cikin "\N{...}".
    • Ƙara ikon yin amfani da masu canji da aka ayyana a matsayin "a tsaye constexpr" a cikin ayyukan da aka ayyana azaman constexpr.
  • An aiwatar da fasalulluka da aka ayyana a cikin madaidaicin C2x na gaba:
    • Don musaki gargaɗin "-Wunused-label", an ba da izinin yin amfani da sifa ta "[[mai yiwuwa_unused]]".
    • An ba da izinin sanya takalmi a ko'ina a cikin maganganun mahalli,
    • Ƙara nau'in nau'in nau'i da nau'in_unqual operators,
    • Wani sabon nau'in nullptr_t da nullptr akai-akai don ayyana masu nuni mara kyau waɗanda zasu iya canzawa zuwa kowane nau'in mai nuni kuma suna wakiltar bambance-bambancen NULL wanda baya ɗaure ga nau'ikan lamba da wofi.
    • A cikin yanayin C2x, ana ba da izinin kiran macro va_start tare da adadin mahawara (variadic).
  • A cikin yanayin yarda da C99, C11, da C17, tsoffin zaɓuɓɓukan "-Wimplicit-function-bayani" da "-Wimplicit-int" yanzu suna haifar da kuskure maimakon faɗakarwa.
  • Amfani da "void *" kai tsaye (misali "void func(void *p) {*p; }") a yanayin C++ yanzu yana haifar da kuskure, kama da ISO C++, GCC, ICC da MSVC.
  • Ƙayyadaddun filaye a matsayin operands umarni (misali "__asm ​​​​{mov eax, s.bf }") a cikin tsarin haɗin layi na layi na Microsoft yanzu yana haifar da kuskure.
  • Ƙara bincike don kasancewar sifofi daban-daban da ƙungiyoyi tare da sunaye iri ɗaya a cikin sassa daban-daban.
  • An faɗaɗa iyawar da ke da alaƙa da tallafin OpenCL da OpenMP. Ingantattun bincike don samfuran C++ da aka yi amfani da su a cikin muhawarar kwaya ta OpenCL. Ingantattun tallafin toshe jerin gwano don AMDGPU. Ana ƙara sifa ta nounwind a fakaice ga duk ayyuka. Ingantattun tallafi don ginanniyar ayyuka.
  • An ƙara ikon yin amfani da madaidaicin mahalli na CLAG_CRASH_DIAGNOSTICS_DIR don ayyana kundin adireshi wanda a cikinsa aka adana bayanan gano ɓarna.
  • An sabunta tallafin Unicode zuwa ƙayyadaddun Unicode 15.0. Ana ba da izinin wasu alamomin lissafi a cikin masu ganowa, kamar "₊" (misali "xₖ₊₁ biyu").
  • Ƙara goyon baya don loda fayilolin sanyi da yawa (an fara ɗora fayilolin sanyi na tsoho, sannan waɗanda aka ƙayyade ta hanyar "-config=", wanda yanzu za'a iya ƙayyade sau da yawa). Canza tsohuwar odar lodi na fayilolin sanyi: clang yayi ƙoƙarin loda fayil ɗin farko - .cfg, kuma idan ba a same shi ba yana ƙoƙarin loda fayiloli biyu .cfg kuma .cfg. Don musaki fayilolin daidaitawa ta tsohuwa, an ƙara tutar “--no-default-config”.
  • Don tabbatar da sake ginawa, yana yiwuwa a maye gurbin ƙimar kwanan wata da lokaci na yanzu a cikin __DATE__, __TIME__ da __TIMESTAMP__ macros tare da lokacin da aka kayyade a cikin canjin muhalli SOURCE_DATE_EPOCH.
  • Don bincika kasancewar ginanniyar ayyuka (builtin) waɗanda za a iya amfani da su a cikin mahallin madaidaicin, an ƙara macro "__has_constexpr_builtin".
  • An ƙara sabon tuta mai haɗawa "-fcoro-aligned-allocation" don rabon firam ɗin coroutine mai daidaitacce.
  • Tutar "-fstrict-flex-arrays=" tana aiwatar da goyon baya ga mataki na uku na tabbatar da sassauƙan abubuwa masu sassauƙa a cikin sifofi (Membobin Array masu sassaucin ra'ayi, tsararru na girman iyaka a ƙarshen tsarin). A mataki na uku, kawai girman "[]" (misali "int b[]") ana bi da shi azaman tsararru mai sassauƙa, amma girman "[0]" (misali, "int b[0]") ba ba.
  • An ƙara tuta "-fmodule-output" don ba da damar haɗa nau'i-nau'i-ɗaya don daidaitattun kayayyaki na C++.
  • An ƙara yanayin "-Rpass-analysis=stack-frame-layout" don taimakawa gano matsaloli tare da shimfidar firam ɗin tari.
  • An ƙara sabon sifa __ sifa __((version_version("cpu_features"))) da kuma tsawaita aikin sifa __siffa__((target_clones("cpu_features1","cpu_features2",...)))) don zaɓar takamaiman nau'ikan fasalulluka da AArch64 ya bayar. CPUs.
  • An faɗaɗa kayan aikin bincike:
    • Ƙararrawar faɗakarwa "-Wsingle-bit-bit-filin-constant-constant-constant" don gano yankewa a fakaice lokacin sanya ɗaya zuwa filin bit-bit da aka sa hannu.
    • An faɗaɗa bincike-binciken ɓangarorin da ba a buɗe ba.
    • An ƙara "-Wcast-function-type-type" da "-Wincompatible-function-pointer-types-strict" gargadi don gano matsalolin da za a iya samu tare da nau'in simintin aiki.
    • Ƙara bincike don amfani da kuskure ko sunaye na ƙirar ƙira a cikin tubalan fitarwa.
    • Ingantattun gano mahimman kalmomin "auto" a cikin ma'anar.
    • Aiwatar da gargaɗin "-Winteger-overflow" ya ƙara bincika ƙarin yanayin da ke haifar da ambaliya.
  • Aiwatar da tallafi don tsarin tsarin koyarwa na LoongArch (-march = loongarch64 ko -march=la464), wanda aka yi amfani da shi a cikin na'urori na Loongson 3 5000 da aiwatar da sabon RISC ISA, mai kama da MIPS da RISC-V.

Mabuɗin sabbin abubuwa a cikin LLVM 16.0:

  • An ba da izinin lambar LLVM don amfani da abubuwan da aka ayyana a ma'aunin C++17.
  • An haɓaka buƙatun muhalli don gina LLVM. Ya kamata kayan aikin ginawa su goyi bayan ma'aunin C++17, watau. Don ginawa, kuna buƙatar aƙalla GCC 7.1, Clang 5.0, Apple Clang 10.0 ko Visual Studio 2019 16.7.
  • Baya ga gine-ginen AArch64 yana ƙara goyan baya ga Cortex-A715, Cortex-X3 da Neoverse V2 CPUs, mai tarawa don RME MEC (Tsarin ɓoye ɓoyayyiyar ƙwaƙwalwar ajiya), haɓakar Armv8.3 (Lambar hadaddun) da Aiki Multi Versioning.
  • A cikin bangon baya don gine-ginen ARM, an dakatar da tallafi ga dandamalin manufa na Armv2, Armv2A, Armv3 da Armv3M, wanda ba a ba da garantin ƙirƙira ingantaccen lambar ba. Ƙara ikon samar da lamba don umarni don aiki tare da lambobi masu rikitarwa.
  • Ƙarshen baya don gine-ginen X86 ya kara da goyon baya ga tsarin koyarwar koyarwa (ISAs) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT. Ƙara tallafi don RDMSRLIST, RMSRLIST da umarnin WRMSRNS. Zaɓuɓɓukan aiwatarwa "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids" da "-mcpu=grandridge".
  • Ƙara goyan bayan hukuma don dandalin LoongArch.
  • Ingantattun abubuwan baya don MIPS, PowerPC da RISC-V gine-gine
  • Ƙara goyon baya don gyara 64-bit executables don gine-ginen LoongArch zuwa LLDB debugger. Ingantattun sarrafa alamun gyara kuskuren COFF. Samar da tacewa kwafin DLLs a cikin jerin kayan aikin Windows da aka ɗora.
  • A cikin ɗakin karatu na Libc ++, babban aikin ya mayar da hankali ga aiwatar da tallafi don sababbin siffofi na C ++ 20 da C ++ 23.
  • Mai haɗin LDD yana da mahimmanci yana rage lokacin haɗin kai ta hanyar daidaita sikanin ƙaurawar adireshi da ayyukan ƙaddamar da sashe. Ƙara goyon baya don matsawa sashe ta amfani da algorithm na ZSTD.

source: budenet.ru

Add a comment