The Discourse Servers

This is an area where Ruby has been bucking the trend (or at least, not avidly following it) for some time now. The language has some support for various forms of lightweight concurrency, but still lacks good support for native threads – it’s present but somewhat crippled, as I recall. The result is the only easy way to take advantage of multiple cores in Ruby to actually fork independent processes.

This article, while primarily about Rubinius and not MRI, starts out discussing concurrency issues in MRI as a prelude to describing how Rubinius is trying to move past them, and seems to summarize the issues pretty well.

I think a lot of people assume that because Ruby is so popular that all of the available interpreters – especially the canonical one – must be up to date with all the latest tricks for taking advantage of our multi-core future. Unfortunately, that’s just not true! Hopefully it will get better, but right now, MRI is pretty old fashioned…