Previous week Up Next week


Here is the latest Caml Weekly News, for the week of April 13 to 16, 2010.

  1. release mlpost 0.8.0
  2. FRP and GTK
  3. Caml-inspect library
  4. React 0.9.1 & Rtime 0.9.1
  5. Subtyping of first-class module types
  6. Commerical Users of Functional Programming --- call for participation (updated)
  7. OCaml on AIX
  8. Lwt 2.1.0 released
  9. Other Caml News

release mlpost 0.8.0


Johannes Kanig announced:
Mlpost 0.8 is finally out!

You can get it at or at the ocamlforge. Notable changes
are a few new modules, such as Tree_adv which delivers more powerful placement
of trees, using overlays, or Real_plot, a nice alternative to Plot for
float-valued functions.

There also is a new system of contributions (contribs), and two contribs for
the moment. The first, Mlpost_lablgtk, allows to easily include Mlpost figures
into a GTK interface. The other one, Mlpost_dot, draws graphs using a
placement as given by the dot(graphviz) tool.

The Cairo backend is considered stable now and delivers mostly identical
results as the Metapost backend. It supports PS, PDF , PNG and SVG

A few minor bugs have been fixed, thanks to Julien Signoles, Stéphane Glondu
and others.

Finally, there are 4 incompatible changes, hopefully they do only affect a few

See the CHANGES file for more details.

Have fun and do not hesitate to submit bug reports, either by mail to the
developers, or via the bug tracking system on the forge.

If you want to follow the Mlpost development more closely, we are now using
a public git repository at the INRIA forge:

git clone git://



Adrien Nader asked and Satoshi Ogasawara replied:
> Is there any FRP library I can use with GTK? I think I saw something
> about React and gtk but I can't find it anymore. I'm not afraid of
> working on that aspect myself but wanted to know if there was already
> something or maybe at least some work on that.

You may be interested in Amthing( ) is,
under development, a FRPed GUI library written by OCaml.
Amthing dose not have GUI components yet, but has simple sprite system
( labels, images, rectangles and any visible objects can be puted on screen).
It's already work well on X11. You can read some examples in the source repository.

Caml-inspect library

Kaspar Rohrer announced:
I am proud to announce my first open source library, written in OCaml and
available immediately on Github:

I hope nobody takes offense over the fact that I chose Github over For the license, I simply copied the LGPL v2.1 used by
ExtLib, which should be ok, I hope.

Best regards
       Kaspar Rohrer

PS: A short introduction and screenshots are available on my personal blog:

React 0.9.1 & Rtime 0.9.1


Daniel Bünzli announced:
A small update to React and Rtime.

* React 0.9.1

- Added E.retain and S.retain.
- A few where replaced by List.rev_map.
- Fixes to to make it work on vte based terminals.

* Rtime 0.9.1

- Fix a gc and leak bug in delay_s and delay_e.
- Improved and added examples to run unix timelines.

Subtyping of first-class module types


Alain Frisch explained:
During today's ocaml meeting, the question of whether first-class module types
could support subtyping was asked. I'd like to give a more detailed answer

The explicit subtyping construction (e : t1 :> t2) could easily be extended to
support subtyping of the form

  (module S with type t1 = ...) :> (module S)

