Dimittis de LLVM 16.0 compilator suite

Post sex menses evolutionis, emissio LLVM 16.0 propositi exhibita est - instrumentum instrumenti GCC compatibile (compilatores, optimizers et codicem generantium) qui programmata componit in bitcode mediae instructionis RISC-similis virtualis (machinae virtualis humili cum gradu. multi-gradu optimization systema). Pseudocode generatum converti potest utens compilator JIT in instructiones machinae directe tempore programma executionis.

Emendationes maiores in Clang 16.0:

  • Default C++/ObjC++ vexillum est gnu++17 (antea gnu++14), quod significat C++17 lineamenta cum GNU extensiones sustentantur defalta. Ad mores priores reverti, optione "-std=gnu++14" uti potes.
  • Effigies provectae lineae ad C++20 vexillum pertinentia:
    • Conditionaliter munus speciale exiguum membrum;
    • ligaturas in lambda functiones capientes structas;
    • Aequalitas operatrix in medio vultuum;
    • Optio omittitur typus nomen keyword in quibusdam adiunctis;
    • Valid aggregatum initialization in parenthesi ("Agr(val1, val2)").
  • Lineamenta definita sunt in futuro C++2b norma effecta:
    • Titulos in fine vocum compositorum ponere licet;
    • static operator ()
    • static operator[];
    • Compatibilitas cum char8_t generis conservatur;
    • Circumspectio notarum permissa est ad usum "\N{...}" expansum est
    • Addidit facultatem variabilium uti declaravit "status constexpr" in functionibus sicut constexpr declaratus.
  • Lineamenta in futuro C-vexillo C2x definita effecta sunt:
    • Ut inactivandi "-Wunused-label" admonitionem "[[fortasse_unused]]" attributum licet applicari pittaciis.
    • Licet uspiam pittacia collocare in vocibus compositis;
    • Adiectae sunt typof et operariorum typof_unqual;
    • Novum genus nullptr et nullptr constans ad nullum argumenta definiendum, qui ad quodvis genus monstratorem convertere possit, ac varia- tionem nullarum figurarum integrarum et irritarum repraesentare non tenetur.
    • In C2x modo, tortor va_start cum variabilium numerorum argumentorum (variadico) appellando, permittitur.
  • In C99, C11, et C17 modi obsequii, optiones defectus "-Wimplicit-munus-declarationis" et "-Wimplicit-int" nunc errorem pro admonitione producunt.
  • Usus indirectus "vacui *" (v. g. " func inanis (*p) { *p; }") in C++ modo errorem generat, similis ISO C++, GCC, ICC et MSVC.
  • Bitfields specificans cum instructione operandorum (exempli gratia "__asm ​​{mov eax, s.bf}") in Microsoft inlineandi conventus caudices nunc errorem generat.
  • Diagnostics adiecit ad praesentiam diversorum structurarum et unionum cum eisdem nominibus in diversis modulis.
  • Facultates cum OpenCL et OpenMP auxilio auctae sunt. Diagnostica meliora pro C++ templates in OpenCL nucleo argumentorum adhibita. Improved queuing block support for AMDGPU. Nomen attributum implicite ad omnia munera additur. Improved support for built-in functions.
  • Facultatem addidit utendi CLANG_CRASH_DIAGNOSTICS_DIR environment variabilis ad indicem definiendum in quo ruina diagnostica data salvatur.
  • Unicode firmamentum renovatum est ad specificationem 15.0 Unicode. Quaedam symbola mathematica in identificantibus permittuntur, ut "β‚Š" (exempli gratia duplex xβ‚–β‚Šβ‚).
  • Auxilia additae ad onerandas lima plures configurationes (primum fasciculi defaltae configurationis onerati, et deinde signatae per "-config=" vexillum, quod nunc multiplex temporibus definiri potest. Mutavit default loading ordo configurationis files: sonus conatur onerare tabella primum - .cfg, et si non reperit, duas tabulas onerare conatur .cfg et .cfg. Ut inactivandi oneratisque fasciculis configuratione per defaltam, "-no-default-mando" vexillum additum est.
  • Ad aedificationes iterabiles ut curet, reponere potest hodiernam diem ac tempus valores in __DATE__, __TIME__ et __TIMESTAMP__ macros cum tempore determinato in ambitu variabili in SOURCE_DATE_EPOCH.
  • Ad reprimendam praesentiam constructi in functionibus (builtin) quae in contextu constantium adhiberi possunt, tortor "__has_constexpr_builtin" adiectum est.
  • Novam compilationem vexillum "-fcoro-aligned-allocation" addidit ad destinatio corporis coroutini varius.
  • The "-fstrict-flex-arrays" vexillum instrumentum pro tertio gradu confirmationis elementorum flexibilium ordinatarum in structuris (Membra flexibilia ordinata, ordinatio magnitudinis indefinitae in fine structurae). In tertio gradu solum magnitudo "[]" (exempli gratia "int b[]") tractatur ut flexa ordinata, sed magnitudo "[0]" (exempli gratia "int b[0]") non est.
  • Vexillum "-fmodule-output" adiecit ut exemplar unius-phase compilationi unius-phasi exemplar pro modulorum C++ modulorum efficeret.
  • Addidit "-Rpass-analysis = acervus-frame-layout" modus ad problemata diagnosis adiuvandi cum ACERVUS artus layout.
  • Novam attributum __attribute((target_versionis("cpu_featurarum"))) et functionem attributi __attribute((target_clones("cpu_features1", cpu_features2",...))) eligere certas versiones notarum formarum ab AArch64 CPUs.
  • Instrumenta diagnostica expansa;
    • Monitum addidit "-Wsingle-bitfield-Constan-conversionem" ad truncationem implicitam detegendam, cum unam bitfield signatam unico attribuit.
    • Diagnostica de inexplicabilibus constexpr variabilibus dilatetur.
    • Addidit "-Wcast-munus-typum-strictum" et "-Wincompatible-munus-monstratorem-typorum-strictum" admonitiones ad cognoscendas difficultates potentiales cum functione generis mittentes.
    • Diagnostics addidit ad nomina modulorum falsa vel reservata adhibitis in caudices exportandis.
    • Improved detection of missing "auto" keywords in definitionibus.
    • Exsecutio "-Winteger-superflui" monitum adiecisse compescuit pro accessionibus adiunctis quae ad redundantiam ducunt.
  • Firmamentum ad LoongArch institutio architecturae (-march=loongarch64 vel -march=la464) adhibita est, in Loongson 3 5000 processuum adhibita et novo RISC ISA exsequendo, similes MIPS et RISC-V.

Clavis rerum novarum in LLVM 16.0:

  • LLVM codice elementis in C++17 vexillis definitis uti licet.
  • Ambitu requisita ad LLVM aedificandum aucta sunt. Instrumenta aedificandi iam vexillum C++17 sustentare debent, i.e. Condere, debes saltem GCC 7.1, Clang 5.0, Apple Clang 10.0 vel Visual Studio 2019 16.7.
  • Subscriptio architecturae AArch64 subsidia addit pro Cortex-A715, Cortex-X3 et Neoverse V2 CPUs, RME MEC convocator (Memoria Encryption Contextus), Armv8.3 extensiones (Number Complex) et Function Multi Versionis.
  • In architectura in tergum pro ARM, subsidium pro Armv2, Armv2A, Armv3 et Armv3M clypeum suggestorum discontinuum est, pro quo generatio recti codicis non praestatur. Facultatem adiecit generandi codicem ad instructiones operandi cum numeris complexis.
  • Subscriptio architecturae X86 addidit subsidia ad instructionem architecturae positae (ISAs) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT. Addidit subsidium RDMSRLIST, RMSRLIST et WRMSRNS instructionum. Optiones impleverunt "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=smaragdos", "-mcpu=sierraforest", "-mcpu=graniterapids" et "-mcpu=grandridge".
  • Publicum subsidium ad suggestum LoongArch addidit.
  • Improved backends for MIPS, PowerPC and RISC-V architectures
  • Addidit subsidium debugging 64 frenum executables pro architectura LoongArch ad LLDB debugger. Melior tractatio de symbolis Coff debug. Dum eliquare duplicata DLLs in numero Windows modulorum onustarum.
  • In bibliotheca Libc++, principale opus est ad effectum deducendi subsidium pro novis signis C++20 et C++23.
  • LDD nexus signanter tempus ligans reducit per parallelismum relocationem inscriptionis intuens et sectionem operationes initializationes. Addidit subsidium pressionis sectionis utens algorithmo ZSTD.

Source: opennet.ru