
Più volte abbiamo avuto modo di ribadire che le vere novità di Snow Leopard non sono estetiche bensì nascoste sotto il cofano del nuovo sistema operativo. Una tecnologia della quale non si è parlato abbastanza è LLVM (Low Level Virtual Machine).
Ogni software scritto con un particolare linguaggio di programmazione, per essere eseguito su una specifica architettura hardware, viene dato in pasto ad un compilatore che dopo averlo elaborato crea codice eseguibile ottimizzato. In Mac OS X, i linguaggi di programmazione di riferimento sono C, C++, Objective-C ed il compilatore di sistema è GCC.
LLVM è una completa infrastruttura di compilazione open source nata diversi anni fa nell’Università dell’Illinois. Si tratta di una macchina virtuale di basso livello che si interpone, da una parte con il codice scritto in un linguaggio di programmazione e dall’altra con il generatore di codice specifico per l’architettura di sistema. Il pregio di questa tecnologia è che produce codice eseguibile drasticamente più efficiente rispetto al classico GCC.
Finora LLVM, in Mac OS X 10.5, era stata utilizzata all’interno di OpenGL per implementare alcune funzionalità non presenti direttamente a livello hardware. Nel nuovo sistema operativo, Apple ha sdoganato definitivamente tale tecnologia integrandola all’interno di GCC e dando vita ad un nuovo compilatore: LLVM-GCC 4.2.
Il futuro è già scritto: GCC lascerà definitivamente il posto a Clang, un’architettura totalmente realizzata mediante tecnologia LLVM e dotata di una nuova interfaccia per i diversi linguaggi di programmazione. Ora è più facile comprendere la totale riscrittura di molte componenti del nuovo sistema operativo e le relative performance registrate. Tutto merito di LLVM oltre che di una profonda rivisitazione del codice sorgente.
[Via Ars Technica]
ikki_83
20 set 2009 - 18:04 - #1questo articolo, ovviamente, parla di Mac e non verrà commentato da nessuno degli Apple user dell’ultimo minuto che ormai affollano la rete.
detto questo, complimenti a michele per la news. finalmente qualcosa di serio e interessante.
Fledermaus
20 set 2009 - 18:27 - #2 (nascondi)Sì, peccato però che sia una mera traduzione e non farina del suo sacco…
charger
20 set 2009 - 18:35 - #3Cavolo non lo sapevo…questa cosa potrebbe cambiare il mio giudizio su SL (NON sono ironico).
Ma la compilazione JIT è già disponibile ora?
michele_
20 set 2009 - 18:39 - #4@charger
Certo, il LLVM-GCC 4.2 è utilizzato nelle attuali versioni di Snow Leopard. Considera che Apple, in tempi non sospetti, ha finanziato “pesantemente” il progetto. Si tratta di una tecnologia rivoluzionaria nel campo della compilazione.
Ciao.
maloxplay
20 set 2009 - 19:10 - #5good very good!
Il sistema migliora sempre! Il nucleo è sempre quello che fa la differenza!
Avanti tutta!
deshi
20 set 2009 - 19:14 - #6http://llvm.org/
charger
20 set 2009 - 19:36 - #7Non mi è ancora chiara la faccenda: se adesso complico un programma in C con gcc (4.2.1), sto usando il “vecchio” gcc o qualche tecnologia nuova (clang?) ?
Non riesco a capire se e quando anche l’utente comune come me potrà utilizzare la compilazione JIT.
gigabytes
20 set 2009 - 20:32 - #8Guardate che per C, C++ e Objective-C non c’è nessuna compilazione JIT! C’è qualche travisazione in questo articolo. LLVM supporta _anche_ la compilazione JIT, e infatti in OS X, l’OpenGL Shading Language e il linguaggio OpenCL vengono compilati Just In Time (JIT appunto) usando LLVM.
Ma per quanto riguarda llvm-gcc e clang, non c’è nessuna compilazione JIT. Per questi compilatore, LLVM viene utilizzato come backend per l’ottimizzazione del codice intermedio e la generazione del codice assembly. Si tratta di un passo in avanti perchè le ottimizzazioni di LLVM sono molto più efficienti di quelle di gcc.
Clang è il front-end C/C++/ObjC del progetto LLVM. Rispetto al front-end di gcc ha un sacco di novità e vantaggi, ma si tratta pur sempre di un compilatore.
Quindi, Clang e LLVM sono delle tecnologie nuove, interessanti ecc… ma niente JIT per C, C++ e Objective-C…
MLCR
20 set 2009 - 20:59 - #9gigabytes ha ragione.
La compilazione JIT non c’entra con C/Objective-C; i miglioramenti di LLVM rispetto a GCC sono da imputare ad una migliore progettazione/programmazione di LLVM. Anche il fatto che molte componenti sono state riscritte non è una conseguenza dell’uso di LLVM piuttosto che di GCC.
clsbn
20 set 2009 - 22:36 - #10@1:
lascia stare i commenti classisti che nell’ambiente della mela proprio non sono di casa. Il mac è un sistema complesso, molto complesso, e questo articolo ancora una volta lo dimostra, ma è reso semplice e facile da usare affinchè tutti anche chi non ha mai compilato un programma, un kernel o una libreria sarà in grado di usarlo e di farci ciò che lo appaga di più. Dal semplice navigare sul web a scrivere software per iphone, passando per il video editing, produzione musicale e office automation e tutto nella più grande semplicità e intuitività, tipica dell’ambiente della mela. A questo punto aggiungerei complimenti a chi ha scritto l’articolo su un argomento così difficile portandolo alla conoscenza di tutti, ma ben vengano tutti i nuovi utenti, anche se inesperti, che saremo lieti di aiutare se necessario.
P.S.: non vorrei scatenare un flame ma ritengo personalmente che linux è rimasto un ambiente un po’ di nicchia proprio per via dell’esercito di sapientoni che lo frequenta e lo pubblicizza. Per fortuna che Canonical sta facendo un ottimo lavoro con ubuntu.
michele_
20 set 2009 - 22:55 - #11@gigabytes, @MLCR
Grazie per la segnalazione, ho provveduto a correggere. :)
Dontfeedme
21 set 2009 - 01:01 - #12Bell’articolo (non sono ironico)
Fledermaus
21 set 2009 - 02:28 - #13Mah, non capisco il motivo di tutti questi elogi all’articolo “serio e interessante” quando non è altro che traduzione&collage di un articolo altrui… Forse è il caso che ci togliamo un po’ di prosciutto dagli occhi.
-teo-
21 set 2009 - 07:47 - #14“Mah, non capisco il motivo di tutti questi elogi all’articolo “serio e interessante” quando non è altro che traduzione&collage di un articolo altrui… ”
Mi aggiungo all’elogio, perché anche se non l’ho espresso, quando qui su melablog è uscito l’articolo che segnalava la presenza della recensione di Ars Technica (http://www.melablog.it/tips/item/john-siracusa-recensisce-snow-leopard) in molti si sono lamentati (e mi sarei aggiunto) del fatto che non fosse altro che un riportare l’esistenza dell’articolo senza avere contenuti. Se non erro poi il post è stato rimosso.
Se la strada è invece quella di riportare degli estratti – e poi chi vuole continua la lettura sull’articolo originale – come per questo post, è una strada che mi piace.
imo85
21 set 2009 - 09:07 - #15-teo- la fonte però dovrebbero citarla subito…e non aspettare al solito che qualcuno li sgami
m0rd0r
21 set 2009 - 09:29 - #16#clsbn
Meno male che ci sei tu che semplifichi….Pinguino
MACchia bianca
21 set 2009 - 09:55 - #17Snow Leopard ha gettato semi importanti, ma sono semi, di cui vedremo il frutto (se programmatori e sviluppatori saranno solerti), non prima di due anni. (certo in un anno potrebbero i programmi potrebbero essere tutti ricompilati in 64bit….ma ci credo poco, poi c’è Openc Cl, poi c’è la questione con Sun, e tante altre cosine che potrebbero davvero trasformare i computer di oggi, in supercomputer…..metteteci che anche con l’hardware non si sta fermi). La parola segreta è : Sinergia.
clsbn
21 set 2009 - 23:03 - #18@mordor
non capisco… Ti dispiace essere più esplicito? Grazie