This week was a grant application, build systems, and code review - which it turns out is somewhere in the Amazon.

On holiday next week, so most of this week spent attempting to do 1.5-2x the work in order to go on holiday (one day…). Some minor diversions on the way. The vagaries of opam-repository testing meant that an unrelated PR highlighted that my solitary non-OCaml-compiler opam package bitmasks had become bitrots since for OCaml 5.1.0. One to_list function later, and 1.5.0 was born, for your representing-integer-masks-as-sets needs (I wrote the library years ago for use in a never-released set of ODBC bindings, as I subsequently got mildly distracted by opam and then the compiler).

More fun from the trenches doing some routine work on OCaml’s GitHub Actions workflows to prepare for some slightly less routine Relocatable OCaml stuff. We still maintain OCaml 4.14 while the 5.x releases converge (we’re very nearly there: my hunch is that we may decide after OCaml 5.5 that we’re in a position to sunset 4.14, but we’ll see). However, that means we have to sustain testing infrastructure on a quite old branch and, well, continuous integration funnily enough has to be continuously maintained. Previously, what would happen is that we’d be attempting to backport something to 4.14, would discover CI was broken and then have to spend time fixing that before getting on with the work. I got fed up with this after ocaml/ocaml#12520 and so did a bunch of work to synchronise all the branches (ocaml/ocaml#12846, ocaml/ocaml#12847, ocaml/ocaml#12848 and ocaml/ocaml#12849). Not particularly glamorous, but it means I can now periodically do:

$ git log --first-parent --oneline upstream/trunk -- .github tools/ci/actions

and get a nice list of recent PRs to go through and simply cherry-pick the ones which update the workflows - having got all the branches in sync, that tends to be painless, and I got to a nice little sequence on dra27/ocaml#4.14. The ulterior motive is that I particularly wanted the updates in ocaml/ocaml#14013 to be able to get Relocatable OCaml back to 5.2 so that it can be rebased on to OxCaml. Took the customary amount of to-and-fro between my ridiculous re-stacking-and-backport-script and CI, but I got the 5.2 version passing from the sunny hills of Wales only an hour or two into the holiday, and while everyone was distracted playing Fluxx (which lasted a surprisingly long time, for anyone who’s ever played it…).

Relocatable OCaml’s test harness (ocaml/ocaml#14014) had some very helpful reviews, and that’s now updated and ready to merge. So, week off and then hopefully full steam ahead with getting the third PR branch completed and, erm, some more reviewing 🫣