OCaml Weekly News

Previous Week Up Next Week


Here is the latest OCaml Weekly News, for the week of July 30 to August 06, 2019.

Table of Contents

OCaml 4.08.1+rc3

Florian Angeletti announced

The release of OCaml version 4.08.1 is expected for next week.

Before this happy event, we are releasing a third and last release candidate. This new release integrates two configuration fixes from Debian and Fedora with the rc2 fixes for compilation failures in presence of "-pack" reported by Fabian @copy (breaking nocrypto), and dynlinking failures in bytecode mode reported by Andre Maroneze (breaking Frama-C).

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.08.1+rc3 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git


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

where you replace <VARIANT> with one of these:

  • afl
  • default-unsafe-string
  • force-safe-string
  • flambda
  • fp
  • fp+flambda

We want to know about any bugs. Please report them here:  https://github.com/ocaml/ocaml/issues

Happy hacking, — Florian Angeletti, for the OCaml team.

OCaml 4.08.1 rc3:

  • Bug fixes:
    • #7887: ensure frame table is 8-aligned on ARM64 and PPC64   (Xavier Leroy, report by Mark Hayden, review by Mark Shinwell    and Gabriel Scherer)
    • #8751: fix bug that could result in misaligned data section when compiling to   native-code on amd64.  (observed with the mingw64 compiler)   (Nicolás Ojeda Bär, review by David Allsopp)
    • #8769, #8770: Fix assertion failure with -pack   (Leo White, review by Gabriel Scherer, report by Fabian @copy)
    • #8816, #8818: fix loading of packed modules with Dynlink (regression in   #2176).   (Leo White, report by Andre Maroneze, review by Gabriel Scherer)
    • #8830: configure script: fix tool prefix detection and Debian's armhf   detection   (Stéphane Glondu, review by David Allsopp)
    • #8843, #8841: fix use of off_t on 32-bit systems.   (Stephen Dolan, report by Richard Jones, review by Xavier Leroy)

Ideal OCaml setups with VIM, Emacs, IntelliJ/IDEA?

Deep in this thread, Anton Kochkov said

A small update: the OCaml and Dune runtime files landed in NeoVim as well, so you can already try them if you use it from git: https://github.com/neovim/neovim/commit/87140f234ac1f152f6f273dee5ab1e42c7b1d78b

KV database (nosql) recommended for Mirage?

Orbifx asked

Which KV database would you recommend for applications intended to build as Mirage Unikernels?

Calascibetta Romain replied

Currently, when we need to make a KV-store with MirageOS, we use irmin as an high-level KV-store. Then, it provides some back-end like git. A tutorial can be found here. So, we currently prepare some releases of several packages around MirageOS and irmin, so you currently need to pin some packages.

Example of how to use Irmin with Git backend and MirageOS can be found here:

Orbifx then asked

What about mirage-kv in opam?

I don't believe I need the overhead of the git store; can Irmin work without accumulating a history and any overhead of that?

Calascibetta Romain replied

So mirage-kv, as some others packages in Mirage, is just an interface. Then, you have some possibilities:

  • make your own mirage-kv implementation (which can be a simple hashtbl)
  • use something like irmin which respects this interface

Then, it's mostly about what you want exactly. MirageOS does not have a proper file-system at the beginning and we use in some ways git to obtain persistence (where, when your unikernel will shutdown, you will lost contents). So, the idea is to have a KV-store inside the unikernel and a way to synchronize this KV-store with a remote repository - and, of course, we took the advantage of git, behind this idea (however, as I said, you can use/implement something else).

Then, with functoria you can easily orchestrate the compilation of your unikernel to choose which will implement the mirage-kv signature.

Orbifx then asked

Sorry I meant to ask what about mirage-kv-unix. Is that with a git backend? Doesn't it have any history related overhead or is it a plain mutable RW backend?

Hannes Mehnert replied

there's mirage-kv-mem which is not persistent, using a Map.t for storing data.

there's as well mirage-kv-unix which is only available on unix (i.e. not if you're running a freestanding unikernel), and uses the file system as persistent backing store.

both of them don't contain a history and are fine to use in certain programs! :)

(so, yes, mirage-kv-unix is persistent and without git)

A library for Commitment Schemes

Marco Aurélio da Silva announced

Hi folks! Proudly I announce the stable version of a library for Commitment Schemes using an underlying/implemented AEAD (Authenticated Encryption with Associated Data) module. This library also uses a KDF (Key Derivation Function) package to make the implemented AEAD a Committing Encryption. Future plans might include user-level configuration of the KDF (for instance, the number of cycles) and also to split and expose the Committing Authenticated Encryption module into an external library.

All code of the Committing AEAD module was inspired on the paper Message Franking via Committing Authenticated Encryption. This 1.0.0 library can be installed with:

opam install nocoiner

A command-line interface is also provided on the package. The Docker image with only this CLI interface can be installed with:

docker pull marcoonroad/nocoiner

The executable is available at /usr/bin/nocoiner inside the image.

For the project documentation, please refer to: https://nocoiner.marcoonroad.dev

PRs and issues are welcome. The repository is hosted at: https://github.com/marcoonroad/nocoiner

Thanks in advance and happy hacking. o/


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.