Previous week Up Next week


Here is the latest OCaml Weekly News, for the week of March 25 to April 01, 2014.

  1. Experiment: OCaml patch review on
  2. OASIS v0.4.4
  3. release 2.0 of itv-tree
  4. Trivial compiler patches
  5. Anybody interested in creating binary RPMs for each official release of the compiler?
  6. C++/OCaml position at RTT in Munich
  7. OCaml backend developer at Ahrefs in Singapore
  8. Other OCaml News

Experiment: OCaml patch review on


Anil Madhavapeddy continued this thread to say:
As a followup to this, I've written a script that syncs all the
open pull requests against the compiler as OPAM compiler switches.
This is now running live on the central OPAM respository.

For instance, if you now `opam update` and look at your switches:

$ opam switch --all
--     -- 4.02.0dev+pr10              Add String.{split,rsplit}
--     -- 4.02.0dev+pr13              Add String.{cut,rcut}.
--     -- 4.02.0dev+pr14              Add absolute directory names to bytecode format for ocamldebug to use
--     -- 4.02.0dev+pr15              replace String.blit by String.unsafe_blit
--     -- 4.02.0dev+pr17              Cmm arithmetic optimisations
--     -- 4.02.0dev+pr18              Patch for issue 5584
--     -- 4.02.0dev+pr2               Parse -.x**2. (unary -.) as -.(x**2.).  Fix PR#3414
--     -- 4.02.0dev+pr20              OCamlbuild: Fix the check of ocamlfind
--     -- 4.02.0dev+pr3               Extend record punning to allow destructuring.
--     -- 4.02.0dev+pr4               Fix for PR#4832 (Filling bigarrays may block out runtime)
--     -- 4.02.0dev+pr6               Warn user when a type variable in a type constraint has been instantiated.
--     -- 4.02.0dev+pr7               Extend ocamllex with actions before refilling
--     -- 4.02.0dev+pr8               Adds a .gitignore to ignore all generated files during `make world.opt'
--     -- 4.02.0dev+pr9               FreeBSD 10 uses clang by default, with gcc not available by default
--     -- 4.02.0dev+trunk             latest trunk snapshot

Each switch corresponds to the current development trunk, with the
diff in the PR applied.  If the patch is sane, you can proceed to
install OPAM packages in the experimental tree as usual without
affecting your day-to-day compiler switch.

Hope this is useful!  More details at:

It's set to run daily at the moment, and switches will be deleted once
the corresponding pull request is closed.
François Bobot then asked and Louis Gesbert replied:
>  I'm just wondering if it is wise to add all these switches to the default OPAM repository. For
> casual ocaml user the useful switches are lost among all these PR.
>   Perhaps the default possible switches can be reduced to the last releases (for people that work on
> project that must support old version of ocaml) and to the beta and trunk for people that are
> curious of the accepted new features.

That's why in OPAM 1.1.1 we changed `opam switch list` to only display
the default compilers, and you need to add `--all` to see all existing
compiler descriptions. I think it's enough to address your concern.

OASIS v0.4.4


Sylvain Le Gall announced:
Anil and Jacques-Pascal have quickly spotted a bug when generating
Makefile/META/ (missing \n\n and a lot of backup files). I
decided to do a quick release tonight to get the situation fixed ASAP.

Here is OASIS 0.4.4

release 2.0 of itv-tree


Francois Berenger announced:
version 2.0 (in OPAM) allows to attach a value to a given interval.
Useful in case the interval is considered as a key.

The new interface is here:

It is incompatible with the previous version,
which didn't have those values.

Trivial compiler patches


Deep in this thread, Anil Madhavapeddy said and Thomas Gazagnaire added:
> There's a significant amount of metadata that isn't track in Git.
> Issues, pull requests, releases, comments, descriptions are all
> available via the API, but not in Git. Thomas Gazagnaire started
> a CLI that dumps that information into a local git repository using
> his ocaml-git implementation, but it's not quite complete yet. Do
> get in touch if anyone's interested in helping finishing that effort
> off to provide a GitHub export to a more neutral format...

The repo is there: for whose interested.
But that's just an early experiment for now on. Patches are more than

Anybody interested in creating binary RPMs for each official release of the compiler?


Francois Berenger asked:
I'm always annoyed when I have to wait ~20mn to install OCaml on a machine.

Nowadays, thanks to OPAM, I think only a compiler is needed to
bootstrap quickly an OCaml environment for developers.
Fabrice Le Fessant suggested:
We just uploaded another solution to this problem :

opam init --comp 4.01.0+bin-ocp

It is a binary distribution of OCaml 4.01.0 ("ocp" stands for OCamlPro,
as it includes a small patch for relocation of the executables), working
only on Intel Linux for now (32 and 64 bits), so you will only pay the
download cost (about 65 MB), and not the compilation cost (you will
still need to compile the next packages that you will install, as it is
only the OCaml distribution). On most of our settings, downloading is
much faster than compiling.

Once it is installed, it keeps the archive in a cache (in ~
/.opam/.ocp-compiler-cache/), so that creating other aliases from this
switch will only be the cost of decompressing the archive:

opam switch 4.01.0-for-something-else --alias 4.01.0+bin-ocp

Tell us if you meet any problem using it !
Later in the thread, Francois Berenger said:
For the record, I created a shell script using fpm to create an RPM
package from a source install of the compiler.

- it needs root access on the computer where you create the package
  for the make install step
- it needs fpm

Maybe, if the ocaml source distribution 'make install' target
was obeying DESTDIR, we could avoid being root.

My example installs everything in /usr/local/ocaml-4.01.0.
The script is here:

C++/OCaml position at RTT in Munich


Kai Trojahner announced:
RTT has an open full-time position at our Munich office. 

In this position, you will be part of a Scrum team that develops RTT
Stellar, our physically-based rendering system for synthesizing
photorealistic images. As one of its key features, Stellar allows users
to define materials and lights at run-time by means of programs written
in a custom programming language. You will be working on the foundation
of Stellar that comprises a C++ infrastructure and a compiler, written
in OCaml, that translates Stellar programs into executable code for both
CPUs and GPUs.

Here is a link to the official job description:

Professional Software Engineer - C++ / Functional Programming

Feel free to contact me for more information about this position.

OCaml backend developer at Ahrefs in Singapore


ygrek announced:
Ahrefs Pte Ltd is looking for a backend developer
to join our small high-skilled team of professionals.

At Ahrefs we have built an internet-wide crawler and a custom
distributed petabyte-scale database to store the index of the whole Web.
On top of that we are currently building various analytical services for
end-users. This is where you will be able to apply your skills and push
the world forward.
We are a small company, enjoying global
visibility of our work and vivid feedback from users, with an everyday
opportunity to leverage our skills to maximum potential, limited only by
our own ideas. 3/4 of the company are developers, and backend team is
the primary driving force here.

Our motto is "first do it, then do it right, then do it better".

What we need

Our backend is implemented mainly in OCaml, as such the knowledge of
OCaml is a big plus. Otherwise, understanding of functional programming
in general and interest in learning OCaml is required. The candidate
will have to deal with the following technologies on the daily basis :
  - networks & distributed systems
  - 3+ petabyte of live data
  - OCaml
  - linux
  - git

Knowledge of C++ is a plus.

The ideal candidate is expected to :
  - independtly deal with and investigate bugs, schedule tasks and dig
  - make argumented technical choice and take responsibility for it
  - understand the whole technology stack at all levels : from network
    and userspace code to OS internals and hardware
  - handle full development cycle of a single component, i.e. formalize
    task, write code and tests, setup and support production (devops)
  - approach problems with practical mindset and suppress perfectionism
    when time is a priority

These requirements stem naturally from our approach to development with
fast feedback cycle, highly-focused personal areas of responsibility and
strong tendency to vertical component splitting.

What you get

We offer :
  - competitive salary
  - modern office in Singapore city centre
  - relocation package
  - insurance
  - informal and thriving atmosphere
  - first-class workplace equipment (hardware, tools)
  - international team
  - no dress code


Interested? Drop your CV and short description of how we can benefit each other
along with salary expectations and date of availability to

Other OCaml News

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

Power means:

NLCertify: a Formal Nonlinear Optimizer:

Codio, the insanely slick web way to build Mirage unikernels from a browser:

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