Kalahtaa

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 7. huhtikuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 23 muokkausta .
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 ) ( 25.3.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ä.

Yleiskatsaus

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.

Kehityshistoria

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

Muistiinpanot

  1. Clang 14.0.0 julkaisutiedot . Arkistoitu alkuperäisestä 1. huhtikuuta 2022. Haettu 14. huhtikuuta 2022.
  2. Ääntämiskeskustelu llvmdev-postituslistalla Arkistoitu 2012-02-08 .
  3. Divacky, Roman [ANNOUNCE] clang/llvm voi kääntää käynnistyvän FreeBSD-ytimen i386/amd64:llä (downlink) . Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  4. BuildingFreeBSDWithClang - FreeBSD Wiki . Haettu 17. maaliskuuta 2011. Arkistoitu alkuperäisestä 1. lokakuuta 2012.
  5. Hornung, Alex llvm/clang vielä kerran (downlink) . Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  6. DragonFlyBSD: clang . Haettu 17. maaliskuuta 2011. Arkistoitu alkuperäisestä 5. lokakuuta 2012.
  7. Clang-tiimi, clang: LLVM:n C-kieliperheen käyttöliittymä Arkistoitu 13. maaliskuuta 2011 Wayback Machinessa
  8. Clang voi kääntää LLVM:n ja Clangin (downlink) . LLVM-projektin blogi. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  9. Clang Successfully Self-Hosts (downlink) . LLVM-projektin blogi. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  10. HelenOS-päälinjan muutossarja,294 (downlink) . Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  11. Gregor, Doug Clang++ rakentaa tehoa! (linkki ei saatavilla) . LLVM-projektin blogi. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  12. Davis, Brad FreeBSD:n tilaraportit huhti-kesäkuu 2010 (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  13. [ILMOITUS] Clang rakentaa toimivan Linux-ytimen (Käynnistyy RL5:een SMP:llä, verkkoyhteydellä ja X:llä, itseisännät) Arkistoitu 7. syyskuuta 2015.
  14. Seurantasivu llvm-virheille, jotka estävät Linux-ytimen rakentamisen . Haettu 17. lokakuuta 2011. Arkistoitu alkuperäisestä 9. kesäkuuta 2014.
  15. Gregor, Douglas Uusi C++0x-ominaisuustuki Clangissa . Postituslista (26.1.2011). Haettu: 29. tammikuuta 2011.
  16. C++- ja C++'0x-tuki Clangissa (downlink) . LLVM. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  17. Simonis, Volker kokoamassa HotSpot VM:tä Clangilla (downlink) (10. helmikuuta 2011). - Vaikka yleinen GCC-yhteensopivuus on erinomainen ja käännösajat vaikuttavat, luodun koodin suorituskyky puuttuu edelleen viimeisimmästä GCC-versiosta. ". Haettu 13. helmikuuta 2011. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  18. Criswell, John [LLVMdev] Clang + SAFECode -julkaisuilmoitus (linkki ei saatavilla) (18. elokuuta 2011). Haettu 25. elokuuta 2011. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  19. LibreOfficen rakentaminen Clangilla (downlink) (22. lokakuuta 2011). Haettu 23. lokakuuta 2011. Arkistoitu alkuperäisestä 30. huhtikuuta 2012. 
  20. Ledru, Sylvestre Debian-arkiston uudelleenrakentaminen clangilla (downlink) . Arkistoitu alkuperäisestä 18. kesäkuuta 2012. 
  21. Minix 3.2.0, Releases Clang on oletuskääntäjä (downlink) . Arkistoitu alkuperäisestä 18. kesäkuuta 2012. 
  22. Gerzo, Daniel FreeBSD:n neljännesvuosittainen tilaraportti tammi-maaliskuussa 2012 (linkki ei saatavilla) . Arkistoitu alkuperäisestä 30. kesäkuuta 2012. 
  23. OpenNews: Demonstroitu openSUSE:n käyttäminen Linux-ytimellä, joka on rakennettu Clangilla (downlink) . Haettu 16. heinäkuuta 2012. Arkistoitu alkuperäisestä 18. heinäkuuta 2012. 
  24. Du Toit, Stefanus Clang on C++11-ominaisuus valmiina *just nyt*! . Haettu 22. huhtikuuta 2013. Arkistoitu alkuperäisestä 24. syyskuuta 2019.
  25. [https://web.archive.org/web/20170130114326/http://llvm.org/viewvc/llvm-project?view=revision&revision=194194 Arkistoitu 30. tammikuuta 2017 Wayback Machinessa [llvm-project] Versio 194194]
  26. Debianin uudelleenrakentaminen käyttämällä Clang 3.5.0:aa . sylvestre.ledru.info. Käyttöpäivä: 6. toukokuuta 2016. Arkistoitu alkuperäisestä 19. huhtikuuta 2016.
  27. Nagy, Robert vaihtavat oletuskääntäjän amd64:ssä ja i386:ssa clang :ksi . Postituslista (26.7.2017). Haettu: 30. syyskuuta 2017.
  28. Clangia käytetään nyt Chromen luomiseen Windowsille . Haettu 6. maaliskuuta 2018. Arkistoitu alkuperäisestä 5. maaliskuuta 2018.

Linkit