OCaml 4.14.2 - Release Candidate
The release of OCaml version 4.14.2 is imminent.
OCaml 4.14.2 is a new update to the stable 4.14 branch of OCaml. This new release backports many safe bug fixes from the OCaml 5 branch and fixes a handful of compatibility issues of OCaml 4.14.1 with newer operating system versions.
A full list of bug fixes is available below.
In order to ensure that the future release works as expected, we are planning to test a release candidate during the upcoming week.
If you find any bugs, please report them here on GitHub.
Installation Instructions
The base compiler can be installed as an opam switch with the following commands on opam 2.1:
opam update
opam switch create 4.14.2~rc1
The source code for the release candidate is available on
Fine-Tuned Compiler Configuration
If you want to tweak the configuration of the compiler, you can switch to the option variant with:
opam update
opam switch create <switch_name> ocaml-variants.4.14.2~rc1+options <option_list>
where <option_list>
is a space-separated list of ocaml-option-*
packages. For instance, for a flambda
and no-flat-float-array
switch:
opam switch create 4.14.2~rc1+flambda+nffa ocaml-variants.4.14.2~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array
All available options can be listed with opam search ocaml-option
.
See full changelog
Changes Since OCaml 4.14.1
Runtime System:
-
#11764, #12577: Add prototypes to old-style C function definitions and declarations. (Antonin Décimo, review by Xavier Leroy and Nick Barnes)
-
#11763, #11759, #11861, #12509, #12577: Use strict prototypes on primitives. (Antonin Décimo, review by Xavier Leroy, David Allsopp, Sébastien Hinderer and Nick Barnes)
- (breaking change) #10723: Do not use
-flat-namespace
linking for macOS. (Carlo Cabrera, review by Damien Doligez)
- #11332, #12702: Make sure
Bool_val(v)
has typebool
in C++ (Xavier Leroy, report by ygrek, review by Gabriel Scherer)
Build System:
-
#11590: Allow installing to a destination path containing spaces (Élie Brami, review by Sébastien Hinderer and David Allsopp)
-
#12372: Pass option
-no-execute-only
to the linker for OpenBSD >= 7.3 so that code sections remain readable, as needed for closure marshaling. (Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and Sébastien Hinderer) -
#12903: Disable control flow integrity on OpenBSD >= 7.4 to avoid illegal instruction errors on certain CPUs. (Michael Hendricks, review by Miod Vallat)
Bug fixes:
-
#12061, #12063: Don't add inconsistent equalities when computing high-level error messages for functor applications and inclusions. (Florian Angeletti, review by Gabriel Scherer)
-
#12878: Fix incorrect treatment of injectivity for private recursive types. (Jeremy Yallop, review by Gabriel Scherer and Jacques Garrigue)
-
#12971, #12974: Fix an uncaught Ctype. Escape exception on some invalid programs forming recursive types. (Gabriel Scherer, review by Florian Angeletti, report by Neven Villani)
-
#12264, #12289: Fix
compact_allocate
to avoid a pathological case that causes very slow compaction. (Damien Doligez, report by Arseniy Alekseyev, review by Sadiq Jaffer) -
#12513, #12518: Automatically enable emulated
fma
for Visual Studio 2019+ to allow configuration with either pre-Haswell/pre-Piledriver CPUs or running in VirtualBox. Restores parity with the other Windows ports, which don't require explicit--enable-imprecise-c99-float-ops
. (David Allsopp, report by Jonah Beckford and Kate Deplaix, review by Sébastien Hinderer) -
#11633, #11636: Bug fix in
caml_unregister_frametable
(Frédéric Recoules, review by Gabriel Scherer) -
#12636, #12646: More prudent reinitialisation of I/O mutexes after a fork() (Xavier Leroy, report by Zach Baylin, review by Enguerrand Decorne)
- (breaking change) #10845 Emit frametable size on AMD64 BSD (OpenBSD, FreeBSD, NetBSD) systems (emitted for Linux in #8805) (Hannes Mehnert, review by Nicolás Ojeda Bär)
- #12958: Fix
tail-modulo-cons
compilation oftry-with
,&&
, and||
expressions. (Gabriel Scherer and Nicolás Ojeda Bär, report by Sylvain Boilard, review by Gabriel Scherer)