Famoahana ny suite compiler LLVM 15.0

Taorian'ny enim-bolana ny fampandrosoana dia atolotra ny famoahana ny tetikasa LLVM 15.0 - fitaovana mifanaraka amin'ny GCC (mpamorona, optimizer ary mpamorona kaody) izay manangona programa ho bitcode manelanelana amin'ny torolΓ lana virtoaly mitovy amin'ny RISC (milina virtoaly ambany misy rafitra fanamafisam-peo maromaro). Ny pseudo-code vokarina dia azo ovain'ny JIT compiler ho toromarika milina amin'ny fotoana hanatanterahana ny programa.

Fanatsarana lehibe amin'ny Clang 15.0:

  • Ho an'ny rafitra mifototra amin'ny maritrano x86, ny saina "-fzero-call-used-regs" dia nampiana, izay miantoka fa ny rejisitra CPU rehetra ampiasaina amin'ny fiasa dia averina amin'ny zero alohan'ny hamerenana ny fanaraha-maso avy amin'ny fiasa. Ity safidy ity dia ahafahanao miaro amin'ny fiparitahan'ny fampahalalam-baovao avy amin'ny fiasa ary mampihena ny isan'ny sakana mety amin'ny fananganana gadget ROP (Return-Oriented Programming) amin'ny fitrandrahana manodidina ny 20%.
  • Napetraka kisendrasendra ny fametrahana fitadidiana rafitra ho an'ny kaody C, izay manasarotra ny fitrandrahana angon-drakitra avy amin'ny rafitra raha sendra ny fitrandrahana ny vulnerabilities. Mandehana sy mamono ny randomize_layout sy no_randomize_layout ny toetra, ary mitaky ny fametrahana voa amin'ny fampiasana ny saina "-frandomize-layout-seed" na "-frandomize-layout-seed-file".
  • Nampiana "-fstrict-flex-arrays=" saina ", izay ahafahanao mifehy ny sisin-tany ho an'ny singa array mora ampiasaina amin'ny rafitra (Membres Array Flexible, karazana habe tsy voafaritra amin'ny faran'ny rafitra). Rehefa apetraka amin'ny 0 (default), ny singa farany amin'ny rafitra misy laharan-tariby dia karakaraina ho toy ny laharan-tseza mora foana, 1 - habe [], [0] ary [1] ihany no karakaraina ho laharan-tseza, 2 - habe ihany. [] sy [0] dia karakaraina toy ny laharan-kira moramora.
  • Fanampiana andrana natao ho an'ny fiteny C-tahaka ny HLSL (High-Level Shader Language), ampiasaina amin'ny DirectX amin'ny fanoratana shaders.
  • Nampiana "-Warray-parameter" mba hampitandremana momba ny asa mihoa-pefy miaraka amin'ny fanambarana tohan-kevitra tsy mifanentana mifandraika amin'ny laharan-tariby raikitra sy miovaova.
  • Nohatsaraina mifanaraka amin'ny MSVC. Fanampiana fanampiny ho an'ny "fizarana #pragma" (manome toromarika ny mpamoron-kira hamorona antso fa tsy fanitarana an-tserasera) ary "#pragma alloc_text" (mamaritra ny anaran'ny fizarana miaraka amin'ny kaody fiasa) omena ao amin'ny MSVC. Fanampiana fanampiny ho an'ny saina MSVC / JMC sy / JMC.
  • Mitohy ny asa hanohanana ny fenitra C2X sy C++23 ho avy. Ho an'ny fiteny C, ireto manaraka ireto dia ampiharina: ny toetra noreturn, ny teny fanalahidy diso sy marina, ny karazana _BitInt(N) ho an'ny isa amin'ny halalin'ny kely iray, *_WIDTH macros, ny prefix u8 ho an'ny tarehintsoratra voakodia UTF-8.

    Ho an'ny C ++, ireto manaraka ireto dia ampiharina: fampifangaroana mody, fitokanana ny mpikambana ao amin'ny ABI, baiko fanombohana mavitrika amin'ny variables tsy eo an-toerana ao amin'ny modules, operator index multidimensional, auto(x), variables tsy ara-bakiteny, goto ary labels amin'ny fiasa nambara ho constexpr .

  • Nitarina ny fahaiza-manao mifandraika amin'ny fanohanan'ny OpenCL sy OpenMP. Fanampiana fanampiny ho an'ny fanitarana OpenCL cl_khr_subgroup_rotate.
  • Ho an'ny maritrano x86, ny fiarovana dia nampiana amin'ny vulnerabilities amin'ny processeur vokatry ny fanombantombanana ny toromarika taorian'ny hetsika mitsambikina tsy misy fepetra. Mitranga ny olana noho ny fanodinana mialoha ny toromarika manaraka avy hatrany ny torolalan'ny sampana amin'ny fitadidiana (SLS, Straight Line Speculation). Mba ahafahana miaro, dia aroso ny safidy β€œ-mharden-sls=[tsy misy|ny|miverina|indirect-jmp]”.
  • Ho an'ny sehatra manohana ny fanitarana SSE2, dia nampiana ny karazana _Float16, izay alaina amin'ny fampiasana ny karazana mitsingevana raha toa ka tsy misy fanohanana ny torolΓ lana AVX512-FP16.
  • Nampiana saina "-m[no-]rdpru" hifehy ny fampiasana ny fampianarana RDPRU, tohana manomboka amin'ny processeur AMD Zen2.
  • Nampiana ny saina "-mfunction-return=thunk-extern" mba hiarovana amin'ny faharefoan'ny RETBLEED, izay miasa amin'ny alΓ lan'ny fampidirana toromarika izay manilika ny fandraisan'anjaran'ny rafitra famonoana tombantombana ho an'ny sampana ankolaka.

Fanavaozana lehibe ao amin'ny LLVM 15.0:

  • Fanohanana fanampiny ho an'ny rafitra Cortex-M85 CPU, Armv9-A, Armv9.1-A ary Armv9.2-A, fanitarana Armv8.1-M PACBTI-M.
  • Nampiana backend andrana ho an'ny DirectX izay manohana ny endrika DXIL (DirectX Intermediate Language) ampiasaina amin'ny shaders DirectX. Ny backend dia alefa amin'ny alΓ lan'ny famaritana ny "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" marika mandritra ny fivoriambe.
  • Libc++ dia manohy mampihatra ireo endri-javatra vaovao amin'ny fenitra C++20 sy C++2b, ao anatin'izany ny fahavitan'ny fampiharana ny tranomboky "format" sy ny dikan-teny andrana andrana amin'ny tranomboky "ranges".
  • Ny backends nohatsaraina ho an'ny maritrano x86, PowerPC ary RISC-V.
  • Nohatsaraina ny fahaizan'ny mpampitohy LLD sy ny debugger LLDB.

Source: opennet.ru

Add a comment