Previous week Up Next week


Here is the latest Caml Weekly News, for the week of December 04 to 11, 2012.

  1. otags reloaded 4.00.1 for OCaml 4.00
  2. infrastructure list available
  3. Js_of_ocaml 1.3
  4. GODI imports OASIS
  5. Documenting the compiler
  6. Ocsigen: Eliom 3
  7. Creating fresh OPAM repository
  8. Other Caml News

otags reloaded 4.00.1 for OCaml 4.00


Hendrik Tews announced:
I would like to announce the first release of otags reloaded for
OCaml 4.00. It is available at

Otags reloaded generates tags tables for emacs and vi/vim. This
version supports GADT's and does not compile with OCaml 3.12.

Otags reloaded is distributed under GPL v3. infrastructure list available


Anil Madhavapeddy announced:
The machine infrastructure has been settling into place, and is now available.

This runs GNU Mailman, and has a single "infrastructure" list at the moment. 
This list is where we can discuss setting up the other services such as the 
continuous build regression testing and website, and integrating other 
services such as .

If you are interested in helping out or simply following activities, please 

The server will be hosting more lists in the near future, which I will 
announce here. If you have a list you'd like to move to this server for your 
project, please get in touch. We can create private lists also if needed, 
although publicly archived ones are preferred.

The look and feel of the lists installation is quite barebones at the moment. 
We'll improve the integration with once the rest is up and 
running smoothly.

Js_of_ocaml 1.3


Jérôme Vouillon announced:
I'm happy to announce release 1.3 of Js_of_ocaml, a compiler from
OCaml bytecode to Javascript. This release is compatible with OCaml
4.x. It adds WebSocket bindings and fixes a number of bugs.


Project home page
Get source code darcs get


* Features/Changes
** Runtime and toplevel updates to support OCaml 4.0
** Add WebSocket bindings
** Added -debuginfo option to output source code location information
(patch by Kensuke Matsuzaki)
** Dom_html: added change, input and hashChange event bindings

* Bugfixes
** Fix array and string blitting with overlapping regions
** Url module: fix encoding of '+'
** Library: use 'this' instead of 'window' for better portability
** Dom_html: fix creation of elements with type or name attribute
under IE 9
** Compiler: small fix to bytecode parsing that could result in
incorrect generated code
** Dom_html: fix mouse wheel event bindings
** Dom: fix the type of item methods
** Deriving_json: tail-recursive serialisation of lists (by Hugo Heuzard)
** Deriving_json: fix parsing of float arrays and polymorphic variants
(by Hugo Heuzard)

GODI imports OASIS


Gerd Stolpmann announced:
the GODI project has now set up an experimental OASIS-DB import. This
means that packages submitted to OASIS-DB appear as normal GODI
packages in godi_console, and can be managed in the normal way.

We are now importing nightly into a separate repository that needs to
be activated. Find the instructions (and a number of FAQ) here:

Remember that OASIS packages are not QA-checked, and as a result many
packages still fail to build. This often has trivial reasons (like
that the build is ok, but the documentation fails). I hope to hear
your comments on this.

Also, any comment on user experience is very welcome.
Sylvain Le Gall replied and Gerd Stolpmann said:
> Some answer:
> - the OASIS package ignores the --destdir:
> There is an open bug for that 
> Please read and comment. I just decided to let ocamlfind decide the
> destdir. You can use ocamlfind env var to override this.

I'm doing this already, and it works well. Nevertheless, there are some
remaining destdir problems, e.g. when executables are installed in the
wrong place.

I guess this is difficult to enforce technically (unless you use
something like the Gentoo sandbox, but this is very non-portable).

