Dimittis de LLVM 15.0 compilator suite

Post sex menses evolutionis, emissio LLVM 15.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 15.0:

  • Ad systemata in architectura x86 fundata, vexillum "-fzero-reges" adhibitum adiectum est, quo cavet ut omnes CPU registri in munere usi sint, antequam e munere redeundi potestatem redeundi ad nihilum redundet. Haec optio sinit te tueri contra ultrices a functionibus notitias et numerum caudices aptas ad aedificandum ROP reducere (Programma Rediens Programming) gadgetes in rebus ab circiter XX%.
  • Randomization memoriae positio structurarum pro C codice effecta est, quae implicat extractionem notitiarum e structurarum in eventu abusionis vulnerabilium. Randomization in interdum utens in randomize_layout et no_randomize_layout attributa vertitur, et semen utendo "-frandomize-layout-semen" vel "-frandomize-layout-semen-file" postulatur.
  • Adiecit "-fstrict-flex-arrays" flag ", cum quibus fines pro flexibili ordinata in structurarum elemento moderari potes (Membra flexibilia Array, ordinata infinitae magnitudinis in fine structurae). Cum positi ad 0 (default), elementum ultimum structurae cum ordine semper discursum est ut ordinata flexibili, 1 - solae magnitudinum [], [0] et [1] processus flexibilium sicut ordinatae, 2 - magnitudinum tantum. [] et [0] quasi flexa acies discursum est.
  • Addidit subsidium experimentale pro lingua HLSL (High-Level Shader Language) in DirectX ad usum scribendi shaders.
  • Addidit "-Warray-parameter" qui monens de earundem functionibus cum argumenti repugnantibus declarationibus, quae cum vestit fixa-et variabili longitudine coniunguntur.
  • Improved compatibility with MSVC. Addidit subsidium "#pragma functionis" (instruit compilator ad generandum functionem vocationis loco expansionis lineae) et "#pragma alloc_text" (nomen sectionis cum codice functionis definit) dummodo in MSVC. Auxilia addita pro vexillis MSVC-compatible /JMC et /JMC.
  • Opus futurum C2X et C ++ 23 signa sustentare pergit. Pro lingua C, haec adducuntur: noreturnum attributum, keywords falsae et verae, _BitInt(N) typus pro integris datae profunditatis frenum, *_WIDTH macros, u8 praepositionem pro UTF-8 characteribus inscriptam.

    Pro C++, sequentia adducuntur: moduli bus, ABI, solitudo membrorum functionis, iussit initializationem dynamicam variabilium non localium in modulis, index multidimensionalium operariorum, auto(x), variabilium non litteralium, gata et pittacia in functionibus ut constexpr declarata. sequentia, limitata effugia, nominata effugia ingenia.

  • Facultates cum OpenCL et OpenMP auxilio auctae sunt. Auxilia additae pro extensione cl_khr_subgroup_rotatis OpenCL.
  • Ad architecturae x86, tutelae contra vulnerabilitates in processoribus additae sunt, quas speculativas mandatorum executiones post absolutas operationes saliendi progressus est. Problema occurrit ex processui instructionum prae-emptivo statim sequentes ramum instructionem in memoria (SLS, Linea Speculationis rectae). Ad tutelam recipiendam, proponitur optio "-mharden-sls=[nemo|omnibus||indirect-jmp]" proponitur.
  • Pro suggestis quae extensionem SSE2 sustinent, typus _Float16 adiectum est, quod typum fluitantis aemulatur in casu defectus subsidii instructionum AVX512-FP16.
  • Vexillum "-m[no-]rdpru" adiecit ad refrenandum usum instructionis RDPRU, initium cum AMD Zen2 processoribus suffultum.
  • Addidit vexillum "-mfunction-retum=thunk-externum" ad vulnerabilitatem retbleedis tuendam, quae opera addit sequentia instructionum quae implicationem speculativae exsecutionis mechanismi pro ramis obliquis interclusit.

Clavis rerum novarum in LLVM 15.0:

  • Subsidiis additis Cortex-M85 CPU, Armv9-A, Armv9.1-A et Armv9.2-A architecturae, Armv8.1-M PACBTI-M extensiones.
  • Repressum experimentum pro DirectX additum est quod sustinet DXIL (DirectX Language) forma adhibita pro DirectX shaders. Tergum datur explicatio "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" parameter in coetu.
  • Libc++ pergit efficere novas lineas C++20 et C++2b signarum, in quibus completur exsequendae bibliothecae "formae" et propositae versionis experimentalis bibliothecae "range".
  • Improved backends for x86, PowerPC and RISC-V architectures.
  • Facultates LLD ligatoris et LLDB debugger auctae sunt.

Source: opennet.ru