[MontelLUG] Fork e compilatori [Era] manifesto Linux Day

Davide Rondini davide.rondini a gmail.com
Lun 1 Nov 2010 18:47:59 CET


> > Argh, un altro compilatore nooo... Perché non chiamarlo Yet Another C
> > Compiler? Capisco l'esigenza di migliorare le prestazioni, di inserire
> > feature nuove, ma non era meglio fare un branch sperimentale e testare
> > nuove cose lì?
> 
> L'approccio è abbastanza diverso e più "moderno". Clang è solamente un
> frontend di LLVM, uno strumento che permette di fare cose che nessun
> fork di GCC avrebbe mai permesso:
> http://www.phoronix.com/scan.php?page=news_item&px=ODY4Nw
> http://www.phoronix.com/scan.php?page=news_item&px=ODcyOQ
> http://www.phoronix.com/scan.php?page=article&item=gallium3d_llvmpipe&num=1
> http://www.phoronix.com/scan.php?page=article&item=intel_glsl2_llvmpipe&num
> =1

Bah, questo è opinabile: anche gcc stesso è stato praticamente riscritto da 
zero nel passaggio dalle versioni 3.x alle 4.x, tra l'altro proprio separando 
la struttura logica in tre parti (back-end, middle-end e front-end), proprio 
per renderlo più flessibile. Non mi sono addentrato in tutti quei link, ma 
dalla wikipedia leggo che che LLVM già usava gcc come front end, quindi perché 
scriverne un altro?

http://it.wikipedia.org/wiki/LLVM

Quello che obietto non è di paralizzare lo sviluppo per non osare riscrivere 
certi pezzi di codice con approcci innovativi, dico solo che certe cose si 
potrebbero concentrare in un unico team di sviluppo, in seno a un singolo 
progetto, in modo da non sprecare risorse.

> 
> > Un compilatore non è un player MP3, che si cambia dalla sera alla
> > mattina, ci sono problemi di adattamento del codice, compatibilità con
> > le applicazioni, con le librerie C... GCC funziona bene e pressoché
> > ovunque (mentre questo se non capisco male, non è compatibile con
> > Windows): perché farne un altro, disperdendo risore (i programmatori di
> > compilatori mica si trovano al supermercato)?
> 
> Perché come ho scritto l'approccio è più moderno e "astratto". Alle
> volte per adattarsi a cambiamenti radicali dell'hardware (la
> computazione che si sposta sempre più dalle CPU alle GPU programmabili)
> è meglio riprogettare e riscrivere il software da zero, piuttosto che
> creare dei Frankenstein che non fanno bene né una cosa né un'altra.

Non credo che GCC sia così "legnoso" da non poter prevedere di poter compilare 
codice che giri anche sulle GPU. La struttura è pensata apposta per poterci 
innestare front-end e back-end per linguaggi e piattaforme hardware più 
disparati possibile.

> 
> > Capisco l'esigenza di Apple, ma adesso ci si troverà con Linux
> > che va con un compilatore e BSD con un altro.
> 
> Se sono già riusciti a compilare una Debian fino a Xorg e farla girare
> già adesso può darsi che si troveranno distro Clang-compatibili facilmente.
> 
> L'eccesso di varianti crea casini, ma è altrettanto vero il contrario:
> il monopolio, la fossilizzazione e l'accettazione dello "status quo"
> possono essere altrettanto pericolosi per il futuro di un sistema
> dinamico come quello informatico.
> 

Appunto: non c'erano già abbastanza build di Debian?

Non ho mai parlato di mantenere il sacro GCC immutabile e intoccabile, dico 
solo che non mi pareva il caso di disperdere risorse di sviluppo in progetti 
che in fondo fanno la stessa cosa.

Ciao
CD




More information about the montellug mailing list