that is, to forget some type annotations. One could also support subtyping of
the form:

  (module S) :> (module S')

provided that S is a subtype of S' (as module types), and *moreover* that the
coercion from S to S' is the identity. The only real use I could see for it is
when S and S' refer to the equal module types but they are just different
names (in which case (module S) and module (module S') cannot be unified). The
reason to require the coercion S ~~> S' to be trivial is that the explicit
subtyping construction is assumed to be a runtime no-op.

That said, it is not difficult to use subtyping of module types by hand as in:

  (module (val x : S) : S')

which works as soon as S is a subtype of S'. Concretly, the code generated for
this piece of code is simply the coercion from module type S to module type
S'. This also work to forget type annotations (in which case the coercion is
the identity).

Given how simple this construction is, I don't think it is worth extending the
( :> ) relation to support module types in very limited cases.

Commerical Users of Functional Programming --- call for participation (updated)


Yaron Minsky announced:
This is an updated version of the call for participation for CUFP.
Most importantly, the proposal deadline has been updated.

Commerical Users of Functional Programming (CUFP) is a workshop that
is co-located with ICFP.  If you have experience using OCaml (or
another functional language) in a pragmatic setting, consider
submitting a proposal to give a talk about it at CUFP!


Commercial Users of Functional Programming Workshop (CUFP) 2010
Call for Participation

Sponsored by SIGPLAN
Co-located with ICFP 2010

Baltimore, Maryland
Sep 27-29, 2010

Submission Deadline: 15 June 2010

Functional programming languages have been a hot topic of academic
research for over 35 years, and have seen an ever larger practical
impact in settings ranging from tech startups to financial firms to
biomedical research labs.  At the same time, a vigorous community of
practically-minding functional programmers has come into existence.

CUFP is designed to serve this community.  The annual CUFP workshop is
a place where people can see how others are using functional
programming to solve real world problems; where practitioners meet and
collaborate; where language designers and users can share ideas about
the future of their favorite language; and where one can learn
practical techniques and approaches for putting functional programming
to work.

# Giving a CUFP Talk #

If you have experience using functional languages in a practical
setting, we invite you to submit a proposal to give a talk at the
workshop.  We're looking for two kinds of talks:

*Experience reports* are typically 25 minutes long, and aim to inform
participants about how functional programming plays out in real-world
applications, focusing especially on lessons learned and insights
gained. Experience reports don't need to be highly technical;
reflections on the commercial, management, or software engineering
aspects are, if anything, more important. You do not need to submit a

*Technical talks* are expected to be 30-45 minutes long, and should
focus on teaching the audience something about a technical technique
or methodology, from the point of view of someone who has seen it play
out in practice.  These talks could cover anything from techniques for
building functional concurrent applications, to managing dynamic
reconfigurations, to design recipes for using types effectively in
large-scale applications.  While these talks will often be based on a
particular language, they should be accessible to a broad range of
functional programmers.

If you are interested in offering a talk, or nominating someone to do
so, send an e-mail to francesco(at)erlang-consulting(dot)com or
yminsky(at)janestreet(dot)com by **15 June 2010** with a short description
of what you'd like to talk about or what you think your nominee should
give a talk about. Such descriptions should be about one page long.

There will be no published proceedings, as the meeting is intended to
be more a discussion forum than a technical interchange.

# Program Committee #

* Francesco Cesarini, Erlang Training and Consulting (Co-Chair)
* Tim Dysinger, Sonian Networks
* Alain Frisch, LexiFi
* Nick Gerakines, Chegg
* Adam Granicz, IntelliFactory
* Amanda Laucher
* Romain Lenglet, Google Japan
* Yaron Misky, Jane Street (Co-Chair)
* Mary Sheeran, Chalmers
* Don Stewart, Galois
* Dean Wampler, DRW Trading

# More information #

For more information on CUFP, including videos of presentations from
previous years, take a look at the CUFP website at
Note that presenters, like other attendees, will need to register for
the event.  Presentations will be video taped and presenters will be
expected to sign an ACM copyright release form.  Acceptance and
rejection letters will be sent out by July 15th.

OCaml on AIX


Christoph Bauer announced:
Dawid wrote:

> So I get working native code.
> The remaining problem is that camlp4 crashes on some Unix call when
> preprocessing. I solved it by preprocessing all the code on another machine.

I looked again into that problem. ocamlrun opens a DLL (
and this dll trys to use symbols from ocamlrun (caml_alloc_string).
Unfortunatly this doesn't work.

The easiest solution is, to link ocamlrun agains and to
set an internal libpath.

Download it from here:

Lwt 2.1.0 released


Stéphane Glondu announced:
The Lwt team is pleased to announce the release of Lwt 2.1.0. You can
download it at:

Here is a list of changes from the previous version (2.0.0):

 * Rename to Lwt.pick
 * Removing module Lwt_monitor in favour of Lwt_mutex and
  new module Lwt_condition
 * More react helpers:
  - Lwt_event.limit and Lwt_signal.limit
  - Lwt_event.from
 * Adding function Lwt_main.fast_yield
 * Adding unit tests
 * Optimisation of Lwt
 * Adding module Lwt_log for logging
 * Adding a camlp4 filter for remmoving logging statement or inlining
 * Adding module Lwt_daemon
 * Adding function Lwt_unix.recv_msg and Lwt_unix.send_msg
 * Adding function Lwt_unix.wait4
 * Adding function Lwt_io.establish_server
 * Adding module Lwt_list
 * Enhancement in Lwt_process, it now support redirections and
 * Allow to use select on arbitrary high file descriptors
 * More commands and features in Lwt_read_line:
  - Handle "undo" command
  - New controlable read-lines instances
  - More edition commands
  - Completion as you type
  - Backward search
 * Enhancement in Lwt_term: more drawing functions and allow to
  put the terminal into drawing mode
 * Optimisation of Lwt_stream
 * Optimisation of Lwt_io.write_char and Lwt_io.read_char
 * Bugfix of Lwt_stream: two parallel Lwt_stream.get
  returned the same value
 * Bugfix in Lwt_unix.connect: it returned immediatly on EINPROGRESS
 * Bugfixes in Lwt_glib: file descriptors were not monitored correctly

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


Sebib 1.0.0:

Rtime 0.9.1:

OCaml Meeting 2010 is over:

OCaml Users Conference 2010:

Cluster Computing at

React 0.9.1 and Rtime 0.9.1:

Off to the OCaml Users Conference:

ocaml bindings for Buddy BDD:

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