Clang vs GCC - Ο Clang είναι πλέον μια εναλλακτική βιώσιμη επιλογή

dsyrmalis | Κυρ, 04/22/2012 - 12:58 | 5' | 4

Με το πέρασμα του μεταγλωττιστή GCC στην άδεια GPL3, πολλοί ήταν αυτοί που δυσαρεστήθηκαν θεωρώντας τη περιοριστική και ανελεύθερη. Άλλοι φυσικά είδαν τη νέα άδεια ως μια καλύτερη ασπίδα προστασίας απέναντι στο κλειστό λογισμικό. Το αποτέλεσμα ήταν σε κάποια project ανοικτού λογισμικού όπως το FreeBSD, να μένουν στην τελευταία έκδοση του GCC που ήταν υπο την άδεια GPL2. Ταυτόχρονα άρχισαν να δουλεύουν πάνω στην εναλλακτική επιλογή που δεν ήταν άλλη απο το συνδυασμό Clang/LLVM. Αυτή τη στιγμή το FreeBSD 9 είναι "χτισμένο" με τον Clang. Τι γίνεται όμως με το Linux; Και πώς συγκρίνεται ο Clang με τον GCC;
Ειδικά για να απαντήσουμε στο δεύτερο ερώτημα, θα χρειάζονταν σελίδες επι σελίδων. Ας δούμε λοιπόν συνοπτικά σε τι συμπεράσματα κατέληξε ο developer των Debian/Ubuntu, Sylvestre Ledru μεταγλωττίζοντας το Debian αποκλειστικά με τοn Clang. Να σημειώσουμε πως η εργασία αυτή έγινε για δύο λόγους:

  1. Για να αποδειχθεί κατά πόσο o Clang είναι (ή δεν είναι) μια εναλλακτική και βιώσιμη επιλογή.
  2. Αν μεταγλωττίζοντας με διαφορετικούς compilers που δίνουν διαφορετικά σφάλματα και προειδοποιήσεις μπορεί να υπάρξει βελτίωση στον παραγόμενο κώδικα.

Και τα συμπεράσματα του Sylvestre:

  •  Ο Clang κατα τη μεταγλώττιση δίνει περισσότερα και πιο ενδιαφέροντα λάθη και προειδοποιήσεις σε σxέση με τον GCC
  • Αν και αναμένονταν πολλά λάθη, ουσιαστικά αυτά που υπήρξαν σχετίζονταν λιγότερο με το μεταγλωττιστή και περισσότερο στις διαφορές των υποστηριζόμενων προτύπων της γλώσσας C.
  • Ο Clang είναι πλέον σταθερός και μπορεί με μικρές επεμβάσεις να χρησιμοποιηθεί για τη μεταγλώττιση της διανομής Debian.
  • Υπάρχει η πιθανότητα σε μερικά χρόνια ο Clang να αντικαταστήσει τον GCC.
  • Οι developers του Clang δουλεύουν με ταχύτατους ρυθμούς. Στην έκδοση 2.9 οι αποτυχίες στη μεταγλώττιση των πακέτων έφταναν το 14,5%, Στην έκδοση 3 οι αποτυχίες μειώθηκαν στο 8,8% των συνολικών πακέτων.

Απο τα στοιχεία που βλέπουμε, φαίνεται πως ο Clang είναι μια εναλλακτική και βιώσιμη επιλογή και για το Linux. Ας μην ξεχνάμε πως έχει πια υιοθετηθεί απο το FreeBSD και την Apple. Διάφορα δημοφιλή προγράμματα όπως ο Chromium χτίζονται με τη βοήθεια του Clang. Υπο κάποιες συνθήκες μάλιστα ο Clang είναι εως και τρεις φορές ταχύτερος απο τον GCC. Για πολλούς βέβαια είναι αρνητικό το ότι συμμετέχει η Apple στην ανάπτυξη του. Κάποιοι άλλοι ανταπαντούν πως το ίδιο ισχύει για τον GCC και την Google.

Εσείς τελικά πως βλέπετε το όλο θέμα;

  • Θα αντικαταστήσει ο Clang τον GCC;
  • Θα έχουμε ίσως κάποια διάσπαση με μερικές διανομές να παραμένουν στον GCC και κάποιες άλλες τον Clang; Θα ωφελούσε το Linux κάτι τέτοιο;
  • Πώς βλέπετε το θέμα μεταξύ των δυο διαφορετικών αδειών χρήσης;   

Την πλήρη και λεπτομερή παρουσίαση της εργασίας θα τη βρούμε κάνοντας κλικ εδώ.

Δώσε αστέρια!
Σχόλια

Σε μια γρηγορη δοκιμη που εκανα παρατηρησα και εγω την καλυτερη εμφανιση στα σφαλματα , αφου δεν υπεδειξε μονο τη σειρα με το λαθος αλλα εδωσε πιο αναλυτικη αναφορα στο τι πηγε στραβα.Αξιζει να κοιταξουμε και αυτη την εναλλακτικη :)

ωραία όλα αυτά περί clang μα εγώ ακόμα δεν είμαι καθόλου σίγουρος για να επιχειρήσω να κάνω μεταγλώττιση του kernel που πάνω του είναι χτισμένο το sabayon-gnome3 που έχω εγκαταστημένο στο laptop της συντρόφου μου (μ'αυτό είμαι τώρα "μέσα").
Ενας πλήρης οδηγός ΚΑΛΟΓΡΑΜΜΕΝΟΣ -όπως το άρθρο για τα στάδια "μπουταρίσματος" του τελευταίου τεύχους- & κατανοητός ΕΙΝΑΙ ότι χρειάζομαι.

@ghostblader Ήταν μεγάλο το αρχείο; Είδες διαφορές στους χρόνους;
@Ηλία Μην το επιχειρήσεις καλύτερα, εκτός και αν έχεις κάποιο δεύτερο λειτουργικό σε ξεχωριστό partition για πειραματισμό. Θέλει μεγάλη εμπειρία. 

dsyrmalis]@ghostblader Ήταν μεγάλο το αρχείο; Είδες διαφορές στους χρόνους;



Οχι ηταν μικρο το προγραμμα που δοκιμασα ,  το εκανα για να δω κυριως τις αναφορες στα σφαλματα και τις προειδοποιησεις.Θα δοκιμασω μερικα μεγαλα πακετα για να δω και τον χρονο.