FreeBSD abbandona GCC e passa a LLVM/Clang?

post_090511_2.jpg

Le parole di Brad Davis del board di FreeBSD sono chiare:

Gli ultimi 3-4 mesi abbiamo lavorato insieme agli sviluppatori di LLVM, e abbiamo discusso di molti dei bug e delle questioni che abbiamo sperimentato con il loro front end Clang. Il progetto FreeBSD sta valutando la possibilità di sostituire GCC con Clang. Al momento (Clang) compila il 99% del codice FreeBSD, ed è in grado di compilare un Kernel avviabile per i386/amd64, tuttavia esso ha ancora dei bug e il suo supporto C++ è immaturo.

Sebbene una decisione definitiva non sia stata ancora presa, sembra evidente che l’aver già investito diversi mesi-uomo in una attività di porting deve comunque produrre un “ritorno” di qualche tipo.

Le motivazioni ufficiali che spingono FreeBSD a valutare l’abbandono di GCC in favore di Clang/LLVM non sono state fornite nella mail di report di Brad Davis. Tuttavia, oltre a riportare lo stato dell’attività, vengono anche fornite le istruzioni per poter riprodurre “in casa” l’ambiente, e ottenere un minimo di sistema funzionante. I “più avventurosi” tengano però presente che ci sono delle librerie ancora non perfettamente funzionanti, alcune delle quali abbastanza fondamentali: alcune porzioni della libc (ndr non viene indicato cosa non è compilabile), la libm, e la libcrypto.

Clang/LLVM è un Front End per i linguaggi C, Objective C, C++, e Objective C++ basato sul compilatore Low Level Virtual Machine (LLVM), quest’ultimo inizialmente sviluppato dalla stessa Apple. Si tratta di un prodotto “relativamente giovane” nato con l’obiettivo primario di essere compatibile con il GCC, e con la “presunzione” di superare alcuni dei difetti del prodotto GNU. Infatti i punti di forza vantati da Clang sono: una architettura modulare che consente di usare componenti esterni per l’ispezione o ottimizzazione del codice, una migliore capacità di integrazione nativa con gli IDE, un sistema di diagnostica più chiaro e leggibile, una richiesta inferiore di memoria e cicli di CPU, e infine una licenza, la LLVM BSD, più adatta a scopi commerciali.

La decisione di FreeBSD arriva a pochi giorni da quella, simile sotto certi aspetti, presa da Debian, che sta valutando la possibilità di cambiare le librerie C, passando da GLibC a EGlibC. Questi potrebbero essere “due campanelli di allarme” per GNU. Siete d’accordo con questa “ventata di novità”?

Tag: , , , , ,

