OCaml 4.10.0 release plan

The release of the first beta for OCaml 4.10.0 is on its way!

We are aiming for a 4.10.0 release by the end of January.

The state of the opam repository looks good enough for this stage of the release cycle: most pressing issues stem from packages relying on the internal API changes, in part due to the exciting work on multicore integration

Since base is part of the affected package, this first beta might not be for everyone yet. Those issues should be hopefully fixed soon.There will probably be a second beta release between the end of December and the beginning of January.


The most problematic failure I’ve seen so far is a failure in the base library – which doesn’t show up when you compile it (it builds fine) but when you link against it – so basically all base-depending binaries are broken. For example pcre currently fails to build with the following error message:

- /usr/bin/ld: /app/sandbox/opamstate/4.10.0+trunk/dotopam/4.10.0+trunk/lib/base/libbase_stubs.a(exn_stubs.o): in function `Base_clear_caml_backtrace_pos':
- /app/sandbox/opamstate/4.10.0+trunk/dotopam/4.10.0+trunk/.opam-switch/build/base.v0.13.0/_build/default/src/exn_stubs.c:6: undefined reference to `caml_backtrace_pos'
- collect2: error: ld returned 1 exit status
- File "caml_startup", line 1:
- Error: Error during linking

(I believe that the error is known to base developers; it was reported on the OCaml bugtracker last month, and I hope that this will get resolved quickly to un-block base users wishing to test the new version.)

Some amount of C runtime churn went into the release (some is only in trunk), due to both the gradual introduction by @jhjourdan and @stedolan of statmemprof support (not yet completed), a related cleanup of internal asynchronous-callbacks APIs with @gadmm, and some multicore-preliminary PRs, in particular @kayceesrk’s Domain_state PR.

These changes in turn triggers some compatibility issues with C code using compiler internals, some which are due to mistakes in the compiler’s backward-compatibility support (we are gradually fixing those), and some where it’s rather a problem with the user code relying on non-stable internals. Do not hesitate to ask (here or on the compiler bugtracker) if you observe a failure in your code and you are not sure in which of those two categories it falls.

(Base v0.13.0 has been marked as incompatible with 4.10 [1],
so at least we will avoid the confusion of a successful install
of Base followed by link failures in reverse dependencies.)

[1] https://github.com/ocaml/opam-repository/pull/15437


For people like me, wondering what the changes are, here’s a link to the Changelog for 4.10.


Since solving those C compatibility issues does not look as straightforward as we hoped, we have decided to wait for those issues to be resolved before publishing the beta.

Since the most pressing compatibility issues were resolved, we have just published a first beta release. There would probably be a second beta in the coming weeks in order to fix the finer points behind those compatibility issue, but most packages have be fixed, or have a patch ready.

After more discussions, we finally found a consensual compatibility API for the runtime internals (which still comes with no stability guarantee). A second beta for OCaml 4.10 with this new API is thus on its way. It would probably be followed by a bugfix release of 4.09.1, since the branch has been stable for months and there are few configuration patches and a minor bug fix in the maintenance branch.