JoCaml Released

More exciting news for functional programming fans with an interest in concurrency: the JoCaml project has been revived and is now fully supported by the main Objective Caml development group at INRIA. JoCaml is an implementation of the Join calculus on top of the OCaml language, giving it a powerful and easy-to-use mechanism for concurrency and distribution.

JoCaml doesn’t change anything in OCaml’s underlying threading engine — in other words a single JoCaml runtime won’t support real SMP threads on a multicore processor, as OCaml’s does not. However, that limitation is looking increasingly irrelevant: if you have 64 cores, simply fork 64 instances of the process! One of the main benefits of OCaml is that it is scorchingly fast and memory-efficient, and the compiler can also produce native binaries, so one process per core just isn’t a huge overhead. Modern operating systems also make forking quite cheap. What OCaml lacked, though, was a good way for those processes to communicate and share work. JoCaml fills that gap through an easy-to-use abstraction with a strong theoretical grounding. Join calculus was also the technique used in Polyphonic C# (a Microsoft research language), which subsequently merged into Cω (C Omega).

JoCaml looks like it might be a great pragmatic alternative to Erlang for those who dislike Erlang’s funny syntax, dynamic typing and weak FFI.