Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

llvm and clang

LLVM är ett generellt kompilator-ramverk skrivet i C++. Givet en "framdel" som tolkar kod skrivet i något programmeringsspråk kan LLVM representera program i en portabel mellankod, optimera koden och göra om den till platformsberoende kod eller köra den i en virtuell maskin.

En viktig del av projektet är clang, en "framdel" för C och Objective-C. Stödet för C++ ligger än så länge långt in i framtiden. LLVM sponsras aktivt av Apple som har stort intresse av just Objective-C och clang/LLVM används för kodanalys i Apples kodeditor XCode.

LLVM kan dels användas som en kompilator från källkod -> binärkod men också med fördel användas för att tolka kod skriven i något programmeringsspråk för att därifrån förse en IDE med intelligent completion eller nyttjas för att analysera en kodbas efter buggar.

Vad finns det då för fördelar med LLVM jämfört med till exempel GCC? För det första är LLVM under en väldigt liberal licens (motsvarande BSD-licensen), för det andra är LLVM en modern kodbas som är modular är i sin uppbyggnad. Ett problem med GCC är att den utför vissa optimeringar redan när den tolkar programspråkskod. Ett klassiskt exempel på detta är när kompilatorn läser en sats såsom

x = x

GCC ignorerar en sådan tilldelning eftersom den inte åstadkommer något. Följden blir att man inte kan använda GCC för att i en IDE finna ALLA användningar av variabeln "x".

En nackdel med LLVM jämfört med GCC är bristen på "framdelar" för olika språk, men i takt med att intresset för LLVM ökar så kommer det dyka upp allt fler. Nu har även Mono-projektet fått upp ögonen för LLVM, vilket ger ett antal extra-språk på köpet. Det finns också en hybrid av GCC och LLVM som gör det möjligt att använda GCC för att tolka källkoden.

Både LLVM och Webkit är exempel på att open source idag klarar sig utmärkt utan copyleft. Trots att företag inte tvingas ge tillbaka kod så gör man det ändå. En liten historielektion kring GPL, FSF och copyleft ges här: http://www.informit.com/articles/article.aspx?p=1390172

Länk till LLVM och clang

http://clang.llvm.org/

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

leochingkwakes bild

Antar att detta fungerar i dom flesta os? Jag kommer köra vidare med gcc ett tag till men detta låter intressant Smile

Kristians bild

Javisst. Särskilt FreeBSD-folket har varit visat stort intresse för LLVM då de hoppas kunna ersätta GCC. I motsats till PCC (som anammades av OpenBSD för ett drygt år sedan) är LLVM/clang en mogen lösning värdig att tävla med GCC (i alla fall vad gäller C/Objective C). Något du som nu programmerare kommer gilla är clangs sätt att rapportera fel/varningar (lite i samma stil som Suns Javac). Det är mycket tydligare än GCC:s enradsgrekiska som iof erfarna programmerare kan lura ut efter sammanhanget men som färskare programmerare får rejält med huvudbry över.

---------------------------------------

Varje ny generation får en så kall och bitter ton efter en tid och det är bara de under tio som förstår hur man ska leva ett värdigt liv

---------------------------------------

 

leochingkwakes bild

Ok, kanske skall börja titta på det redan nu då. När man är nybörjare inom C. Jag kör förövrigt OpenBSD på mina datorer med GCC just nu.

leochingkwakes bild

På tal om det med licenser. Jag funderar starkt på att börja använda BSD-licensiering på sånt som jag gör. Men jag är fortfarande lite splittrad då jag gillar delar av GPL-licensen. Kan ju erkänna att det inte känns fullt så bra att veta att någon skulle kunna använda delar av ens kod i ett stängt projekt och sen tjäna pengar på det. Men det är väl ett problem som funnits genom alla tider. Det var ju så det började med två företag, att man inte skapade saker helt själv utan stal av andra. Smile

Men kul och inspirerande att det faktiskt finns företag som ger tillbaka oavsett vad för tankar den ursprunglige utvecklaren ville. Det gör ju det lättare att välja licenser för ens egna grejer. Om man nu kommer att åstakomma nåt Wink

alberts bild

En intressant kompilator som de brukar prata om på jobbet är tcc. Hela kompilatorn är på c:a 100kb och den kompilerar 9ggr snabbare än gcc. Men jag antar att slutresultatet blir bättre med gcc (hoppas i alla fall).

Kristians bild

En snabb kompilator är fantastisk om man pillar med core-bibliotek i ett större projekt. Det brukar resultera i att man får bygga om stora delar av projektet vilket kan vara mycket drygt med en långsam kompilator.

---------------------------------------

Varje ny generation får en så kall och bitter ton efter en tid och det är bara de under tio som förstår hur man ska leva ett värdigt liv

---------------------------------------

 

Kristians bild

http://www.mono-project.com/Mono_LLVM

Enligt tester är LLVM märkbart snabbare än Monos virtuella maskin. Det kostar dock i form av ökad minnesanvändning.

---------------------------------------

Varje ny generation får en så kall och bitter ton efter en tid och det är bara de under tio som förstår hur man ska leva ett värdigt liv

---------------------------------------