It's been a while since the core OCaml packages in Guix have seen
significant updates, so I'd like to discuss moving the dev stack
from
OCaml 4.14 to the latest release, 5.3.
For those who haven't been following the progress of OCaml lately,
the
5.x series contains some ambitious changes. Historically OCaml has
had
solid support for concurrency, but not parallelism; then version
5.0
introduced a new runtime supporting multiple CPU cores
[1]. Versions 5.0
thru 5.2 were regarded by the maintainers as experimental [2], but
after
two years of evolution, the 5.3 release finally lost the
"experimental"
label and restored full feature parity with the 4.x series
[3]. There is
ongoing work to reduce the memory footprint for some workloads
[4], but
overall version 5.3 seems robust enough for general use.
Meanwhile, the OCaml package ecosystem has started to move away
from
supporting the 4.x series. In particular, recent versions of Jane
Street
packages don't support 4.x at all, and lots of packages from other
sources depend on Jane Street code directly or indirectly.
So, with the release of 5.3 and these shifts in the package
ecosystem, I
think the benefits of upgrading now outweigh the risks. For the
last few
weeks I've been testing a branch of Guix with updates for OCaml
5.3, and
I'd like to contribute these changes to upstream.
The patches touch about half of the ~340 packages in ocaml.scm,
and a
small handful scattered elsewhere. Considering the existing
project
goals for this fall, how do folks feel about including these
changes in
the next release?
Jason
[1] https://discuss.ocaml.org/t/ocaml-5-0-0-is-out/10974
[2] github.com/ocaml/ocaml/releases
[3]
https://discuss.ocaml.org/t/ann-v0-17-release-of-jane-street-packages/14717/5
[4] https://discuss.ocaml.org/t/ocaml-5-x-memory-usage/16981/5