Czy Clang / LLVM jest gotowy na najwyższy czas? [Zamknięte]

9

Czy zamiast gcc można używać Clanga? Jakie masz na to doświadczenie? Jakie są wady?

Wydajność kompilacji jest znacznie lepsza niż gcc, ale czy chodzi o wydajność kodu generowanego podczas jego wykonywania?

Czy istnieją dobre narzędzia, takie jak interfejs użytkownika (IDE), do uruchamiania w systemie Linux lub Windows?

EDYCJA: Mam na myśli kompilator C. C ++ nie jest jeszcze tak dobry.

Maniero
źródło

Odpowiedzi:

9

Aktualizacja: teraz (2013) Clang jest gotowy na najwyższy czas i jest używany przez niektóre firmy, takie jak Google. Jednak nie jest w pełni użyteczny w systemie Windows, praca na tej platformie to „praca w toku”. LLVM / Clang jest obecnie domyślnym kompilatorem w MacOSX / XCode, ale nie jest to dokładnie to samo wydanie, co LLVM, więc uważaj na drobne różnice (głównie różnice numerów wersji).


Zgodnie z listą dyskusyjną clang dev , ostatnio udało się zbudować wersję trunk :

  • jądro Linuksa (ostatnia wersja)
  • Qt (najwyraźniej ze specjalnym procesem kompilacji)
  • Chrom (ostatnia wersja)

Powiedziałbym więc, że nadchodząca wersja (2.9) może być dobrym kompilatorem „gotowym do użycia w prime time”.

Jeśli jednak twój projekt ma plan i budżet, być może nie jest dobrym pomysłem wypróbowanie kompilatora, który nie został jeszcze dokładnie przetestowany. Jeśli możesz eksperymentować i przekazywać informacje zwrotne społeczności programistów Clang, skorzystaj z tego, wszyscy wygrywają. Jeśli nie, być może powinieneś użyć dojrzałego i intensywnie używanego kompilatora, takiego jak gcc (w jego najnowszych wersjach), aby mieć „stabilną podstawę”, na której można polegać podczas pracy nad projektem.

Klaim
źródło
Dla uzupełnienia, nie jest to profesjonalny projekt ... ale to prawie 20% czasu pracy.
Maniero,
Chciałbym spróbować zakląć w nieprofesjonalnym projekcie międzyplatformowym. W rzeczywistości tego właśnie próbuję.
Klaim,
Dzięki. Moje obawy dotyczą przyszłości projektu. Zacznę od eksperymentu, ale wkrótce chcę zrobić więcej.
Maniero,
Jeśli jest to projekt długoterminowy, może skorzystać z CLanga, gdy będzie stabilny, poprawny, zoptymalizowany i będzie w pełni funkcjonalny w C ++ 0x (jeśli używasz c ++). Ponieważ jego celem jest bycie szybszym kompilatorem i najwyraźniej już tak jest. I to jest ważne.
Klaim,
1
Clang buduje także iOS, Xcode i prawie wszystko, co Apple wysyła.
Mike Weller
8

Cóż, z pewnością jest gotowy do pierwotnej wersji na Mac OS X, ponieważ wiele aplikacji Mac OS X jest kompilowanych za pomocą clang. Ale nawet na innych platformach obsługa C jest dość solidna, a zespół poczynił wielkie postępy dzięki obsłudze C ++.

Mówiąc ogólnie, clang kompiluje kod szybciej niż gcc, ale gcc generuje lepiej zoptymalizowany kod. (Są przypadki skrajne, w których nie jest to prawda, ale ogólnie taki jest obecny stan).

mipadi
źródło
Widzę ten sam problem, Clang jest jeszcze zbyt przywiązany do MacOS / BSD.
Maniero,
Próbowałem CLang na Windows 7 i działał poprawnie. Próbowałem też na Ubuntu. Myślę, że twoje informacje nie są aktualne, ale jest to logiczne, ponieważ w ostatnich miesiącach włożono wiele poprawek między platformami. Więc może nie będzie tak mac-centryczny, gdy pojawi się kolejna wersja.
Klaim,
1
@Klaim: Nie mówię o Clangu per se , ale o całym ekosystemie. Próbowałem kilku rzeczy na problemach z brakiem Win7, ale tylko kompilator na cli.
Maniero,
Odkryłem, że Clang stworzył szybszy plik binarny niż GCC dla mojego projektu. Warto przynajmniej spróbować.
Kendall Hopkins,
Ponadto jest teraz domyślnym kompilatorem dla systemu iOS.
mamcx,
3

Tak naprawdę nie powinieneś polegać na konkretnym kompilatorze, chyba że naprawdę musisz. Powinieneś być w stanie zmienić kompilator na Makefile lub coś i wszystko powinno działać dobrze.

Tutaj używam głównie clang do moich projektów zabawek, ponieważ jest on szybszy i znacznie ważniejszy: jego komunikaty o błędach są tak cholernie wyraźne. Ale kiedy muszę użyć gdb, kompiluję z gcc i -ggdb. Więc clang nie jest jeszcze ukończony i nie może być moim jedynym kompilatorem.

(BTW: Jestem na Gentoo x86, a projekty są w C i C ++)

edit : aby wyjaśnić, clang działa szybciej (w niektórych przypadkach znacznie szybciej). Nie dbam o fantazyjne optymalizacje.


źródło