Clang jest self-hosted
5 lutego 2010, trasz
Clang, projekt tworzący razem z LLVM alternatywę dla GCC, stał się self-hosted.
Niepisaną tradycją wśród twórców kompilatorów jest umożliwienie skompilowania ich przy pomocy ich samych. Przykładowo, kompilator języka C powinien być w stanie skompilować swój własny kod źródłowy, oczywiście napisany w C. Kompilator, który to potrafi, określa się – z braku polskiego odpowiednika – jako ’self-hosted’.
Clang to frontend (część kompilatora odpowiedzialna za “przetłumaczenie” kodu w używanym przez programistę języku programowania na postać używaną wewnętrznie przez kompilator) dla LLVM, dostarczającego backend (część kompilatora odpowiedzialną za optymalizacje i wygenerowanie kodu dającego się uruchomić na procesorze). Razem tworzą alternatywę dla GCC, różniącą się od niego modularnościa (dzięki której możliwe jest tworzenie opartych o niego narzędzi do statycznej analizy kodu lub modyfikujących kod źródłowy), lepszą organizacją kodu (co pozwala na optymalizacje, które w GCC byłyby dużo trudniejsze) oraz liberalną licencją BSD-like. Rozwój Clanga i LLVM jest finansowany głównie przez Apple, które zatrudnia w tym celu kilkanaście osób.
Począwszy od ostatniego wydania Clang posiadal pełne, produkcyjne wsparcie dla języków C i Objective-C. Jednak sam Clang, podobnie jak LLVM, napisany jest w C++, dla którego wsparcie nadal jest rozwijane. Sceptycy twierdzili, że doprowadzenie wsparcia dla C++ do jakiejkolwiek używalności zajmie kilka lat.
Wczoraj projekt osiągnął kolejny milestone – zamknięty został ticket 5221; co oznacza, że wersja Clanga i LLVM skompilowana nim samym przechodzi wszystkie testy regresji. Kolejne otwarte zadania to m.in. kompilacja niezmodyfikowanych źródeł Firefoksa.