Commenti

  1. [1]

    Conoscendo l’ambiente attorno a freebsd, quello che e’ sicuro e’ che se gcc fosse sotto licenza BSD nessuno avrebbe pensato a una migrazione. Sono anni che discutono di compilatori alternativi!

    In ogni caso, sono contento. Un po’ di concorrenza non puo’ che fare bene e stimolare nuove idee :)

  2. [2]

    Provo pena per questa gente.

    Si addannano a re-inventare la ruota perché odiano la GPL. Senza sapere che così tutti poi ruberanno quel codice come fa Apple e come ha fatto Microsoft.

    Complimenti.

  3. [3]

    #2 : da quello che si legge nell’articolo la questione non sembra solo politica, questo LLVM pare nettamente migliore(benché un pò troppo giovane).

    Io viceversa provo pena per certi discorsi “estremisti” di Stallman, ma bisogna essere liberi anche in questo.

    Decantare la libertà e poi criticare chi non ama la GPL è incoerente, non trovi? Complimenti.

  4. [4]

    @fabio

    No, non trovo. Perche’ qui non si tratta di non amare la GPL, e basta.
    In fondo se non ti piace come licenza, puoi tranquillamente pubblicare il tuo software (fatto da te da zero) con licenza BSD o altra licenza, nessuno ti punta la pistola alla tempia.
    E’ stupido semmai re-re-re-re-inventare la ruota solo per distinguersi dalla massa o fare la voce fuori dal coro, per andare contro. Perche’ parliamoci chiaro, pensare di spodestare un software cosi’ ottimizzatto e maturo come GCC con un software come questo che e’ allo stato men che germinale, e’ appunto propaganda la contrario.

  5. [5]

    Sei tu che ci vedi la politica sotto.

    Questo compilatore parrebbe essere migliore, e questi tentano di usarlo. Vero che spesso c’è la contrapposizione GPL vs BSD, ma qui la “politica” non sembra la ragione di questa mossa.

  6. [6]

    ” Le motivazioni ufficiali che spingono FreeBSD a valutare l’abbandono di GCC in favore di Clang/LLVM non sono state fornite nella mail di report di Brad Davis ”

    Forse ho letto male io, ma la parola “migliore” non la vedo proprio Le motivazioni “non” sonostate fornite.
    Quello che invece e’ evidente e’ il maldestro tentativo di cambiare compilatore per fare un dispetto al movimento Gnu, tra l’altro con uno che e’ una sorta di versione alpha inutilizzabile, quindi sono proclami irrealizzabili e basta. Quelli di BSD vogliono passare a roba non Gnu per ovvi motivi, che sono totalmente politici, e questo lo sanno tutti, mica e’ una cosa nuova.

  7. [7]

    Forse ho letto male io, ma le parole “per fare un dispetto al movimento Gnu” non le vedo proprio Le motivazioni “non” sonostate fornite.

  8. [8]

    Che il motivo sia politico e non tecnico è svelato dal fatto che, nello stesso annuncio, si parla della sostituzione del comando grep (in versione GNU) con una versione riscritta da capo licenziata sotto BSD.
    Non mi pare che riscrivere grep possa considerarsi una priorità, né che ci sia un problema di performance (!) o altre cose … il motivo è la licenza e soprattutto il fatto che sia GNU.
    BSD non sopporta GNU per tanti motivi, ma francamente è ridicolo. Non ho mai sentito Stallman criticare aspramente BSD (quando critica la licenza lo fa molto pacatamente e anzi di solito cita quella quasi uguale MIT per non alimentare polemiche con BSD).

  9. [9]

    @Fabio

    Tu sostenevi che il passaggio a Clang fosse dettato da motivi prestazionali, mentre invece da nessuna parte c’e’ scritto questo, molto semplice.
    Vogliono solo evitare GCC per motivi puramente politici, visto che GCC e’ considerato da tutti (ma proprio tutti, anche chi usa software proprietario) uno dei migliori software di compilazione in circolazione in assoluto.

  10. [10]

    Io sto giocando da un po’ di tempo con “clang” (nella distribuzione presa da SVN), sebbene continui ad usare GCC per il lavoro, e devo dire che ne sono favorevolmente impressionato.

    La cosa che mi colpisce di più sono i messaggi di errore: chiarissimi e molto esplicativi. Da quanto si legge alla pagina http://clang.llvm.org/diagnostics.html sembra che questa abilità sia dovuta a un modo abbastanza diverso da GCC di analizzare il codice. (Non vedo l’ora che clang supporti il C++: certi messaggi di errore del GCC sui template gridano vendetta al cospetto di Dio!).

    Un’altra cosa che mi colpisce favorevolmente è la chiarezza con cui è scritto il codice di clang. Non ho problemi a scegliermi questo o quel file sorgente e mettermi a leggerlo: raramente ho fatto fatica a comprendere come funzionasse. Quando a suo tempo avevo provato a fare lo stesso col GCC mi era venuto un gran mal di testa.

    Insomma, mi pare che clang sia un progetto molto promettente. Speriamo che questo serva anche da incentivo per GCC: una situazione di quasi-monopolio non è auspicabile da nessuno.

Inserisci il tuo commento