OCaml Weekly News

Previous Week Up Next Week


Here is the latest OCaml Weekly News, for the week of January 21 to 28, 2020.

Table of Contents

New release of Menhir (20200123)

François Pottier announced

It is my pleasure to announce a new release of Menhir, the LR(1) parser generator.

opam update
opam install menhir
opam install coq-menhirlib # if you wish to use menhir --coq

There are no new features, only a significant change in the manner in which Menhir is built:

  • Menhir is now built and installed by dune. This should make life easier for Menhir's developers: in particular, make test and make speed can be run straight away and do not requiring installing Menhir first. This should also make compilation much faster on multi-core machines. (Contributed by Nicolás Ojeda Bär, to whom many thanks are due.)
  • There used to be a distinction between two slightly different ways of installing Menhir, namely with and without ocamlfind. This distinction disappears. The command line switch --suggest-ocamlfind is deprecated and causes Menhir to print false.

We hope that these changes do not break any of the code that relies on Menhir today. Please report any problems that you might encounter. Happy hacking!

Ocaml cross compiler?

Deep in this thread, Dmitry Ponyatov asked

What about embedded targets like Cortex-M (STM32F3/F4)? How much memory should it have to have to run OCaml-compiled programs?

Ivan Gotovchits replied

You may find this page interesting. To summarize, with a lot of work you can make a subset of OCaml programs runnable on a microcontroller. You will also need to rewrite OCaml's runtime and develop a new GC for it.

In real life, no, you can't run OCaml on a microcontroller. You need at least a couple of megabytes of normal RAM with MMU.

Ivan Gotovchits then added

Hmm, found this project, that is also quite relevant to you, it is quite alive, so maybe you have chances :)

Two master internship proposals to explore social and technical aspects of the creation of the OCaml and Coq platforms

Théo Zimmermann announced

We are looking for candidates for the following two internships intended to prefigure the creation of the OCaml and Coq platforms:

Please feel free to forward this announcement. Interested students should send their resume and cover letter at [yrg@irif.fr](mailto:yrg@irif.fr) and [theo@irif.fr](mailto:theo@irif.fr).

Yann Régis-Gianas (Inria, IRIF, OCaml Foundation) and Théo Zimmermann (Inria, IRIF, Coq development team)

Proper way to allocate an OCaml string from C code in OCaml 4.10?

Rwmjones asked

Previously to allocate a string with explicit length (ie. one which may contain \0 characters) in C code we have used:

strv = caml_alloc_string (count);
memcpy (String_val (strv), str, count);

In OCaml 4.10 this doesn't compile because String_val returns a const char *.

I could change String_val to Bytes_val, but that feels wrong. The runtime seems to use &Byte_u (strv, 0).

It's a shame there's not a caml_copy_string_len function, but what is the proper way to do this for OCaml 4.10+, especially a way that won't break in future and will be compatible with multicore?

yallop suggested

You can use caml_alloc_initialized_string:

CAMLextern value caml_alloc_initialized_string (mlsize_t len, const char *);

OCaml 4.10.0, second beta

octachron announced

The release of OCaml 4.10.0 is near. We have released a second beta version to help you adapt your softwares and libraries to the new features ahead of the release.

This new beta contains an update to the internal runtime API that should make it easier to maintain compatibility across version for expert users; and a small fix for the analysis of recursive values.

The source code is available at these addresses:


The compiler can also be installed as an OPAM switch with one of the following commands.

opam switch create ocaml-variants.4.10.0+beta1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git


opam switch create ocaml-variants.4.10.0+beta1+<VARIANT> --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git

where you replace <VARIANT> with one of these:

  • afl
  • flambda
  • fp
  • fp+flambda

For a better experience, you can use the opam alpha repository provided by:

opam repository add alpha git://github.com/kit-ty-kate/opam-alpha-repository.git

This repository contains a handful of temporary patched packages, that you can use while waiting for the packages to be properly patched. This repository should not be used in production and you probably want to install it only for the beta switch.

We want to know about all bugs. Please report them here:



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.