Tak wlasciwie, to kto byl sekundantem w moim zakladzie z Biesem? Ile ekipa Clanga ma jeszcze czasu na doprowadzenie go do kompilowania Boosta?
Tu masz link http://linuxnews.pl/llvm-2-6/#comment-4802232 . Dodaj do zakładek
Jeszcze 8 i pół miesiąca mają. Dobrze im życzę, ale nie wierzę w sukces.
A, rzeczywiscie. Troche ponad dwa miesiace temu – gdy wsparcie dla C++ bylo na etapie szkicow, to znaczy nie bylo nawet parsowania kodu w tym jezyku – Bies napisal:
“Podtrzymuję twierdzenie. Clang nie będzie obsługiwał C++ jeszcze przez parę lat (możemy zdefiniować ,,będzie obsługiwał” jako ,,będzie można nim skompilować Boost bez kompromisów”).”
Aktualnie jestesmy na etapie pelnej kompilacji Clanga i LLVM oraz “prawie kompilacji” (masa ifdefow) Firefoksa. Jak dla mnie maja spore szanse.
Od Firefoxa do Boosta daleka droga. A zamiast boosta to lepiej loki wziąć jako referencję.
jestesmy?
fakt ze dawno przegladalem commit logi, ale nie przypominam sobie ciebie wsrod commiterow. myle sie?
jak dla mnie – fakt ze na tak zabugowanym backendzie (ze llvm to bug na bugu nie wiedzialem, poki nie zaczalem rozmawiac z ludzmi od pypy, ktorzy na llvm mocno sie sparzyli) – ktoremu od lat kibicuje (choc szkoda ze jit w llvm nie ma, bo to co jest to ma blizej do aot kompilacji) udalo sie osiagnac stage “self-hosting” (jakby nie bylo kod llvm i clanga to dosc czytelny przyklad cpp) swiadczy o tym ze obsluga cpp juz jest calkiem, calkiem sprawna.
licze na to ze jednak ten zaklad wygrasz – bo wszyscy na tym wygramy
@jellonek: “W 1969 wylądowaliśmy na Księżycu”. My. Czlowiek. Cywilizacja.
A co do zabugowania backendu – jeszcze niedawno byl mocno niedotestowany, ale bardzo szybko przybywa mu uzytkownikow; z tego co wiem Apple chce sie w stosunkowo krotkim czasie pozbyc GCC _calkiem_. A w tym celu LLVM musi naprawde sprawnie dzialac, przynajmniej na amd64 i ARM.
maki są na amd64?
zaskoczony?
tak intelowskie maki używają architektury zaprojektowanej przez amd.
@marcinsud: Podobnie jak pierwszy lepszy pecet – jesli ktos produkuje jeszcze procesory x86 bez wsparcia dla 64 bit, to raczej do czegos zagniezdzonego.
Taaa, Atomy serii N na przykład…
Jeszcze całkiem niedawno Intel produkował 32-bitowe x86, szczególnie laptopowe (Core Duo był 32-bitowy!). Co więcej: Apple, mimo, że przeszło na x86 po opracowaniu x86-64, w wielu makach używało procesorów 32-bitowych.
Atomy chyba są x86 nieamd64
> Jeszcze całkiem niedawno Intel produkował 32-bitowe x86, szczególnie laptopowe (Core Duo był 32-bitowy!).
Mowisz o tym?
http://en.wikipedia.org/wiki/Intel_Core_2
Tam stoi: Core 2 is a brand encompassing a range of Intel’s consumer 64-bit x86-64
@jarek
core 2 duo i core duo to dwa różne procki.
O to chodzi?
http://en.wikipedia.org/wiki/Intel_Core
http://en.wikipedia.org/wiki/Intel_Core#Core_Duo
@trasz: sekundantem jestem ja. Mam to w zakładkach
I powiem, ze cholernie mnie ciekawi wynik.
Przyznaję szczerze, że jestem zdziwiony. No, nic — zobaczymy jak się sytuacja rozwinie, najwyżej dostaniesz to whiskey/piwo.
Swoja droga, po ostatnich perypetiach z MySQL-em Clang moze stac sie kolejnym przykladem, ze licencja GPL faktycznie nie jest specjalnie przyjazna dla biznesu – podstawowym powodem stworzenia Clanga zamiast wyjscia od kodu stworzonego w ramach GCC byla nieakceptowalnie restrykcyjna licencja tego ostatniego.
Licencja GPL jest z definicji nieprzyjazna dla wszystkich zwolenników własnościowego oprogramowania, więc także i dla firmy Apple, której flagowe produkty są zamknięte z otwartymi elementami. Licencja GPL nie przeszkadza firmom, które oferują oprogramowanie otwarte.
@maciek: Dokladniej mowiac, licencja GPL jest dla nieprzyjazna dla wszystkich firm, ktore nie maja zamiaru sponsorowac darmowego kodu swojej konkurencji. Dla firm, ktore maja zamiar brac gotowe, nic od siebie nie wnoszac, GPL jest licencja idealna.
Nie traszuj już tak
Boost to gigantyczna i skomplikowana biblioteka, więc Bies i tak prawdopodobnie wygra zakład 
Tyle w temacie.
Dla firm, ktore maja zamiar brac gotowe, nic od siebie nie wnoszac, BSD również jest licencja idealną. GPL wymusza współdzielenie kosztów wytwarzania produktu przez firmy oraz życie z usług (begware pomijam). BSD można modyfikować jak się chce i wszystko można w każdej chwili zamknąć, tak więc wręcz zniechęca do kolaboracji – każdy porywa interesujący go kawałek i modyfikuje w swojej jaskini, tak jak to sobie Bill Gates wymarzył
Powiedz mi, od kogo ty dostajesz te plusy
@trsh
“la firm, ktore maja zamiar brac gotowe, nic od siebie nie wnoszac, GPL jest licencja idealna.”
Dla nich wtedy nie ma znaczenia czy to jest gpl czy mit/bsd
@ak47: Ma – w przypadku BSD jakas kreatywna firma moze wladowac troche pieniedzy i dac klientom lepszy produkt. W przypadku licencji GPL taka firma bedzie musiala rozdac ulepszenia konkurencji – wiec konkurencja, ktora nic od siebie nie dala, bedzie mogla zaoferowac to samo taniej (taniej, bo nie musi sobie zamortyzowac poniesionych kosztow).
@trsh
Jedni potrafią inni Nie … VMware używające softu na GPL/LGPL radzi sobie bardzo dobrze.
Nie zawsze chodzi o proste wyliczenia, czasem developer w projekcie jest wart dużo więcej niż jego gaża.
“VMware używające softu na GPL/LGPL radzi sobie bardzo dobrze”
Czy chodzi o to, ze z braku wlasnych rozwiazan VMWare bierze kod GPL i uzywa go tymczasowo do chwili kiedy napisze swoj wlasny wlasnosciowy, po czym porzuca GPL?
> VMware używające softu na GPL/LGPL radzi sobie bardzo dobrze.
Gdzie moge sciagnac zrodla vmware server?
@jarek
ze strony vmware?
a tak btw co ma to wspólnego z używaniem softu na GPL/LGPL ?
@ak47: Akurat w VMware znajdziesz więcej komponentów na licencjach Apache, MPL i pochodnych.
Na GPLu licencjonowane są HAL, DBus, STD, pliki nagłówkowe jądra Linuksa i biblioteki GCC. Czyli istotne elementy Linuksa, bądź jego toolchaina.
Licencja LGPL nigdy nie stanowiła problemu, bo zezwala na “mieszanie” z zamkniętym kodem (mocno to uprościłem, bo dochodzą tu pewne warunki).
Więcej informacji można znaleźć tutaj.
Na koniec małe pytanie. Skoro VMware z takim sukcesem wykorzystuje GPL jak to opisujesz, to czemu w przypadku m.in. Firefoxa czy Perla wybrano alternatywne licencje?
Zarówno kod Perla jak i Firefoxa jest rozpowszechnianiu na kilku licencjach, w tym na GPLu. W VMware te komponenty są licencjonowane natomiast na MPL i Artistic.
@blinkkin
Zdradzę ci pewien sekret jeśli mowa o GPL jest prawie pewne że w środku program ten używa kodu na bardziej liberalnej licencji, czy to jest mit/bsd czy cos innego. W drugą stronę to nie działa. Więc mowa o więcej czy mniej jest jednej licencji w produkcie to strzępenie języka. W każdej dystrybucji linuksowej masz masę kodu na BSD/MIT itd.
weryfikacja linka.
1. Perl ? -> ja tam nie widzę perla jedynie moduł, i to pojedyńczy. A tak btw dawanie języka na gpl to nie jest zbyt szczęśliwy pomysł
2. firefox -> być może ma to związek z dystrybuowanym dodatakiem do firefox’a “vmware console plugin”
> @kalasznikow
> ze strony vmware?
A konkretniej, moge dostac od Ciebie linka do zrodel?
> a tak btw co ma to wspólnego z używaniem softu na GPL/LGPL ?
Mniej wiecej tyle co Twoj koment:
> VMware używające softu na GPL/LGPL radzi sobie bardzo dobrze.
Ma do tego co komentowales:
> @ak47: Ma – w przypadku BSD jakas kreatywna firma moze wladowac troche
> pieniedzy i dac klientom lepszy produkt. W przypadku licencji GPL taka
> firma bedzie musiala rozdac ulepszenia konkurencji – wiec konkurencja,
> ktora nic od siebie nie dala, bedzie mogla zaoferowac to samo taniej
> (taniej, bo nie musi sobie zamortyzowac poniesionych kosztow).
pff … tak wszystko opiera się o licencje
burdel w kodzie gcc utrudniona modyfikacji monolitu itd nie ma znaczenia.
W stosunku do Mysql jest zasadnicza różnica. Brak podwójnego licencjonowania oraz “prywatnej” własności znaków towarowych.
Zieeeeeewww. Od dawna wiadomo, że projekty na licencjach BSD i ogólnie non-copyleft (Apache, Python, Perl, FreeBSD, zlib) rozwijają się równie dobrze jak projekty na licencji GPL.
Istnieje wprawdzie rozpowszechniony pogląd o tym, że licencja GPL bardziej stymuluje rozwój projektu, tym niemniej nie widziałem nigdy żadnej statystyki, która by tego dowodziła. (Pogląd odwrotny też istnieje, tylko jest mniej popularny, vide autor newsa i równie nieudokumentowany). Zwolennicy tych tez z reguły ograniczają się do porównania wybranych projektów, które akurat im pasują do argumentacji.
Przykłady:
1. Linux obsługuje więcej sprzętu niż FreeBSD, czyli licencja copyleftowa jest lepsza.
2. Najlepszy serwer WWW (Apache) lest na licencji non-copyleft, a żaden GPL-owy serwer nawet się do niego nie zbliża. Czyli BSD jest lepsze.
Co do MySQL — w tym przypadku licencja GPL działa dokładnie tak, jak powinna. Natomiast autor MySQL-a chciałby móc najpierw sprzedać wszystkie prawa do kodu Oracle, a potem dalej ciągnąć z niego zyski. Najpierw zjadł ciastko, a teraz psioczy, że go już nie ma.
Nawiasem mówiąc, duży procent ludzi używających licencji GPL po prostu jej nie rozumie i potem dochodzi do takich spektakularnych zdziwień jak w przypadku autora MySQL. GPL ma to do siebie, że chroni _dostępność kodu_, a nie _interesy programisty_. W efekcie wypuszczająć kod na GPL-u bardzo łatwo pozbawić się praw do swobodnego rozporządzania nim.
Nie wnikając w kwestię licencji to nie nazwałbym najlepszym Apache. Najpopularniejszym — tak. Ale osobiści palmę pierwszeństwa ma jeden z dwójki lighttpd/nginx (używam tego pierwszego).
@bies: Oba na licencji BSD.
@trasz: przecież bies napisał: “Nie wnikając w kwestię licencji “
Najlepszy serwer WWW (Apache) — spora przesada, apache jest jedynie popularny, tak samo jak php :]
Nigdy nie słyszałem o teorii szybszego rozwoju zależnego od licencji. Wszystko według mnie zależy od konkretnej sytuacji. Linux akurat powstał w takim czasie gdy nikt nie myślał nawet o współpracy z otwartymi projektami więc licencja GPL (podstępnie ) napędzała jego rozwój, obecnie prawdopodobnie szybciej rozwijałby się na BSD, bo firmy już wiedzą że lepiej zwrócić kod niż bawić się we własne forki. 1
To ja zamiast porównywać przytoczę pewien fakt. Pamiętasz, że Wine było kiedyś na MIT? A pamiętasz może też dlaczego już nie jest?
@Reddie: Bo autorom wydawalo sie, ze to cos zmieni. Nie zmienilo – nadal sa komercyjne pochodne Wine, a autorzy nic na tym nie zyskali.
http://www.codeweavers.com/about/community/contributions/
Nic a nic.
@Reddie: Do projektow na licencji BSD tez wraca ulepszony kod. A na sprzedazy przepakowanego Wine nadal pare osob zarabia, nie dajac autorom ani grosza. Wiec tak, nic a nic.
Twoje bzdury “nic a nic” tak jaskrawo kontrastują z zawartością powyższego linka, że aż nie ma potrzeby ich komentowania
Tylko że licencję Wine zmieniono w 2002 r., a na tej stronie jest napisane, że oni dokładają się do projektu od 1999 r. Ergo, licencja MIT ich nie odstraszała.
Ale z drugiej strony ludzie od Wine sami twierdzą, że po zmianie licencji ilość przysyłanego kodu wzrosła
Wniosek? Prawdopodobnie dla każdego projektu istnieje optymalna licencja i uogólnienia nie mają sensu.
Dorzucę jeszcze taki – zdawałoby się oczywisty – fakt, że zmiana licencji zapobiegła dymaniu programistów przez pewną komercyjną firmę
@Reddie: Slabo zapobiegla, skoro Cedega nadal robi to samo co przedtem.
Znaczy podbiera kod? Co za wieści, zgłoś co prędzej do SFLC.
Czytaj : Najlepiej jak dany projekt ma licencję najbardziej adekwatną dla siebie
Jeśli ktoś definiuje biznes jako okradanie innych z ich pracy, to faktycznie, GPL nie jest przyjazna dla biznesu.
Ale jeśli biznes chce wdrożyć u siebie otwarty model rozwoju oprogramowania i rozumie jakie płyną z tego korzyści i ew. wady (nie da się oszukiwać klientów, bo po prostu odejdą) w porównaniu z zamkniętym modelem, to licencja GPL jest idealna. Dostarcza podstaw prawnych dla otwartego modelu rozwoju oprogramowania jednocześnie gwarantując, że ktoś inny nie okradnie twojej firmy.
@oO: Innymi slowy, jesli ktos chce zarabiac nie na rozwijaniu oprogramowania, ale na czerpaniu korzysci z pracy innych – jak na przyklad RedHat – to licencja GPL jest idealna.
@trsh
tak po prawdzie red hat więcej daje niż aplle. Więc nie rozumiem twojego zacietrzewienia na punkcie tej firmy.
I to właśnie z pracy red hata korzysta taki gigant jak oracle (unbreakable).
To popatrz jak na tym zyskał SUN otwierając niemal wszystkie swoje kluczowe projekty .
Jako entuzjasta LLVM i Clanga jestem bardzo zadowolony i dalej trzymam kciuki!
Jako sceptyk wobec dotychczasowego sposobu wypowiedzi trasza żałuję, że do tej pory nie zajmował się pisaniem właśnie takich wiadomości, co się komuś udało i dlaczego jest warte uwagi, a nie wyszukiwaniem co inni robią jego zdaniem źle i jakie to jest niewarte uwagi. Wyszedł bardzo dobry nius, nawet porównania z GCC są rozsądne, nie naładowane testosteronem – wielki brat jest pod wrażeniem, oby tak dalej.
mi sie wydawalo ze E.T. juz pisal sensowne newsy, komentarze “od siebie” umieszczajac tam gdzie nalezy – tj. w komentarzach pod samym tekstem. moze faktycznie wczesniejsze jego newsy przejrze
Sensowne – może, ale dobre – MSZ nie.
“z braku polskiego odpowiednika – jako ’self-hosted’.”
Czy słowo “samokompilujący” jest złe? Oczywiście, pomijając fakt, że połączenie “kompilator samokomilujący” nie jest zbyt szczęśliwe
@Zbigniew Czernik: Nie jest zle, po prostu nigdy wczesniej go nie slyszalem. Nie slyszalo o nim takze Google.
Jeśli już, to “samokompilującysię”. A taka nazwa to już zupełnie odpada.
A może “samowystarczalny”?
Szybkość rozwoju Clanga i LLVM naprawdę robi wrażenie. Może niech ktoś szepnie słówko Apple, że XServer jest naprawdę fajny, tylko trzeba by go przepisać

