On Jun 9, 2009, at 10:59 AM, Jordan K. Hubbard wrote:
On Jun 9, 2009, at 5:57 AM, Rich Morin wrote:
It's also pretty clear that any first-class development language on Mac OS X, going forward, will have to support this. Ruby has all sorts of block-based goodness already and Laurent is busily implementing JIT for MacRuby, so I speculate that GCD may well be in MacRuby's future.
Has anyone looked into this possibility, if only to the extent of sketching out what language extensions might be needed?
Various apple folks on this list have, as one might expect, looked into the possibility. Given that MacRuby is a cooperative project which involves folks both inside and outside Apple, however, we need to wait for SnowLeopard to ship before we do much more than look, since this extending the Ruby language to better support parallelism is something we need to discuss as a full and complete group before making any moves. Laurent also has more than enough on his plate just finishing up the LLVM work and we don't need him distracted by any new shiny objects before 0.5 reaches feature parity with 0.4, at the very least. :-) I would prefer that we focus on figuring out what needs to be done as a prerequisite for bringing the - experimental branch back to trunk before even considering at which of many possible mountains we would like to climb next.
Indeed, there are a few things to do first, including the implementation of a threading model. Threads have not been implemented yet in the experimental branch (we keep the best for last :)). I contemplated implementing the Thread class on top of GCD a while ago, but the semantics of GCD and the Thread APIs don't always match (and it would make MacRuby SL-only). So, it's better I think to have real posix threads first, then an API to talk to GCD later. I already started thinking about integrating GCD differently, after some brainstorming with a few persons. I will eventually hack something but unfortunately this won't be public until SL ships. Laurent