Kalahtaa | |
---|---|
Tyyppi | Kääntäjä |
Tekijä | Chris Lattner |
Kehittäjä | Apple ja muut |
Sisään kirjoitettu | C++ |
Käyttöjärjestelmä | Monialustainen ohjelmisto |
Ensimmäinen painos | 26. syyskuuta 2007 |
Laitteistoalusta | cross-platform |
uusin versio | 14.0.0 [1] (25. maaliskuuta 2022 ) |
Osavaltio | Aktiivinen |
Lisenssi | Illinoisin yliopiston lisenssi _ |
Verkkosivusto | clang.llvm.org |
Mediatiedostot Wikimedia Commonsissa |
Clang (lausutaan "klang" [2] ) on C- , C++- , Objective-C- , Objective - C++ - ja OpenCL C -ohjelmointikielien käyttöliittymä , jota käytetään yhdessä LLVM - kehyksen kanssa . Clang kääntää lähdekoodit LLVM - tavukoodiksi , minkä jälkeen kehys suorittaa optimoinnit ja koodin luomisen .
Projektin tavoitteena on luoda korvaava GNU Compiler Collection ( GCC ). Kehitys toteutetaan avoimen lähdekoodin konseptin mukaisesti LLVM-projektissa.
Clang 12, viimeisin julkaistu huhtikuussa 2021, tukee kaikkia julkaistuja C++-standardeja C++17 asti , toteuttaa useimmat C++20 -ominaisuudet ja lisää osittaisen tuen tulevalle C++23 -standardille . Versiosta V6.0.0 alkaen Clang kääntää C++:n GNU C++14 -oletusmurteella , joka sisältää ominaisuuksia C++14-standardista ja GNU-laajennusten mukaisesti.
Projektissa on mukana useiden yritysten työntekijöitä, mukaan lukien Google ja Apple . Lähdekoodi on saatavilla BSD :n kaltaisella lisenssillä.
Clang on C-kaltaisten kielten kääntäjä , joka on suunniteltu erityisesti toimimaan LLVM:n päällä. Clangin ja LLVM:n yhdistelmä on täydellinen kääntäjä ja tarjoaa joukon työkaluja, jotka korvaavat GCC:n kokonaan. Kirjastopohjaisen arkkitehtuurin ansiosta Clang (kuten LLVM) on helppo upottaa muihin sovelluksiin.
Yksi Clangin päätavoitteista on tukea inkrementaalista kääntämistä, jonka avulla kääntäjä ja kehitysympäristön graafinen käyttöliittymä voidaan integroida tiiviimmin , toisin kuin GCC, joka luotiin toimimaan klassisessa käännös-linkki-debug-syklissä. Toisin kuin GCC, joka keskittyy ensisijaisesti koodin luomiseen , Clang pyrkii tarjoamaan yleiset puitteet jäsentämiseen , indeksoimiseen, staattiseen analysointiin ja C-perheen kielten kokoamiseen . Erityisesti Clang ei jäsennä lähdekoodia (kuten GCC tekee), mikä varmistaa, että lähdekoodi toistetaan todenmukaisesti abstraktiksi syntaksipuuksi .
Toisin kuin GCC, Clang on suunniteltu alusta alkaen säilyttämään mahdollisimman paljon tietoa käännösprosessin aikana, mukaan lukien lähdekoodin "ilmeen ja tuntuman" säilyttäminen. Tämän ominaisuuden avulla Clang voi tuottaa monipuolisia, kontekstiherkkiä virheilmoituksia, jotka ovat ymmärrettävissä sekä ohjelmoijille että kehitysympäristöille. Kääntäjän modulaarinen rakenne mahdollistaa sen käytön osana kehitysympäristöä koodin indeksointiin, syntaksin korostamiseen ja koodin uudelleenkäsittelyyn .
Clang tukee yleisimpiä GCC-vaihtoehtoja.
Taulukossa näkyvät vain tärkeimmät tapahtumat.
päivämäärä | Tapahtuma |
---|---|
25. helmikuuta 2009 | Clang/LLVM mahdollistaa FreeBSD - ytimen kääntämisen [3] [4] . Kaikki FreeBSD:n lähdekoodi, sekä ydin että käyttäjäohjelmat, voidaan nyt kääntää Clangilla. |
16. maaliskuuta 2009 | Clang/LLVM kääntää toimivan DragonFly BSD -ytimen [5] [6] . |
23. lokakuuta 2009 | Clang 1.0 julkaistiin ensimmäisen kerran osana LLVM 2.6:ta. |
joulukuuta 2009 | C:n ja Objective-C:n koodin luominen on saavuttanut teollisen laadun (C++:n ja Objective-C++:n tuki ei ole vielä valmis). C++-kääntäjä voi jäsentää libstdc++ :n GCC 4.2:sta ja tuottaa toimivaa koodia ei-triviaalisille ohjelmille [7] ja myös kääntää itsensä [8] . |
2. helmikuuta 2010 | Clang on itse isännöinyt (kääntänyt toimivan version clang+llvm:stä) [9] . |
20. helmikuuta 2010 | HelenOS- lähdekoodia on muokattu kääntämään onnistuneesti Clangin kanssa ja se läpäissyt kaikki ytimen ja käyttäjäohjelmien regressiotestit IA-32- alustalla [10] . |
20. toukokuuta 2010 | Clangin uusin versio rakentaa onnistuneesti Boostin ja läpäisee suurimman osan testeistä [11] . |
10. kesäkuuta 2010 | Clangista ja LLVM:stä tulee osa FreeBSD : tä (vaikka GCC on edelleen oletuskääntäjä) [12] . |
25. lokakuuta 2010 | Clang/LLVM kääntää onnistuneesti Linux-ytimen (osittain) [13] . Täyteen tukeen asti on korjattava muutama bugi clangissa [14] ja päästävä eroon joistakin gnu-spesifisistä rakenteista ytimessä. |
tammikuuta 2011 | Esityötä on tehty C++0x -standardin luonnoksen tukemiseksi , joitain uusia ominaisuuksia tuetaan Clangin [15] [16] kehitysversiossa . |
10. helmikuuta 2011 | Clang kääntää Java HotSpot -virtuaalikoneen onnistuneesti [17] . |
18. elokuuta 2011 | Clangin epävirallinen versio, joka tukee SafeCodea , tekniikkaa mahdollisten muistiongelmien seurantaan kehitteillä olevassa sovelluksessa [18] . |
22. lokakuuta 2011 | Tarjolla on mahdollisuus rakentaa LibreOffice Clang-kääntäjällä [19] . |
28. helmikuuta 2012 | Clang 3.0 pystyi kääntämään yli 91 % Debianin paketeista [20] . |
29. helmikuuta 2012 | Clangista tuli Minix 3 :n oletuskääntäjä [21] . |
12. toukokuuta 2012 | Ilmoitettu GCC :n korvaavan Clangilla FreeBSD -perusjärjestelmässä [22] . |
14. heinäkuuta 2012 | Osoitettiin, että openSUSE on käynnissä Clangilla rakennetulla Linux-ytimellä [23] . |
19. huhtikuuta 2013 | Clangin tuki C++11-kielistandardille [24] on ilmoitettu . |
18. kesäkuuta 2013 | Clang 3.3 -julkaisu tukee 100 % C++11:n ominaisuuksista. |
7. marraskuuta 2013 | Clang tukee 100 % C++14:n ominaisuuksista [25] . |
11. syyskuuta 2014 | Clang 3.5:n avulla 94,3 % Debian-arkistosta voidaan rakentaa uudelleen. Rakennusvirheprosentti on laskenut 1,2 % julkaisua kohti tammikuusta 2013 lähtien, mikä johtuu pääasiassa parantuneesta yhteensopivuudesta GCC-lippujen kanssa [26] . |
13. maaliskuuta 2017 | Clang 4.0.0 -julkaisu . |
26. heinäkuuta 2017 | Clangista tulee oletuskääntäjä OpenBSD 6.2:ssa. [27] . |
7. syyskuuta 2017 | Clang 5.0.0 -julkaisu . |
5. maaliskuuta 2018 | Clangista tulee oletuskääntäjä Google Chrome -koontiversioille kaikille tuetuille alustoille. [28] |
8. maaliskuuta 2018 | Clang 6.0.0 -julkaisu . |
19. syyskuuta 2018 | Clang 7.0.0 -julkaisu |
20. maaliskuuta 2019 | Clang 8.0.0 -julkaisu |
19. syyskuuta 2019 | Clang 9.0.0 -julkaisu |
24. maaliskuuta 2020 | Clang 10.0.0 -julkaisu |
6. tammikuuta 2021 | Clang 11.0.0 -julkaisu |
14. huhtikuuta 2021 | Clang 12.0.0 -julkaisu |
4. lokakuuta 2021 | Clang 13.0.0 -julkaisu |
25. maaliskuuta 2022 | Clang 14.0.0 -julkaisu |