Na razie trzymam kciuki co by trasz wygrał zakład
PS. Ikonka GNU przy newsie trafiona idealnie! Ach te tagi
To miło, że powstaje alternatywa dla gcc – konkurencja jest dobra.
A co wyższości jednej licencji nad drugą, to vim wymiata a emacs ssie.
Święte wojna.
Ale trzeba przyznać, że świat BSD rozwija się wspaniale. Szkoda tylko, że jest zakładnikiem apple:P(złośliwość gratis)
@kuki: Z kolei swiat GPL jest zakladnikiem RedHata, IBM-a i paru innych firm, ktore go napedzaja. Taki lajf.
Widzisz trsh masz doskonały pomysł na naprawienie świata, wysadzisz kilka firemek w powietrze i będziesz miał problem z głowy. GPL samo umże:]
@ak47: Wyobraz sobie, ze gram z kims w Quake. Czy wedlug ciebie oznacza to, ze chcialbym tego kogos zabic tak naprawde, poza gra, albo rozwalic serwery gry? Dlaczego myslisz, ze z Linuksem jest inaczej?
nie wyobrażam sobie tego
Quake anie nie jest by apple ani nie jest BSD
A tak dla szarego użytkownika (nie programisty) rozwój alternatywnego kompilatora niesie za sobą…?
*prócz oczywistego wzajemnego napędzania konkurencji
@grizz: Szarego uzytkownika kompilator zasadniczo nie obchodzi, wiec pewnie niewiele.
trasz grizz nie mówi o “obchodzeniu” a o “korzyściach” które mogą być ogromne
głównie dla tego, że LLVM, może służyć nie tylko do kompilacji C/C++ ale również wszelkiej maści języki a nawet shadery co nic użytkowników nie obchodzi ale przyspieszenie jakie może ze sobą przynieść (oraz parę nowych nowinek) już tak Kropka
np. to ze clang jest znacznie milej dopracowany z p. widzenia endusera – np. dzieki temu ze pluje znacznie czytelniejszymi komunikatami bledow (a pomyslec ze kiedys to byl argument dla gcc vs watcom
), szybciej kompiluje, a moduly z ktorych sie sklada sa nadaja sie do uzycia w innych niz kompiloatory programach (np. w srodowiskach ide).
jak dobrze dopieszcza calosc, byc moze uzywanie “precompiled headers”, czy kompilacja przyrostowa – bedzie znacznie prostsze do zaimplementowania niz w giecycu.
Np. szybsze wprowadzanie usprawnień i nowości
PCC FTW!
… ktorego nie wiem czy sledzisz rozwoj – bo tak wlasciwie to nie ma co sledzic…
Aby dopowiedziec (nie dokopac) Apple od lat przemilcza istnienie linuxa i innych systemow OpenSource.
Nie wspiera itunes, safari (jest np. na windows) nie wspiera innych systemow plikow, nie wspiera praktycznie niczego a juz zupelnie nie informuje o tym, ze maki moga o zgrozo wspoldzialac z linuxem!
Swego czasu szukalem jakis odnosnikow na stronach Apple o Linuxie. Czegokolwiek i nie znalazlem. Moze komus z WAS sie uda?
@Wolix: Z drugiej strony, spolecznosc wokol Linuksa dostrzega Apple w dokladnie takim stopniu, jaki jest potrzebny od siania FUD-u na temat produktow tej firmy. Z dwojga zlego postawa Apple wydaje mi sie bardziej fair.
A CUPS to z nieba spadł;)
“Kompilator, który to potrafi, określa się – z braku polskiego odpowiednika – jako ’self-hosted’.”
Slowo ’samodzielny’ dokladnie tyle samo wyjasnia.
O ile te “hostedy” i “backendy” mozna od biedy zrozumiec, to nie da sie tego powiedziec o “BSD-like”, czy “milestone”. Ponglish jest w modzie.
Jadro OpenBSD mozna juz nim skompilowac i dziala, to tak malo?