Versioni i ri i LLVM 9.0 tashmë është lëshuar dhe këto janë lajmet e tij

LLVM

Pas gjashtë muajsh zhvillimi u prezantua lansimi i versionit të ri të projektit LLVM 9.0, i cili është një paketë e përputhshme me GCC (përpiluesit, optimizuesit dhe gjeneratorët e kodeve), i cili përpilon programe në një kod bit ndërmjetës të udhëzimeve virtuale të ngjashme me RISC (një makinë virtuale e nivelit të ulët me një sistem optimizimi në shumë nivele).

Designedshtë krijuar për të optimizuar kohën e përpilimit, koha e lidhjes, koha e ekzekutimit në çdo gjuhë programimi që përdoruesi dëshiron të përcaktojë. Zbatuar fillimisht për të përpiluar C dhe C ++, Dizajni agnostik i gjuhës së LLVM dhe suksesi i projektit kanë pjellë një larmi gjuhësh, përfshirë Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas dhe të tjerët.

Pseudokodi i gjeneruar mund të shndërrohet duke përdorur përpiluesin JIT në udhëzime makine direkt në kohën e ekzekutimit të programit.

Karakteristikat kryesore të reja të LLVM 9.0

Ndër tiparet e reja të LLVM 9.0 gjeni mbështetje për të hequr etiketën eksperimentale të zhvillimit nga platforma RISC-V, C ++ mbështetje për OpenCL.

Një tjetër risi që bie në sy aftësia për të ndarë programin në pjesë të ngarkuara në mënyrë dinamike në LLD dhe implementimin e konstruktit »asm goto» të përdorur në kodin e kernelit Linux.

Si shtesë, theksohet gjithashtu se Libc ++ mbërriti me mbështetjen për WASI (Ndërfaqja e Sistemit WebAssemble) dhe LLD prezantoi mbështetjen fillestare për lidhjen dinamike të WebAssemble. Shtoi zbatimin e shprehjes specifike të GCC »asm goto», e cila ju lejon të kaloni nga një bllok inline i mbledhur në një etiketë C.

Kjo karakteristikë është e nevojshme për të ndërtuar kernelin Linux në mënyrën »CONFIG_JUMP_LABEL = y« duke përdorur Clang në sistemet x86_64. Duke marrë parasysh ndryshimet e shtuara në versionet e mëparshme, kerneli Linux tani mund të ndërtohet në Clang për arkitekturën x86_64 (më parë, ai mbështetej vetëm për arkitekturat e krahut, aarch64, ppc32, ppc64le dhe mips.

Mbështetja për udhëzimet e BTI është shtuar (Treguesi i synuar i degës) dhe PAC (Kodi i vërtetimit të pointerit) për arkitekturën AArch64. Mbështetje e përmirësuar në mënyrë të konsiderueshme për platformat MIPS, RISC-V dhe PowerPC.

Përveç kësaj, Projektet Android dhe ChromeOS tashmë kanë kaluar në përdorimin e Clang për të ndërtuar kernelin dhe Google po teston Clang si bërthamat kryesore të platformës së ndërtimit për sistemet e saj Linux.

Në të ardhmen, gjatë procesit të përpilimit të bërthamës, do të jetë e mundur të përdoren përbërës të tjerë LLVM, përfshirë LLD, llvm-objcopy, llvm-ar, llvm-nm dhe llvm-objdump.

Një funksion eksperimental i ndarjes është shtuar në lidhësin LLD, i cili lejon që një program të ndahet në pjesë të shumta, secila prej të cilave vendoset në një skedar të veçantë ELF. Kjo karakteristikë ju lejon të ekzekutoni pjesën kryesore të programit, e cila, sipas nevojës, do të ngarkojë përbërësit e mbetur në proces (për shembull, mund të zgjidhni shikuesin e integruar PDF si një skedar të veçantë, i cili do të shkarkohet vetëm kur përdoruesi hap skedarin PDF).

Nga ana tjetër, spikasin edhe përmirësimet e shumta në backends për arkitekturat X86, AArch64, ARM, SystemZ, MIPS, AMDGPU dhe PowerPC.

Për shembull, mbështetja për udhëzimet SVE2 dhe MTE (Memory Tagging Extensions) është shtuar për arkitekturën AArch64, mbështetja për arkitekturën Armv8.1-M dhe arkitektura MVE janë shtuar në pjesën e prapme të ARM.

Në rastin e AMDGPU, u shtua mbështetja për arkitekturën GFX10 (Navi), parazgjedhja është e aktivizuar për të thirrur një funksion dhe për të kaluar DPP të kombinuar të aktivizuar (Data Primitives-Paralel).

Rregulluesi i LLDB prezantoi theksimin e ngjyrave të gjurmëve prapa; mbështetje e shtuar për tipet e korrigjimit të gabimeve DWARF4 dhe blloqet debug_info të DWARF5;

Shërbimet llvm-objcopy dhe llvm-strip kanë shtuar mbështetje për skedarë dhe objekte të ekzekutueshme të formatit COFF.

Backend për arkitekturën RISC-V është stabilizuar, e cila nuk është më e pozicionuar si eksperimentale dhe është ndërtuar si parazgjedhje. Mbështetje e plotë për gjenerimin e kodit për variantet e udhëzimeve RV32I dhe RV64I me shtesa të MAFDC.

Fuente: http://releases.llvm.org/


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.