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 (the rc candidate might take some time to propagate on the opam repository).
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
.
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)