Hi, Actually, I had a discussion two weeks ago with Xavier and Damien about this issue. There is some kind of agreement that the ocaml way of supporting multicore would be to have several runtimes running in the same process, in different threads. That way, the GC would still be mono-threaded, so almost no speed loss for mono-threaded programs (i.e. currently all OCaml programs ;-) ). There would be some kind of "fork" function, that would create a new thread running a function in a new heap, probably generated by a copy-on-need algorithm. The different threads would not share heap memory, but would be allowed to share structures outside of their heaps, probably for simple types like strings and int/float arrays (or using the Ancient library). Now, there are still two problems: (1) We don't know yet how to implement that in a portable way. TLS (Thread-local storage) is only available on a few architectures. And not using TLS implies non-backward compatible changes to the FFI (Foreign-Functions Interface), i.e. all stub libraries would have to be rewritten. (2) As Gerd pointed it, there are not so many programs that would benefit from that. So it is not currently on the top of our priority list, although I am planning to give it a try in the next months, at least for the TLS version. Cheers, -- Fabrice On 03/24/2011 02:45 PM, Alexy Khrabrov wrote: > Where does the OCaml team stand on the multicore issues? A year or so ago, when there was a prototype parallel GC implementation, IIRC, Xavier said it has to be done right. So what are the official plans and the status of integrating what volunteers had done? > > WIth Scala having a robust actors model and AKKA kernel, and Clojure built around efficient shared memory concurrency with agents and references and STM, and Haskell also really parallel, OCaml is lacking behind. Furthermore, F# builds on strongly parallel .NET, overcoming granddaddy. With multicores common even in laptops and iPads, we need an efficient multicore OCaml! Due to the model different from Haskell or Scala and Clojure, now all on github, OCaml is both more stable and also is slower to advance -- what do folks think about this situation? How do you do shared memory parallelism now? > > Cheers, > Alexy >