Previous week Up Next week


Here is the latest Caml Weekly News, for the week of January 31 to February 07, 2012.

  1. Plasma-0.6 (Map/Reduce & distributed filesystem)
  2. New ARM backend merged into trunk
  3. llpp video
  4. Other Caml News

Plasma-0.6 (Map/Reduce & distributed filesystem)


Gerd Stolpmann announced:
I've just released Plasma-0.6, a major update of Plasma with numerous
changes. The most important:

 * For checking map/reduce out, there is now a mode that works without
   distributed filesystem, and that does not require any deployment.
   The files are just stored in the normal filesystem. Of course, the
   job can then only run on a single computer, but at least it can
   take advantage of multiple cores.

 * Added the Mapred_toolkit layer. This layer allows purely functional
   map/reduce programs. Running a job is only a matter of calling
   a function like

   val mapl_sort_fold :
        mapl:(mapred_info -> 'a -> 'b list) rfun ->
        hash:(mapred_info -> 'b -> int) rfun ->
        cmp:(mapred_info -> 'b -> 'b -> int) rfun ->
        initfold:(mapred_info -> int -> 'c) rfun ->
        fold:(mapred_info -> 'c -> 'b -> 'c * 'd list) rfun ->
        ?finfold:(mapred_info -> 'c -> 'd list) rfun ->
        partition_of:(mapred_info -> 'b -> int) rfun ->
        ?initcombine:(mapred_info -> 'e) rfun ->
        ?combine:(mapred_info -> 'e -> 'b -> 'e * 'b list) rfun ->
        ?fincombine:(mapred_info -> 'e -> 'b list) rfun ->
        'a Place.t ->
        'd Place.t ->
        config ->
        'b Place.codec ->
          ('d,[`W]) Seq.seq list result

 * Support for binary file formats

 * The sorting criterion can now be freely defined

 * Support for combiners

 * Map-only jobs are now possible

 * The RPC channels for controlling the job execution are now also
   privacy-protected. Plasma can now be run in a highly secure mode,
   where all network traffic is authenticated, encrypted and integrity-

 * Support for counters

 * Enormous performance improvements

 * A number of bug fixes and improvements of the robustness

 * Last but not least, there is now a lot more documentation including
   a quickstart guide, the toolkit howto, various session

General information about Plasma:

Plasma consists now of three parts, namely PlasmaFS, PlasmaKV, and Plasma

      * PlasmaFS is a distributed replicating filesystem. Unlike other
        such filesystems, it is transactional and exhibits transactions
        to the user. Also, it implements almost all of what is known as
        POSIX semantics, and it is mountable.
      * PlasmaKV is a key/value database on top of PlasmaFS. It is
        designed for ultra-high read workloads, and offers interesting
        properties borrowed from PlasmaFS (e.g. replication and ACID
      * Plasma Map/reduce implements a variant of the popular
        data processing scheme.

All pieces of software are bundled together in one download. The
project page with further links is

There is now also a homepage at

THIS IS NOW A BETA RELEASE! I'm searching for testers. Whoever has
access to a cluster please check Plasma out!

Plasma is installable via GODI for Ocaml 3.12.

For discussions on specifics of Plasma there is a separate mailing list:

New ARM backend merged into trunk


Benedikt Meurer announced:
I just merged the latest patch for my new ARM backend into trunk (revision 
12124). Compared to the old ARM backend, the new one does the following:

- Support for both software and hardware floating-point (VFPv3).
- Properly supports interworking with Thumb/Thumb-2 code for both OCaml and C 
- Supports dynamic linking and large memory models (PR#5049).
- Optional support for position-independent code via a command line option 
-fPIC. This is disabled by default and not required for natdynlink.
- Can emit both ARM and Thumb-2 code, with avg. code size savings of 28% for 
Thumb-2 (quite close the optimal 30% advertised by ARM Ltd.).
- Supports both AAPCS (armel) as well as extended VFP calling conventions 
- Supports several special ARM instructions to reduce code size and latency.
- Uses standard ARM EABI runtime functions instead of relying on GCC 
- Supports exception backtraces.
- Supports profiling using gprof.

It'd be great to get some early feedback / testing (esp. with the upcoming 
Debian/Ubuntu armhf port). Note however that the object files generated by 
the new backend aren't compatible with old object files (and therefore also 
.cmxs and .a files).

llpp video


malc announced:
Here's a video[1] that shows how to build and use llpp[2]. It drags,
with the building fetching part, till ~3:35, but, hopefuly, gets up to
speed after that.


Other Caml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the Caml Weekly News the links to the
recent posts from the ocamlcore planet blog at

Spotlight on Opa app: OpaChess by Mads Hartmann Jensen:

Lacaml v6.0.0 released:

Plasma Map/Reduce Slightly Faster Than Hadoop:

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.

Alan Schmitt