Release of OCaml 5.1.1
In the last three months after the release of OCaml 5.1.0, three significant regressions have been discovered in OCaml 5.1.0. Those regressions concern the packaging of executables, the typechecking of OCaml programs, and the performance of numerical codes.
Since those regressions affect many users and could have lasting effects, we have published patch release OCaml 5.1.1 fixing those issues.
As a major exception to our policy for patch releases, OCaml 5.1.1 will contain
one breaking change in the standard library: the Compression
flag has been
removed from the Marshal
module.
This drastic measure was taken because supporting ZSTD compression in the standard library made ZSTD a dependency of all OCaml executables. Since the compiler should not impose its dependency on end users, the support for compressed marshaling has been moved to a compiler internal library in 5.1.1.
Accounting for the still-experimental nature of the Multicore runtime, this patch release 5.1.1 also contains safe fixes for subtle concurrency issues in the OCaml runtime.
The full list of changes is available below for more details.
Installation Instructions
The base compiler can be installed as an opam switch with the following commands:
opam update
opam switch create 5.1.1
The source code for the release is also directly available on:
See full changelog
Standard library:
- (breaking change) #12562, #12734, #12783: Remove the
Marshal.Compression
flag to theMarshal.to_*
functions introduced in 5.1 by #12006, as it cannot be implemented without risking to link-lzstd
with allocamlopt
-generated executables. The compilers are still able to use ZSTD compression for compilation artefacts. (Xavier Leroy and David Allsopp, report by Kate Deplaix, review by Nicolás Ojeda Bär, Kate Deplaix, and Damien Doligez).
Runtime Bug Fixes:
-
#11800, #12707: Fix an assertion race condition in
install_backup_thread
(Jan Midtgaard, review by Gabriel Scherer) -
#12486, #12535: Fix delivery of unhandled effect exceptions on AMD64 with
--enable-frame-pointers
(Miod Vallat, report by Jan Midtgaard, review by Gabriel Scherer) -
#12712, #12742: Fix an assertion boundary case in
caml_reset_young_limit
(Jan Midtgaard, review by Guillaume Munch-Maccagnoni) -
#12713, #12715: Disable common subexpression elimination for atomic loads (Gabriel Scherer and Vincent Laviron, review by Vincent Laviron, KC Sivaramakrishnan and Xavier Leroy, report by Vesa Karvonen and Carine Morel)
GC Performance Regression Bug Fixes:
-
#12318: GC: simplify the meaning of
custom_minor_max_size:
blocks with out-of-heap memory above this limit are now allocated directly in the major heap. (Damien Doligez, report by Stephen Dolan, review by Gabriel Scherer) -
#12439: Finalise and collect dead custom blocks during minor collection (Damien Doligez, review by Xavier Leroy, Gabriel Scherer and KC Sivaramakrishnan)
-
#12590, #12595: Move
caml_collect_gc_stats_sample
incaml_empty_minor_heap_promote
before barrier arrival. (B. Szilvasy, review by Gabriel Scherer) -
#12491, #12493, #12500, #12754: Do not change GC pace when creating subarrays of bigarrays (Xavier Leroy, report by Ido Yariv, analysis by Gabriel Scherer, review by Gabriel Scherer and Fabrice Buoro)
Bug Fixes
-
#12581, #12609: Fix error on uses of packed modules outside their pack to correctly handle nested packs (Vincent Laviron, report by Javier Chávarri, review by Pierre Chambart)
-
#12623: Fix the computation of variance composition (Florian Angeletti, report by Vesa Karvonen, review by Gabriel Scherer)
-
#12645, #12649: Fix error messages for cyclic type definitions in presence of the
-short-paths
flag. (Florian Angeletti, report by Vesa Karvonen, review by Gabriel Scherer) -
#12757: Fix
ocamlnat
(native toplevel) by registering frametables correctly (Stephen Dolan, Nick Barnes and Mark Shinwell, review by Vincent Laviron and Sébastien Hinderer) -
#12791:
extern
is applied to definitions ofcaml_builtin_cprim
andcaml_names_of_builtin_cprim
when linking bytecode-custom
executables with a C++ linker. (Shayne Fletcher, review by Antonin Décimo and Xavier Leroy)