[Libguestfs] Revisiting minimum OCaml version

Richard W.M. Jones
Tue, 10 Mar 2020 13:37:15 -0000

Previously discussed:
https://www.redhat.com/archives/libguestfs/2017-September/msg00203.html

Currently libguestfs and virt-v2v require OCaml >= 4.01.  (That's
perhaps theoretical, as I don't think anyone is really compiling them
with such an old compiler).  This causes a bunch of trouble.  To my
mind the major things are:

 - Having to have the "Bytes" compatibility module (added in OCaml
4.02).

 - Conditional on -runtime-variant _pic (added in OCaml 4.03).

 - Not being able to use ppx extension points, which means we have
   lots of repetitive string_of_* functions that could be mostly
   eliminated (needs OCaml >= 4.02).

 - Match + catch (needs OCaml >= 4.02)
   https://blog.janestreet.com/pattern-matching-and-exception-handling-unite/

 - Warnings about "noalloc" (>= 4.03) and "Pervasives"
(>= 4.07).

I guess it's also the case that some dependencies that we require
don't actually work on OCaml 4.01.

Here are some common distros and the versions of OCaml available:

  Arch (Extra)     OCaml 4.09
  Debian stable    OCaml 4.05
  Debian testing   OCaml 4.08
  Fedora 31        OCaml 4.08
  OpenSUSE         OCaml 4.05
  RHEL 7           OCaml 4.05
  RHEL 8           OCaml 4.07
  Ubuntu 16.04     OCaml 4.02
  Ubuntu 18.04     OCaml 4.05

Here are the release dates of the OCaml compiler:

  OCaml version    Release date
  4.02             2014-08
  4.03             2016-04
  4.04             2016-11
  4.05             2017-07
  4.06             2017-11
  4.07             2018-07
  4.08             2019-06
  4.09             2019-09
  4.10             2020

I think we should move the minimum to 4.05 since that covers
everything except the old Ubuntu LTS (and that's their fault for
releasing an LTS with a version of OCaml which was already nearly 2
years out of date, and not updating it in the meantime).

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.