Previous week Up Next week


Here is the latest Caml Weekly News, for the week of March 04 to 11, 2008.

  1. ocamlbuild and camlidl
  2. CamlPDF 0.3
  3. OCaml-Java project : beta version
  4. Bindings for newt (a text mode windowing library / widget set)
  5. ocaml-duppy: an advanced scheduler for ocaml.
  6. forge beta test
  7. Jane Street's OCaml blog
  8. Jsure 1.0.1, has online version at
  9. ML Workshop 2008 call for papers

ocamlbuild and camlidl


Hezekiah M. Carty announced:
I wrote a to use camlidl from within ocamlbuild if
anyone is interested.  I would also be happy to receive any pointers
on how to improve this.

The relevant files can be found here:

The important pieces are:
 - which has a "rule" section for handling .idl files
 - libocaml_plplot.clib which defines the C portion of the library wrapper
 - Makefile which exports some environment variables and handles a
few other items

The Makefile could be folded in to with a few
Unix.open_process_in calls, but I don't see a need to do so at this

Once this has been refined a bit I will add it or ask that it be added
to the ocamlbuild wiki.

CamlPDF 0.3


John Whitington announced:
I've just uploaded a new version of our library for reading and writing PDF
files from within Ocaml - CamlPDF. New features:

o CCITTFaxDecode support (Group 3 1D and Group 4)
o Fully re-entrant
o Parsing of Type 3 fonts
o Bit-by-bit operations (e.g some decoders) much faster

and of course many bugfixes and improvements. Thanks to those who've provided
suggestions for this release.

For the next release I'm planning on bringing a bunch of high level operations
I wrote for our commercial software into the library: suggestions on that

OCaml-Java project : beta version


Continuing this thread, Xavier Clerc said:
> However, I noticed a bug with the binary package that does not show up if
> you have the standard OCaml distribution installed on your computer: the
> ocamlc.jar/ocamljava.jar compilers will fail if the current directory
> contains the by-product of a previous compilation (e.g. cmo or cmi files).
> The temporary workaround is to delete these files before any compilation.
> I suspect this bug has something to do with the embedded mode (the ability
> for the Java-run programs to look for files inside their jar files rather
> than on the local file system). I will hunt this bug and report to the list
> when it is fixed. Sorry for the inconvenience in the meanwhile.

This bug, as well as some other ones, have been fixed in the newly updated
To keep in touch with updates, one can refer to the RSS feed:

Bindings for newt (a text mode windowing library / widget set)


Richard Jones announced:

Newt is a text mode window library.  It's most famous (notorious?) use
is in the anaconda installer for Fedora and Red Hat Enterprise Linux.
These are OCaml bindings for newt.

There are some screenshots of anaconda here so you can get the idea of
what newt is all about:

ocaml-duppy: an advanced scheduler for ocaml.


Romain Beauxis announced:
Along with our project (liquidsoap), we (the savonet team) have developped an 
advanced scheduler that we needed for our software. It is now available as a 
seperate module, and we hope it could be usefull for some of you.

The basics of this scheduler is to implement a wrapper around in 
order to be able to wait for events on a socket and/or a given delay and 
execute a task when one of the waited events occured.

We also wrote an asynchronous interface as well as a simple I/O interface, in 
order to read and write to sockets, or submit an asychronous task to a 

Several queues can be run against the same scheduler, each one living in a 
different thread. Also, each task has a priority, which can of your favorite 
type, and each queue decides if it wants to process a task according to a 
predicate passed at its initialisation.

This scheduler can be very usefull to write simple servers, as well as to 
develop a multi-thread task processing system. Two simple telnet and http 
examples are provided in the source.

You can find more informations on the module there:
In particular, the documentation is available there:
You can also download the module there:
Gerd Stolpmann asked and Romain Beauxis answered:
> How is that different from my equeue approach? 

Well, it is very similar, clearly. 
The difference I can see for now, is that Duppy is more simple and oriented 
toward socket events and delays. In particular, it is not clear to me wether 
equeue can accept delayed tasks. 

Of course, we didn't meant to deprecate your work, but perhaps it can be 
usefull for different taks..
Later on, Gerd Stolpmann added:
My question was only out of curiosity. I am sometimes interested why 
people reinvent wheels - and if it is only for a different color. 

Equeue supports delays. It doesn't support priorities, however. Also, 
multi-threading integration seems to be different. forge beta test


Sylvain Le Gall announced:
During the last three weeks, the Team has been working to
set up various software services for the OCaml community. Following the
previous announcement [1] of the availability of an OCaml planet (i.e.
an aggregation of blogs discussing OCaml-related topics), we are now
almost ready to announce an OCaml forge.

A forge is a set of services for software projects, including version
control systems (CVS, SVN, ...), mailing lists, download areas, bug
tracking systems, ... Well known examples are, GNA, and
Savannah. The forge for the OCaml community will be specifically aimed
at hosting software projects related to the OCaml programming language.

The new site is almost ready for the release. However, before open it to
everybody, we would like to gather a group of people from the community
to beta-test the site.

