Dear OCaml users,
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 packages might take some hours to propagate on the opam repository).
If you find any bugs, please report them here on https://github.com/ocaml/ocaml/issues.
Happy hacking,
Florian Angeletti for the OCaml team.
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
- GitHub: https://github.com/ocaml/ocaml/archive/4.14.2-rc1.tar.gz
- Inria archives : https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.2~rc1.tar.gz
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(https://github.com/ocaml/ocaml/issues/11764), #12577(https://github.com/ocaml/ocaml/issues/12577): Add prototypes to old-style C function definitions
and declarations.
(Antonin Décimo, review by Xavier Leroy and Nick Barnes)
- #11763(https://github.com/ocaml/ocaml/issues/11763), #11759(https://github.com/ocaml/ocaml/issues/11759), #11861(https://github.com/ocaml/ocaml/issues/11861), #12509(https://github.com/ocaml/ocaml/issues/12509), #12577(https://github.com/ocaml/ocaml/issues/12577):
Use strict prototypes on primitives.
(Antonin Décimo, review by Xavier Leroy, David Allsopp, Sébastien
Hinderer and Nick Barnes)
* (*breaking change*) #10723(https://github.com/ocaml/ocaml/issues/10723): Do not use `-flat-namespace` linking for macOS.
(Carlo Cabrera, review by Damien Doligez)
- #11332(https://github.com/ocaml/ocaml/issues/11332), [#12702](https://github.com/ocaml/ocaml/issues/12702): Make sure `Bool_val(v)` has type `bool` in C++
(Xavier Leroy, report by ygrek, review by Gabriel Scherer)
### Build System:
- #11590(https://github.com/ocaml/ocaml/issues/11590): Allow installing to a destination path containing spaces
(Élie Brami, review by Sébastien Hinderer and David Allsopp)
- #12372(https://github.com/ocaml/ocaml/issues/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(https://github.com/ocaml/ocaml/issues/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(https://github.com/ocaml/ocaml/issues/12061), #12063(https://github.com/ocaml/ocaml/issues/12063): Don't add inconsistent equalities when computing
high-level error messages for functor applications and inclusions.
(Florian Angeletti, review by Gabriel Scherer)
- #12878(https://github.com/ocaml/ocaml/issues/12878): Fix incorrect treatment of injectivity for private recursive types.
(Jeremy Yallop, review by Gabriel Scherer and Jacques Garrigue)
- #12971(https://github.com/ocaml/ocaml/issues/12971), [#12974](https://github.com/ocaml/ocaml/issues/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(https://github.com/ocaml/ocaml/issues/12264), #12289(https://github.com/ocaml/ocaml/issues/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(https://github.com/ocaml/ocaml/issues/12513), #12518(https://github.com/ocaml/ocaml/issues/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(https://github.com/ocaml/ocaml/issues/11633), [#11636](https://github.com/ocaml/ocaml/issues/11636): Bug fix in `caml_unregister_frametable`
(Frédéric Recoules, review by Gabriel Scherer)
- #12636(https://github.com/ocaml/ocaml/issues/12636), #12646(https://github.com/ocaml/ocaml/issues/12646): More prudent reinitialisation of I/O mutexes after a fork()
(Xavier Leroy, report by Zach Baylin, review by Enguerrand Decorne)
* (*breaking change*) #10845(https://github.com/ocaml/ocaml/issues/10845) Emit frametable size on AMD64 BSD (OpenBSD, FreeBSD, NetBSD) systems
(emitted for Linux in [#8805](https://github.com/ocaml/ocaml/issues/8805))
(Hannes Mehnert, review by Nicolás Ojeda Bär)
- #12958(https://github.com/ocaml/ocaml/issues/12958): Fix `tail-modulo-cons` compilation of `try-with`, `&&`, and `||`
expressions.
(Gabriel Scherer and Nicolás Ojeda Bär, report by Sylvain Boilard, review by
Gabriel Scherer)