Apple apre i sorgenti di Grand Central Dispatch

post_090915_1.jpg

Grand Central Dispatch, una delle più recenti tecnologie presenti in Mac OS X 10.6 Snow Leopard, è stato rilasciato come prodotto open source. Apple, che ha sviluppato e consolidato questa tecnologia, ha “aperto i sorgenti” e li ha distribuiti vincolandoli alla Apache Software License. Questa è una notizia che ai più attenti risulterà certamente gradita, vista l’importanza strategica che Apple ha investito nei confronti di questa tecnologia.

Grand Central Dispatch è una tecnologia che consente di ottimizzare l’esecuzione del codice C sui sistemi multicore. Il concetto base è quello del “blocco di codice” (Blocks). L’applicazione viene suddivisa in blocchi di codice C, e questi utilizzando GCD vengono eseguiti dal sistema. Il programmatore deve indicare quali sono i blocchi di codice sequenziali, quali quelli che possono essere eseguiti in concorrenza, quali i gruppi di blocchi di codice da sincronizzare. GCD implementa un pool di thread general purpose già pronti per l’esecuzione, e provvede al dispatch, cioè alla distribuzione dei blocchi di codice tra i thread disponibili.

Stando a quanto dice Apple la presenza di un pool di thread già disponibili per il dispatch velocizza l’esecuzione delle applicazioni multithread, risparmiando una notevole quantità di istruzioni (binarie) per la creazione e terminazione dei thread.

Grand Central Dispatch in realtà è una libreria C di nome libdispatch, che dipende in parte dal sistema Mac OS X e che richiede una estensione del linguaggio C che va sotto il nome di “Blocks”. Quest’ultima può essere vista come un insieme di notazioni aggiuntive da utilizzare nella scrittura del programma C per l’annotazione dei blocchi e la loro gestione.

Il rilascio di una tecnologia come GCD è certamente cosa ben gradita, anche se a questo punto bisognerà capire come usarla nel mondo Linux e che vantaggi ne deriveranno. Certamente, le prime due attività da effettuare saranno la depurazione da tutto il codice dipendente dal sistema Mac OS X e la realizzazione di una estensione GCC per supportare i Blocks.

Volendo essere realisti tra queste attività quella più complessa sarà certamente la seconda, e non tanto per questioni tecniche ma quanto per questioni legali. Infatti, stando a quanto scritto da Ars Technica, sembra che una estensione GCC per supportare i Blocks sia già stata sottoposta al team della GNU, ma è stata rifiutata per problemi di compatibilità di licenza.

Chi vuole utilizzare i Blocks e GCD potrà comunque farlo, ma dovrà far uso del compilatore LLVM e non di quello GCC.

Ora, però, al di la di tutte le problematiche tecniche e legali il punto è anche un altro: Linux e la comunità Open Source sono pronti per una tecnologia come GCD? Usare GCD significa riscrivere un’applicazione C secondo criteri ben precisi. Chi sarà disposto farlo?

Tag: ,

Commenti

  1. [1]

    Dopo ossblog anche voi postate questa roba sul digustoso mondo apple, peccato. Per aumentare il traffico vi assicuro che non serve fare queste cose, almeno se volete lettori affezionati realmente interessati all’opensource.

    Peccato.

    Unsubscribe.

  2. [2]

    libdispatch è molto interessante ma non è altro che una serie di idee copiate dal progetto OpenMP che esiste già da svariato tempo su linux/unix/win e non si limita al solo linguaggio C come libdispatch. attualmente OpenMP e già integrato in gcc4.2 e superiori e molte applicazioni linux ne fanno uso (e il numero tende a crescere), ma tale supporto non è abilitato di default sulle distro linux fatta eccezione per Gentoo dove è possibile avere applicazioni con pieno supporto openmp tramite l’apposita USE ‘openmp’ (al momento circa 20).

    l’apertura del codice sorgente di libdispatch la vedo come un fatto positivo solo perchè in questo modo OpenMP potrà, nel tempo, beneficiare anche delle eventuali ottimizzazioni/idee della Apple.

Inserisci il tuo commento