> Although, since the problem appears even with findlib guru, I am
> willing to fix the bug to take into account DESTDIR everywhere.
> - missing QA
> That is a work in progress. I setup a jenkins instance in order to run
> QA test ( If you have some basic
> configuration for that, feel free to contact me.

Good to hear that. I've also plans to include the oasis packages into my

Btw, some of the issues can be easily caught at package upload time.
E.g. I've seen a number of tarballs which weren't properly
gzip-compressed. Others did not contain an _oasis file, or it was not

> Although, here are my idea concerning the topic
> - we should always run "oasis setup" before building. This will
> enforce having the latest generated and not some random old
> piece of code. I made a lot of effort to be able to have backward
> compatibility on _oasis (i.e supporting OASISFormat: 0.2 and 0.3), let
> take advantage of this

Ok, I can make this the default.

> - where can I find the specific code to handle oasis + GODI. I would
> like to have a closer look.

It's a bit spread over several repositories:

The script to convert an OASIS tarball to a GODI Makefile is here:

In order to convert findlib names to GODI packages, it uses a web
service (similar to the one we agreed upon some time ago, but I modified

It returns possible resolutions from both the autobuilder, and from my
OASIS scan (section="oasis-import"). This CGI is quite boring:

It only takes the data from a prepared db table. The OASIS data is put
into this table with this program:

For most of its work, it uses the official API. The API does not return
the findlib libraries, though, but they are shown on the webpage, so I
get the libraries from there (i.e. Could you include the libs in API

Documenting the compiler


Bob Zhang announced:
I have collected some notes on the compiler internals, currently
mainly on typing/ parsing/ and driver/ directory in ocaml compiler.
Since ocaml 4 has exported the whole compiler as a library, it may
not be just learning, you really can do something useful without
patching the compiler.

Ocsigen: Eliom 3


Benedikt Becker announced:
we are celebrating Ada's birthday by bringing out a major update of
Eliom - the advanced framework for client/server web applications in
OCaml - and some minor updates for Ocsigenserver and Tyxml.

Here is a list of major new features (and short code snippets can be
found at the end of this email):

* The tightest integration of client value within the server code
ever made possible in a major statically typed programming
language [1]

* Easy access to top-level server values - and (Lwt-)functions -
from within the client code [2]

* Access to other users' states of Eliom references

* Improved support of Eliom's source files in the compilation tools

* A new tool, eliom-destillery, for creating basic projects fast &

The manual, a cheat-sheet, a comprehensive tutorial, and the
API-documentation of the various Ocsigen projects are available on


The probably simplest and most generic way to install Eliom is by
using OPAM. But also Debian packages are already available (in
experimental, thanks Stéphane!), Gentoo-ebuilds are on their way, the
Ocsigen-bundle is still at hand, and the archives can be found at


And maybe you may want to become social with us on



-- The Ocsigen-team

{server{ (* This marks server-side code *)
let value_history_on_client =
{ref string{ ref [] }} (* A client value within the server code *)
let _ = My_app.register_service ~path ~get_params
(fun value () ->
(* Push the GET parameter to the client's history a side effect *)
ignore {unit{
%value_history_on_client := %value :: ! %value_history_on_client
Lwt.return html)

let f = server_function Json.t<string>
(fun x -> Printf.eprintf "Client says: %s\n%!" x; Lwt.return ())
{client{ (* This marks client-side code *)
(* %f makes the server's value f, a client-ready server function,
available in the client code *)
... %f "hello!" ...

Creating fresh OPAM repository


Dario Teixeira asked and Thomas Gazagnaire replied:
> How does one create a fresh repository with OPAM? The documentation has 
> plenty
> of examples of cloning existing repos, but what I want is to start an empty 
> one on the
> local filesystem. Does the OPAM tool have some option for this, or is one 
> supposed
> to do it "by hand", ie, create a filesystem structure that mimics existing 
> repos?

If you want to start an empty local repository in /foo/bar, just run:

$ opam remote local /foo/bar

(you can replace 'local' by any other name in the previous commands, it's 
just a way to identify the repository)

After that, you can:
* either populate it incrementally by adding the usual 
'/foo/bar/packages/NAME.VERSION/{opam,url,descr}' for package descriptions 
and '/foo/bar/compilers/VERSION+NAME.comp' for compiler description. Don't 
forget to update your repository by doing 'opam update local' to take these 
changes into account; or
* use 'opam upload'. This is however not yet tested as well as the first 
solution. If you use it and found some issues, please do not hesitate to fill 
a bug.

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


Ocsigen Eliom 3.0 released:

Verifying a parser for a C compiler (continued):

Ocsigen Js_of_ocaml 1.3 released:

Emancipate yourself from LTac: Your first Coq plugin:

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