Kuuden kuukauden kehityksen jälkeen esiteltiin LLVM 9.0 -projektin uuden version julkaisu, joka on GCC-yhteensopiva työkalupakki (kääntäjät, optimoijat ja koodigeneraattorit), joka kokoaa ohjelmat RISC: n kaltaisten virtuaalisten ohjeiden välibittikoodiksi (matalan tason virtuaalikone, jossa on monitasoinen optimointijärjestelmä).
Se on suunniteltu optimoimaan kokoamisaika, sidonta-aika, suoritusaika millä tahansa ohjelmointikielellä, jonka käyttäjä haluaa määritellä. Alun perin toteutettu C: n ja C ++: n kokoamiseksi, LLVM: n kieliagnostiikka ja projektimenestys ovat synnyttäneet monenlaisia kieliä, mukaan lukien Objective-C, Fortran, Ada, Haskell, Java-tavukoodi, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas ja muut.
Luotu pseudokoodi voidaan muuntaa JIT-kääntäjän avulla koneohjeiksi suoraan ohjelman suorituksen yhteydessä.
LLVM 9.0: n tärkeimmät uudet ominaisuudet
LLVM 9.0: n uusien ominaisuuksien joukossa löytää tukea kokeellisen kehitystunnisteen poistamiseksi RISC-V-alustalta, C ++ -tuki OpenCL: lle.
Toinen uutuus erottuu kyvystä jakaa ohjelma dynaamisesti ladattuihin osiin LLD: ssä ja Linux-ytinkoodissa käytetyn »asm goto» -konstruktion toteutus.
Lisäksi korostetaan myös, että Libc ++ saapui WASI-tuella (WebAssembly System Interface) ja LLD esittivät alustavan tuen WebAssembly-dynaamiselle sidonnalle. Lisätty GCC-spesifisen lausekkeen »asm goto» toteutus, jonka avulla voit siirtyä kootusta rivinvaihdosta C-koodin tagiksi.
Tämä ominaisuus on välttämätön Linux-ytimen rakentamiseksi »CONFIG_JUMP_LABEL = y« -tilassa käyttämällä Clangia x86_64-järjestelmissä. Ottaen huomioon edellisiin versioihin lisätyt muutokset, Linux-ydin voidaan nyt rakentaa Clangissa x86_64-arkkitehtuurille (aiemmin sitä tuettiin vain käsivarsi-, aarch64-, ppc32-, ppc64le- ja mips-arkkitehtuureille.
Tuki STT-ohjeille on lisätty (Haarakohteen ilmaisin) ja PAC (osoitintodennuskoodi) AArch64-arkkitehtuurille. Parannettu huomattavasti tukea MIPS-, RISC-V- ja PowerPC-alustoille.
Lisäksi, Android- ja ChromeOS-projektit ovat jo siirtyneet käyttämään Clangia ytimen rakentamiseen ja Google testaa Clangia ensisijaisena rakennusalustan ytimenä sen käynnissä oleville Linux-järjestelmille.
Tulevaisuudessa, ytimen kokoamisprosessin aikana on mahdollista käyttää muita komponentteja LLVM, mukaan lukien LLD, llvm-objcopy, llvm-ar, llvm-nm ja llvm-objdump.
LLD-linkkeriin on lisätty kokeellinen osiointitoiminto, jonka avulla ohjelma voidaan jakaa useaan osaan, joista kukin sijoitetaan erilliseen ELF-tiedostoon. Tämän ominaisuuden avulla voit suorittaa ohjelman pääosan, joka tarvittaessa lataa prosessin loput komponentit (voit esimerkiksi valita sisäänrakennetun PDF-katseluohjelman erillisenä tiedostona, joka ladataan vain, kun käyttäjä avaa tiedoston PDF).
Toisaalta myös taustakuvien lukuisat parannukset erottuvat. X86-, AArch64-, ARM-, SystemZ-, MIPS-, AMDGPU- ja PowerPC-arkkitehtuureille.
Esimerkiksi SVr2- ja MTE-ohjeiden (Memory Tagging Extensions) tuki on lisätty AArch64-arkkitehtuurille, tuki Armv8.1-M-arkkitehtuurille ja MVE -arkkitehtuuri on lisätty ARM-taustalle.
AMDGPU: n tapauksessa lisättiin tuki GFX10-arkkitehtuurille (Navi), oletusarvo on aktivoitu kutsumaan toiminto ja välittämään aktivoitu yhdistetty DPP (Data Primitives-Parallel).
LLDB-virheenkorjaaja esitteli jälkien värien korostamisen taaksepäin; lisätty tuki DWARF4 debug_types ja DWARF5 debug_info -lohkoille;
Llvm-objcopy ja llvm-strip -apuohjelmat ovat lisänneet tukea COFF-muotoisille suoritettaville tiedostoille ja objekteille.
RISC-V-arkkitehtuurin taustaosa on vakiintunut, jota ei enää sijoiteta kokeelliseksi ja joka on rakennettu oletuksena. Täysi tuki koodien luomiselle RV32I- ja RV64I-komentosarjamuunnelmille MAFDC-laajennuksilla.
lähde: http://releases.llvm.org/