Bayan watanni shida na ci gaba, an gabatar da ƙaddamar da aikin LLVM 19.1.0, kayan aiki masu tasowa (masu tarawa, masu haɓakawa da masu samar da lambar) waɗanda ke tattara shirye-shirye a cikin matsakaicin bitcode na RISC-kamar umarnin kama-da-wane (ƙananan na'ura mai mahimmanci tare da Multi-matakin na'ura. -tsarin inganta matakin matakin). Za'a iya canza lambar ƙirar ƙira zuwa lambar injin don dandamalin da aka bayar ko mai tarawa JIT don samar da umarnin injin kai tsaye yayin aiwatar da shirin. Dangane da fasahar LLVM, aikin yana haɓaka mai haɗawa Clang, wanda ke tallafawa yarukan shirye-shirye C, C++ da Manufar-C. An fara daga reshe na ƙarshe, aikin ya canza zuwa wani sabon tsari don samar da lambobi, bisa ga abin da ake amfani da sifili saki ("N.0") a cikin tsarin ci gaba, kuma an ba da sigar farko ta barga tare da lambar "N". .1".
Abubuwan haɓakawa a cikin Clang 19 sun haɗa da:
- Ƙarin fasalulluka da aka ayyana a cikin C-standard C23:
- goyan baya don amfani da ƙayyadaddun ƙididdiga don ayyana abubuwa;
- macros INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX da LDBL_NORM_MAX a cikin float.h;
- tsarin "#embed" don haɗa albarkatun binary;
- rubuta char8_t don kirtani da haruffa a cikin UTF-8.
- An tabbatar da aiwatar da duk fasalulluka da aka ayyana a ma'aunin C++17. Mataki na ƙarshe shine don ba da damar goyan baya ga abubuwa don daidaita sigogin samfuri tare da mahawara masu jituwa, waɗanda aka kashe ta tsohuwa saboda abubuwan da suka dace.
- A cikin yanayin C++14, ana kunna goyan bayan aikin sharewa tare da ma'amala mai girma ta tsohuwa,
- Ƙarin fasalulluka masu alaƙa da ma'aunin C++20: ginanniyar ayyuka __is_layout_compatible da __is_pointer_interconvertible_base_of; cikakken goyon baya ga maganganu don shigo da kayayyaki; goyan bayan farko don gano atomatik nau'ikan gardamar samfuri na aji don nau'in laƙabi da aka ƙirƙira ta amfani da samfuri (CTAD don Samfurin Alaƙa).
- Ƙarin fasalulluka masu alaƙa da ma'aunin C++20: haɓaka tsawon rayuwar abubuwa na wucin gadi a cikin madaukai waɗanda ke jujjuya ta cikin jeri; zato masu iya canzawa; sassauta ƙuntatawa na constexpr da kuma kashe binciken "-Winvalid-constexpr"; goyan bayan ayyuka masu tsayuwa da bayyane na memba na abubuwa tare da lissafin ma'auni iri ɗaya.
- Ƙarin fasalulluka masu alaƙa da ma'auni na C ++ 2c na gaba (C++ 26): ƙaddamar da fakitin sigogi a cikin samfuri; syntax'= share("dalilin"); halaye don ɗaurin da aka tsara; haramcin daure gulmar da aka dawo da ita zuwa ƙimar wucin gadi; ƙananan madaukai marasa iyaka ba tare da wani hali mara iyaka; nuna kuskure lokacin share mai nuni zuwa nau'in da bai cika ba; amfani da ƙuntatawa a cikin maganganun ninkaya (“…”).
- An ƙara sabbin tutocin masu tarawa:
- "-fsanitize=immplicit-bitfield-conversion" don bincika gaɓoɓin ɓarna da kuma sa hannu a juyawa yayin aiki tare da bitfields.
- "-fsanitize=conversion-integer-conversion" don bincika jujjuyawar juzu'i.
- "-Wmissing-signed-filin-initializers" don gano abubuwan fara filin da suka ɓace.
- "-fexperimental-modules-reduced-bmi" don ba da damar rageccen BMI (Interface Module Binary) don C++20 mai suna modules, yana ba da damar yin amfani da ma'auni na C++.
- "-fexperimental-late-parse-attribute" don ba da damar yin la'akari da sifofi a cikin takamaiman mahallin, kamar ƙidaya_by sifa.
- "-fseparate-mai suna-sections" don ƙirƙirar sassa na musamman don alamomin duniya a cikin sassan musamman masu suna.
- "-fms-define-stdc" don dacewa da STDC tare da MSVC.
- "-Wc++23-compat" da "-Wc++2c-compat" ƙungiyoyin gargaɗi ne don sauƙaƙa ƙaura zuwa C++23 da C++26.
- "-fdisable-block-signature-string" don kashe tsarar igiyar sa hannu don tubalan.
- "-fpointer-tbaa" don yiwa alamar da ba ta dace ba ta amfani da nazarin laƙabi na nau'in (TBAA).
- An ƙara sabbin sifofi: sized_by, counted_by_or_null, nonblocking, nonallocating, blocking, allocating, sized_by_or_null, amdgpu_max_num_work_groups (x, y, z).
- Ƙara sabbin ayyukan ginanniyar: __builtin_readsteadycounter, __builtin_popcountg, __builtin_clzg, __builtin_ctzg, __is_bitwise_cloneable.
- An faɗaɗa kayan aikin bincike da a tsaye, an ƙara sabbin bincike.
Mabuɗin sabbin abubuwa a cikin LLVM 19:
- A cikin bangon baya don gine-ginen RISC-V, goyon bayan gwaji don Zabha (ayyukan ƙwaƙwalwar ajiyar atomic), Ssqosid, Ssnpm, Smnpm, Smmpm, Sspm da Supm kari (ta amfani da masks mai nuna alama), Zba, Zbb, Zbs an kara. An daidaita tallafin Ztso, Zabha, Zaamo da Zalrsc.
- Baya ga gine-ginen AArch64 ya kara tallafi ga Cortex-R82AE, Cortex-A78AE, Cortex-A520AE, Cortex-A720AE, Cortex-A725, Cortex-X925, Neoverse-N3, Neoverse-V3 da Neoverse-V3AE masu sarrafawa.
- An ƙara goyan bayan na'urar sarrafa Cortex-R52+ zuwa ga bayan gine-ginen ARM.
- Ingantattun abubuwan baya don X86, LoongArch, WebAssembly, MIPS, PowerPC da AMDGPU gine-gine.
- An faɗaɗa iyawar mai haɗin LLD. An ƙara sabbin nau'ikan ƙaura: CREL, GNU_PROPERTY_AARCH64_FEATURE_PAUTH, R_AARCH64_AUTH_ABS64 da R_AARCH64_AUTH_RELATIVE. Ƙara "--compress-sections" siga ={babu,zlib,zstd}[:level]" don zaɓar sashin matsi algorithm.
- Laburaren Libc++ ya ci gaba da aiwatar da iyawar ka'idojin C++20, C++23 da C++26.
- Daga 3.6 zuwa 8, an ƙara buƙatun sigar Python da ake buƙata don gina LLVM.
source: budenet.ru
