A while back Drew McCormack reported that Grand Central Dispatch had been made open source:-
“…allowing Grand Central to be ported to other UNIX/Linux systems will encourage its use. Until today, it would have been very unlikely that any new UNIX tools would be developed on Mac OS X using Grand Central, simply because they would only run on the Mac. With the possibility that Grand Central will become available on other UNIX systems, the likelihood that Grand Central will be incorporated into command line tools is greatly increased.”
It has now been reported at EuroBSDCon 2009 at Robinson College Cambridge that Grand Central Dispatch has been ported to FreeBSD.
“Grand Central Dispatch - FreeBSD port URL: http://libdispatch.macosforge.org/ Contact: Robert Watson <rwatson@FreeBSD.org> Contact: Stacey Son <sson@FreeBSD.org> Contact: libdispatch mailing list <email@example.com> We have ported libdispatch, Apple's Grand Central Dispatch event and concurrency framework to FreeBSD: • Added new kqueue primitives required to support GCD, such as EVFILT_USER and EV_TRIGGER • Created autoconf and automake build framework for libdispatch • Modified libdispatch to use POSIX semaphores instead of Mach semaphores • Adapted libdispatch to use portable POSIX time routines Jordan Hubbard has also prepared a blocks-aware clang compiler package for FreeBSD. When compiled with clang, libdispatch provides blocks-based, as well as function-based callbacks. The port was presented at the FreeBSD Developer Summit in Cambridge, UK in September, and slides are online on the devsummit wiki page. A FreeBSD port is now available in the Ports Collection. After FreeBSD 8.0-RELEASE has shipped, the new kqueue primitives will be MFC'd so that libdispatch works out of the box on FreeBSD 8.1-RELEASE. Open tasks: • Complete porting of libdispatch test suite to FreeBSD. • Investigate pthread work queue implementation for FreeBSD. • Evaluate performance impact of some machine-dependent and OS-dependent optimizations present in the Mac OS X version of libdispatch to decide if they should be done for other platforms and OS's. • Explore whether FreeBSD base operating system tools would benefit from being modified to use libdispatch.”