Poco più di tre settimane fa Apple aveva distribuito i sorgenti di Grand Central Dispatch (GCD), una delle tecnologie più interessanti di Snow Leopard. Oggi, nel FreeBSD Quarterly Status Report, viene annunciato un primo porting di GCD proprio su FreeBSD.
Quanti di voi erano in attesa di una news simile nel mondo Linux resteranno delusi, GCD ancora non sbarca ufficialmente sul pinguino. FreeBSD ha fatto prima, e gli utenti di questo sistema operativo saranno certamente contenti.
In realtà, leggendo attentamente il report quadrimestrale si apprende che il lavoro è solo all´inizio.
Ricordiamo infatti che GCD comprende sia la libreria libdispatch, che un insieme di estensioni al linguaggio C, note queste col nome di "blocks". Supportare GCD significa effettuare il porting di libdispatch e dotarsi di un compilatore in grado di gestire i blocks.
FreeBSD probabilmente rispetto a Linux è risultato più avvantaggiato. Il supporto ai block è stato garantito dalle pre-esistenti estensioni del compilatore LLVM/clang; e il team di FreeBSD in questi ultimi mesi ha lavorato proprio alla compilazione del sistema operativo con questo tool. Quindi il lavoro di porting è consistito semplicemente nell´adeguare libdispatch all´ambiente FreeBSD, rendendola più Posix-Friendly. O meglio, il lavoro iniziale compiuto in queste settimane ha gettato le base per il porting da completare nelle prossime.
Chiudiamo questo post con un piccola chicca. Eccovi il programma "Hello World" scritto usando GCD.
int main(int argc, char* argv[])
{
dispatch_queue_t queue = dispatch_queue_get_main();
dispatch_async(queue, ^{ printf("%s: Hello Worldn", argv[0]); });
dispatch_main();
}
Se volete più informazioni sullo stato del porting di Grand Central Dispatch vi consigliamo di consultare i documenti pubblicati nel recente FreeBSd Developer Summit 2009.