Re: FreeBSD 9 steht vor der Tür...

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 28 Dec 2011 15:47:40 +0100 (CET)

Marcus Franke wrote:
> Ahh, jetzt verstehe ich auch, warum mir letztens nen gcc aus den Ports
> auf die Platte gespült worden ist. Ich hatte mich schon gewundert.
>
> Ich habe es nicht so mit C oder C++, was macht denn den llvm so
> anders und eventuell besser als den gcc in deinen Augen?

Die Bestrebungen, den gcc zu ersetzen, sind nicht neu.
Vor rund zehn Jahren wurde beispielsweise mal TenDRA hoch
gehandelt, aber daraus ist dann doch nichts geworden.
(Bei Interesse: "TenDRA" in der englischen Wikipedia
nachschlagen.)
Eine zeitlang war auch der Compiler von intel (icc) "in",
weil er besser optimieren konnte als der gcc und somit
performanteren Code erzeugte. Natürlich hätte er den
gcc nicht ersetzt, da er kein Open-Source ist, aber man
kann ihn für Spezialfälle auswählen (/usr/ports/lang/icc).

Und nun ist LLVM/Clang an der Reihe, und die Chancen stehen
sehr gut, dass er tatsächlich der neue System-Compiler von
FreeBSD werden kann.

Gründe gibt es mehrere. Zum einen gibt es Idealisten, die
dogmatisch gegen alles sind, was mit GNU bzw. der GPL
zusammenhängt.

Daneben gibt es handfeste lizenztechnische Gründe, die vor
allem für kommerzielle Anwender von FreeBSD relevant sind.
Beispielsweise gibt es einige Hersteller von Routern,
Firewalls und anderen Appliances, die FreeBSD bzw. Teile
davon verwenden, und bei denen die Lizenzen über Gedeih und
Verderb entscheiden. Hier kommen auch subtile Unterschiede
zwischen GPLv2 und GPLv3 zum tragen. Soviel ich weiß, ist
dies der Hauptgrund, warum FreeBSD seinen System-gcc nicht
mehr aktualisiert hat, seit gcc auf die GPLv3 geschwenkt
ist. LLVM/Clang steht unter BSD-Lizenz.

Schließlich gibt es auch noch rein technische Gründe. Der
gcc hat ein paar unschöne Eigenheiten. Häufig wird ihm
auch vorgeworfen, nicht völlig standardkonform zu sein,
obgleich das umstritten ist. Fakt ist aber, dass LLVM/Clang
ein moderneres, modulares Design hat. Er ist resourcen-
schonender als gcc, d.h. er compiliert Source-Code spürbar
schneller und braucht dabei erheblich weniger Speicher.
Die Performance des erzeugten Codes ist etwa gleichauf mit
gcc (je nach konkretem Fall mal mehr, mal weniger).

Ich persönlich finde z.B. auch die Warnungen bzw. Fehler-
meldungen, die LLVM/Clang ausspuckt, erheblich hilfreicher
und aussagekräftiger als die des gcc. Ich würde sogar
soweit gehen, zu behaupten, dass der gcc bezüglich der
Fehlermeldungen der schlechteste C-Compiler ist, mit dem
ich jemals zu tun hatte, und das waren in rund 25 Jahren
schon etliche. LLVM/Clang gibt sehr präzise Meldungen aus,
die die exakte Stelle im Source-Code bezeichnen (Zeile und
Spalte inkl. Markierung), und die sich auch durch Folge-
fehler nicht irritieren lassen. Als Entwickler ist das von
großem Vorteil. Eines der zahlreichen coolen Features ist
z.B. der Spell-Checker: Wenn der Compiler ein Symbol (Typ,
Variable, ...) nicht kennt, schaut er nach, ob es ein
Ähnliches gibt, und schlägt dies als Korrektur vor. Damit
werden typische Tippfehler sofort offensichtlich. Beispiel
aus der Praxis:

$ cat test.c
#include <sys/stat.h>

int foo(int x, struct stat *P) {
  return P->st_blocksize*2;
}

$ clang test.c
test.c:4:13: error: no member named 'st_blocksize' in 'struct stat';
             did you mean 'st_blksize'?
  return P->st_blocksize*2;
            ^~~~~~~~~~~~
            st_blksize

$ gcc test.c
test.c: In function `foo':
test.c:4: error: 'struct stat' has no member named 'st_blocksize'

Einen sehr schönen, ausführlichen Vergleich findet man hier:
http://clang.llvm.org/diagnostics.html

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
The whole world is a comedy to those that think, a tragedy to those that feel.
  -- Horace Walpole
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 28 Dec 2011 - 15:48:02 CET

search this site