In particular, we are therefore looking for people which:
* have a small experience with other forge have an OCaml project to
* start (or to migrate from somewhere else) are willing to collaborate
* with us to find out problems in the forge

Of course, this being a test period, we are not yet willing to give
guarantees of any kind, but we do have backups :-)

So if you want to participate to the beta test of,
sign-up for an account on

Then submit a project, stating into "Objectifs et description du projet"
that "Project will belong to the beta test of".
This is for records and help us to be sure that project submitter is
aware of the "beta" status of the forge.  For the moment we are *not*
going to accept projects which do not explicitly acknowledge the beta
testing status of the forge.

the Team.  
(Sylvain Le Gall, Romain Beauxis, Stefano Zacchiroli, Pietro Abate)


Jane Street's OCaml blog


Yaron Minsky announced:
I thought people might be interested in the blog that we've just

In addition to our random musings, we plan on posting occasional
tutorials focusing on things we've learned over the years about
programming effectively in OCaml.  Our hope is to make this a useful
resource to the community at large.

The blog allows for comments, and we're eager to have people join in the

Jsure 1.0.1, has online version at


Berke Durak announced:
We've been maturing our little Javascript verifier, Jsure, and it can now
catch things like bad regular expressions or property names some browsers
don't like.

Stéphane Jaïs has just written a web interface for Jsure; you can now use it
on-line at Binaries for Linux (x86, amd64) and Mac are also

Of course, Javascript code, being overly dynamic, is notoriously difficult to
analyze; but even basic checks (such as attempts to catch use of undefined
variables) combined with some developer discipline turn out to be useful.

The traditional alternative is Jslint which is very heavy to use (requires
Rhino) - it is written in Javascript itself.

Jsure is fully open-source; to compile it, you need to install Aurochs
( which is used as its parsing engine.

Feel free to mail me with you comments or suggestions.

PS. Jsure has some experimental features such as an attempt at type-checking
or an edit-distance based spell checker for identifiers to play with (those
are not enabled by default). However, it seems that the effort that would be
required to build a useful static Javascript verification tool would be better
spent on Javascript-targeting compilers, like ocamljs! But try telling that to
your boss :)

ML Workshop 2008 call for papers


Eijiro Sumii announced:
                          CALL FOR PAPERS

                The 2008 ACM SIGPLAN Workshop on ML

                     Sunday, September 21, 2008
                 Victoria, British Columbia, Canada
              To be held in conjunction with ICFP 2008



Submission deadline:        Monday, June 23, 2008
Notification of acceptance: Friday, July 18, 2008
Final revision due:         Monday, July 28, 2008
Workshop:                   Sunday, September 21, 2008


ML is a family of programming languages that includes dialects known
as Standard ML, Objective Caml, and F#.  The development of these
languages has inspired a large amount of computer science research,
both practical and theoretical.  This workshop aims to build on
previous occasions (recent instances are ML 2005 in Tallinn, Estonia,
2006 in Portland, Oregon, and 2007 in Freiburg, Germany), providing a
forum to encourage discussion and research on ML and related

The 2008 Workshop on ML will be held in conjunction with the 13th ACM
SIGPLAN International Conference on Functional Programming (ICFP 2008)
in Victoria, British Columbia, Canada on Sunday, September 21, 2008.

This year we extend the scope of the workshop from ML itself to
technologies closely related to ML (higher-order, typed, or strict
languages) and invite high-quality papers in all areas of crucial
importance for the future of ML.


We seek papers on topics related to ML, including (but not limited

* applications

* extensions: objects, classes, concurrency, distribution and
  mobility, semi-structured data handling, etc.

* type systems (static and dynamic): inference, effects, overloading,
  error reporting, contracts, specifications and assertions, etc.

* implementation: compilers, interpreters, partial evaluators,
  garbage collectors, etc.

* environments: libraries, tools, editors, debuggers, cross-language
  interoperability, functional data structures, etc.

* semantics

Submitted papers should describe new ideas, experimental results,
ML-related projects, or informed positions regarding proposals for
next-generation ML languages.  In order to encourage lively
discussion, submitted papers may describe work in progress.  All
papers will be judged on a combination of correctness, significance,
novelty, clarity, and interest to the community.

All paper submissions must be at most 12 pages total length in the
standard ACM SIGPLAN two-column conference format (9pt):

Accepted papers will be published by the ACM and will appear in the
ACM Digital Library.

More details about the submission procedure will be announced later on
the web page:


Eijiro Sumii     (Tohoku University)


Sylvain Conchon  (Paris-Sud University / INRIA Saclay-Ile-de-France)
Karl Crary       (Carnegie Mellon University)
Andrzej Filinski (DIKU)
Robby Findler    (The University of Chicago)
Cormac Flanagan  (University of California at Santa Cruz)
Alain Frisch     (LexiFi)
Dan Grossman     (University of Washington)
Didier Remy      (INRIA Paris-Rocquencourt)
Claudio Russo    (Microsoft Research Cambridge)
Eijiro Sumii     (Tohoku University)
Hongwei Xi       (Boston University)

Using folding to read the cwn in vim 6+

Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).

:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^=\\{78}$'?'<1':1

If you know of a better way, please let me know.

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