Dimittis de LLVM 22 compilator suite

Post sex menses evolutionis, LLVM 22.1.0 divulgata est. Instrumenta (compilatores, optimizatores, et generatores codicis) explicat quae programmata in codicem intermedium instructionum virtualium similium RISC (machina virtualis humilis gradus cum systemate optimizationis multi-gradus) compilant. Pseudocodex generatus in codicem machinalem pro data suggestu destinato converti potest vel a compilatore "just-in-time" (JIT) ad instructiones machinales directe generandas durante executione programmatis adhiberi potest. Innixus technologiarum LLVM, proiectum compilatorem Clang explicat, linguas programmandi C, C++, et Objective-C sustinens. Incipiens a ramo 18.x, proiectum ad novum schema numerationis versionum transiit, secundum quod emissio 0 ("N.0") durante evolutione adhibetur, et prima versio stabilis "N.1" numeratur.

Emendationes in Clang 22 includuntur:

  • Additum est subsidium pro tesseris allocationis memoriae (Allocation Tokens) ad operationes allocationis memoriae peractas per functiones ut malloc cum identificatore unico notandas. Tesserae allocationis permittunt structuram informationis heap, simplificationem detectionis effluxionis memoriae, et facultatem creationis coacervationis rerum secundum propositum vel exempla modificationis (e.g., separando data "calida" a "frigidis"). Ad permittendum, utere vexillo "-fsanitize=alloc-token".
  • Proprietates ad linguam C pertinentes:
    • Prima specificatio mechanismum executionis dilatae "differendae" definita iam implementata est, permittens actiones exsequi cum ambitus praesens exit. Vexillum "-fdefer-ts" additum est ut auxilium "differendi" permittatur.
    • Functio incorporata __builtin_stack_address() addita est, functionem similem in GCC imitans. Haec functio inscriptionem acervi reddit, separans aream acervi functionis currentis quae __builtin_stack_address() vocavit et functiones subsequentes quas vocat.
  • Facultates quae pro futuro norma C2y excogitantur:
    • Additum est subsidium pro cyclis nominatis, quod permittit tibi nomina cyclis et enuntiationibus "switch" assignare, quae in enuntiationibus "break" et "continue" specificari possunt ut explicite definiatur cyclus ex quo exire. `outior:` `for (int i = 0; i < IK; ++ i) {` `for (int j = 0; j < JK; ++ j) {` `perge; // vade ad CONT1` `perge` `outior; // vade ad CONT2` `/ CONT1` `} // CONT2` `}`
    • Implementatio macroi "__COUNTER__" inclusi, ad nomina identificatoria singularia generanda destinati, amplificata et in normam inclusa est. Finis 2147483647 vocationum ad hanc macrom constitutus est; hoc limite excedendo errorem generabitur.
    • Monitum (-Wstatic-in-inline) sublatum est cum functiones staticae vel variabiles intra functiones ut "extern inline" declaratas adhiberentur.
  • Facultates in norma C23 C definitae:
    • Fasciculus capitis `float.h` nunc macros `FLT_SNAN`, `DBL_SNAN`, et `LDBL_SNAN` sustinet, quae valores NaN signalatos (exceptionem causantes cum in operationibus arithmeticis adhibentur) pro typis `float`, `double`, et `long double` implementant.
    • Correctus est error quo genera diversa sine nomine, si eadem spatia haberent, intra eandem unitatem translationis tamquam compatibilia habebantur.
    • Vexillum "-MG" ad ignoranda fascicula inscriptionum absentia in perscrutatione dependentiarum ad instructiones "#embed" extensum est et nunc errorem "fasciculus non inventus" supprimit cum fasciculus in instructione "#embed" specificatus deest.
  • Proprietates ad C++ pertinentes:
    • Facultas utendi nexibus structuratis in contextu "constexpr", ut in specificatione C++2c (C++26) elaborata est, addita est. Hoc significat referentias ad expressiones constantes nunc ipsas expressiones constantes esse posse. Auxilium pro indicibus et structuris simplicibus implementatum est (tuplae nondum sustentantur). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • Ut norma C++20 postulat, restrictiones nunc in formam normalem convertuntur antequam probantur, quod accuratiores nuntia diagnostica et rectam tractationem errorum substitutionis in argumentis exemplaribus, quae tantum in concept-idibus adhibentur, permittit.
    • Familia functionum intrinsecarum "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" addita est ad explorandum utrum operatores comparationis "<", ">", "<=", et ">=" ex operatore "<=>" synthesizati sint.
    • Parametrus "-Wincompatible-pointer-types" mutatus est ut errorem loco admonitionis exhibeat. Ut ad priorem rationem revertas, optione "-Wno-error=incompatible-pointer-types" utere.
  • Functiones incorporatae additae sunt: ​​__builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, et __builtin_dedup_pack. Exempli gratia, builtin_dedup_pack permittit ut duplicata ex indice generum removeas: utens MyTypeList = TypeList<__builtin_dedup_pack. ...>; // typus inde ortus erit TypiLista
  • Cum mores indefiniti cum UBSan (-fsanitize=undefined -fsanitize-trap=undefined) corriguntur, notitiae causae erroris nunc in informatione corrigendi generata includuntur. Vexillum "-fsanitize-debug-trap-reasons" additum est ad gradum singularitatis in informatione erroris specificandum. Ad "basic" pro descriptionibus generalibus (e.g., "Additio numerorum integrorum redundans") et ad "detailed" (detaliatum) poni potest ad informationes singulares includendas (e.g., "additio numerorum integrorum signatorum redundans in 'a + b'").
  • Addidit nova vexilla compilator:
    • "-f[no-]sanitize-debug-trap-reasons" ad moderandum utrum causae exceptionis interceptionis in informationibus debug includantur cum compilatur modo "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", et "-fsanitize-alloc-token-extended" ad tesseras allocationis memoriae administrandas adhibentur.
    • "-fmatrix-memory-layout" ad ordinationem memoriae generum matricum moderandam (e.g. columna-major pro columna-major, row-major pro row-major).
  • Functiones nunc attributum "malloc_span" habent, simile attributo malloc sed applicabile functionibus quae structuras similes span reddunt, continentes indicem et campum cum magnitudine vel indicem ad finem blocci.
  • Attributum "modular_format" additum est ad implementationem statice coniunctam functionis printf tempore coniunctionis dynamiciter eligendam.
  • Instrumenta diagnostica et analysis statica amplificata sunt, novae probationes additae sunt (plures duodecim emendationes ad diagnosticam pertinentes).
  • Intrinseca addita extensionum SSE, AVX, et AVX512 in partem posteriorem X86 addita sunt. Modi constructionis additi sunt pro CPU Intel in microarchitecturis Wildcat Lake (-march=wildcatlake) et Nova Lake (-march=novalake) fundatis.
  • Pars administrativa AArch64 nunc sustinet processores Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), et Arm C1-Ultra (c1-ultra). Functiones internae additae sunt pro instructionibus FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], et FCVTA[US]. Sustentatio Multi-Versionum Functionum (FMV) stabilizata est. Usoribus nunc potest prioritatem versionum functionum diversarum superare.
  • Subsidium architecturae LoongArch32 (LA32R, LA32S) additum est.
  • Receptacula administrativa emendata pro architecturis ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, et PowerPC.

Source: opennet.ru

Emptum certos hospites pro locis cum praesidio DDoS, VPS VDS servers πŸ”₯ Eme hospitium interretiale fidum cum praesidio DDoS, servitores VPS VDS | ProHoster