Dear OCaml users, We have the pleasure of announcing the dual releases of OCaml 4.14.3 and OCaml 5.4.1, dedicated to the memory of Nicolaas Govert de Bruijn on the anniversary of his death. Those releases are a collection of safe and valuable runtime bugfixes. The OCaml 5.4.1 release also contains a fix for the `-pack` mode for macOs and various TSAN fixes. More importantly, those new versions harden the Marshal module against malicious inputs as described in the security announcement (https://osv.dev/vulnerability/OSEC-2026-01). We are encouraging you to switch to those new releases whenever possible. Don't hesitate to report any bugs on the OCaml issue tracker at https://github.com/ocaml/ocaml/issues. See the list of changes below for more details. Happy hacking, -- Florian Angeletti for the OCaml team. Installation Instructions ------------------------------ The base compilers will be soon installable as an opam switch with the following commands: opam update opam switch create 4.14.3 opam switch create 5.4.1 The source code for the release candidate is also directly available on: * GitHub: - https://github.com/ocaml/ocaml/archive/4.14.3.tar.gz - https://github.com/ocaml/ocaml/archive/5.4.1.tar.gz * Inria archive: - https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.3.tar.gz - https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.1.tar.gz OCaml 4.14.3 (17 February 2026) ----------------------------------------------------- - [#12070](https://github.com/ocaml/ocaml/issues/12070), [#12075](https://github.com/ocaml/ocaml/issues/12075), [#13209](https://github.com/ocaml/ocaml/issues/13209): auto-detect whether `ar` support @FILE arguments at configure-time to avoid using this feature with toolchains that do not support it (eg FreeBSD/Darwin); backport from 5.3. (backport by Boris Dobroslavov, original fix by Nicolás Ojeda Bär, review by Xavier Leroy, David Allsopp, Javier Chávarri, Anil Madhavapeddy) - [#12207](https://github.com/ocaml/ocaml/issues/12207), [#12222](https://github.com/ocaml/ocaml/issues/12222): Make closure computation linear in the number of recursive functions instead of quadratic (Vincent Laviron, report by François Pottier, review by Nathanaëlle Courant and Gabriel Scherer) - [#13430](https://github.com/ocaml/ocaml/issues/13430), [#13434](https://github.com/ocaml/ocaml/issues/13434): protect memory-safety on Lazy.force races (Gabriel Scherer and Vincent Laviron, report by Edwin Török, review by Vincent Laviron) - [#13448](https://github.com/ocaml/ocaml/issues/13448), [#13449](https://github.com/ocaml/ocaml/issues/13449): fix a code-generation bug on unsafe array accesses at type int32, int64, nativeint, which has been introduced in OCaml 4.04. (Gabriel Scherer, review by Nicolás Ojeda Bär and Vincent Laviron, report by Simon Cruanes) - [#13516](https://github.com/ocaml/ocaml/issues/13516): Fix regression where error conditions during bytecode initialisation caused a segmentation fault rather than being properly reported (regression of [#5115](https://github.com/ocaml/ocaml/issues/5115) in [#11788](https://github.com/ocaml/ocaml/issues/11788)) (David Allsopp, review by Nicolás Ojeda Bär) - [#13847](https://github.com/ocaml/ocaml/issues/13847): On Windows, maintain a number of threads waiting on the master lock to avoid unnecessary context switches (Dmitry Bely, review by Antonin Décimo) - [#14007](https://github.com/ocaml/ocaml/issues/14007), [#14015](https://github.com/ocaml/ocaml/issues/14015): Fix memory corruption when an exception is raised during demarshaling. (Benoît Vaugon, review by David Allsopp and Gabriel Scherer) - [OSEC-2026-01](https://osv.dev/vulnerability/OSEC-2026-01): robustify intern.c (Xavier Leroy, review by Damien Doligez and Olivier Nicole) OCaml 5.4.1 (17 February 2026) ------------------------------------------- ### Bug fixes: - [#14010](https://github.com/ocaml/ocaml/issues/14010): Fix miscompilation / liveness errors for string operations (Mark Shinwell, Xavier Clerc, review by Xavier Leroy and Gabriel Scherer) - [#14065](https://github.com/ocaml/ocaml/issues/14065): Fix function signature mismatch of `__tsan_func_exit` with GCC 15. Check in the configure step if the TSan provided internal builtins are the same as what we expect, introduce `caml_tsan_*` wrappers for the `__tsan_*` functions we use. (Hari Hara Naveen S, report by Hari Hara Naveen S, review by Gabriel Scherer, Antonin Décimo, Olivier Nicole) - [#14417](https://github.com/ocaml/ocaml/issues/14417): Fix issue with nested packs on macOS. (Vincent Laviron, report by Kate Deplaix, review by Gabriel Scherer) - [#14213](https://github.com/ocaml/ocaml/issues/14213): Fix shadow-stack-related crashes with TSan (Olivier Nicole, report by Nathan Taylor, review by Gabriel Scherer and Stefan Muenzel) - [#14255](https://github.com/ocaml/ocaml/issues/14255): Fix TSan bug with C calls that take many arguments (Olivier Nicole and Miod Vallat, report by Nathan Taylor, review by Gabriel Scherer) - [OSEC-2026-01](https://osv.dev/vulnerability/OSEC-2026-01): robustify intern.c (Xavier Leroy and Nicolás Ojeda Bär, review by Olivier Nicole, Mindy Preston, Edwin Török, and Gabriel Scherer)