OCaml 5.4.1 and OCaml 4.14.3 released

Florian Angeletti <[email protected]> Tue, 17 Feb 2026 17:10:44 +0100 (CET)
Newsgroups gmane.comp.lang.caml.announce,gmane.comp.lang.caml.inria
Message-ID <[email protected]>
--=_fa172da6-6b11-4a17-bf41-3e5d9e08a09d
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Dear OCaml users,=20

We have the pleasure of announcing the dual releases of OCaml 4.14.3 and OC=
aml=20
5.4.1, dedicated to the memory of Nicolaas Govert de Bruijn on the annivers=
ary=20
of his death.=20

Those releases are a collection of safe and valuable runtime bugfixes.=20
The OCaml 5.4.1 release also contains a fix for the `-pack` mode for macOs=
=20
and various TSAN fixes.=20

More importantly, those new versions harden the Marshal module against mali=
cious=20
inputs as described in the security announcement (https://osv.dev/vulnerabi=
lity/OSEC-2026-01).=20

We are encouraging you to switch to those new releases whenever possible.=
=20

Don't hesitate to report any bugs on the OCaml issue tracker at=20
https://github.com/ocaml/ocaml/issues.=20

See the list of changes below for more details.=20

Happy hacking,=20
-- Florian Angeletti for the OCaml team.=20


Installation Instructions=20
------------------------------=20

The base compilers will be soon installable as an opam switch with the foll=
owing commands:=20

opam update=20
opam switch create 4.14.3=20
opam switch create 5.4.1=20


The source code for the release candidate is also directly available on:=20

* GitHub:=20
- https://github.com/ocaml/ocaml/archive/4.14.3.tar.gz=20
- https://github.com/ocaml/ocaml/archive/5.4.1.tar.gz=20

* Inria archive:=20
- https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.3.tar.gz=20
- https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.1.tar.gz=20


OCaml 4.14.3 (17 February 2026)=20
-----------------------------------------------------=20


- [#12070](https://github.com/ocaml/ocaml/issues/12070), [#12075](https://g=
ithub.com/ocaml/ocaml/issues/12075), [#13209](https://github.com/ocaml/ocam=
l/issues/13209): auto-detect whether `ar` support @FILE arguments at=20
configure-time to avoid using this feature with toolchains that do not supp=
ort=20
it (eg FreeBSD/Darwin); backport from 5.3.=20
(backport by Boris Dobroslavov, original fix by Nicol=E1s Ojeda B=E4r, revi=
ew by=20
Xavier Leroy, David Allsopp, Javier Ch=E1varri, Anil Madhavapeddy)=20

- [#12207](https://github.com/ocaml/ocaml/issues/12207), [#12222](https://g=
ithub.com/ocaml/ocaml/issues/12222): Make closure computation linear in the=
 number of recursive=20
functions instead of quadratic=20
(Vincent Laviron, report by Fran=E7ois Pottier, review by Nathana=EBlle Cou=
rant=20
and Gabriel Scherer)=20

- [#13430](https://github.com/ocaml/ocaml/issues/13430), [#13434](https://g=
ithub.com/ocaml/ocaml/issues/13434): protect memory-safety on Lazy.force ra=
ces=20
(Gabriel Scherer and Vincent Laviron, report by Edwin T=F6r=F6k,=20
review by Vincent Laviron)=20

- [#13448](https://github.com/ocaml/ocaml/issues/13448), [#13449](https://g=
ithub.com/ocaml/ocaml/issues/13449): fix a code-generation bug on unsafe ar=
ray accesses=20
at type int32, int64, nativeint, which has been introduced in OCaml 4.04.=
=20
(Gabriel Scherer, review by Nicol=E1s Ojeda B=E4r and Vincent Laviron,=20
report by Simon Cruanes)=20

- [#13516](https://github.com/ocaml/ocaml/issues/13516): Fix regression whe=
re error conditions during bytecode initialisation=20
caused a segmentation fault rather than being properly reported (regression=
 of=20
[#5115](https://github.com/ocaml/ocaml/issues/5115) in [#11788](https://git=
hub.com/ocaml/ocaml/issues/11788))=20
(David Allsopp, review by Nicol=E1s Ojeda B=E4r)=20

- [#13847](https://github.com/ocaml/ocaml/issues/13847): On Windows, mainta=
in a number of threads waiting on the master lock to=20
avoid unnecessary context switches=20
(Dmitry Bely, review by Antonin D=E9cimo)=20

- [#14007](https://github.com/ocaml/ocaml/issues/14007), [#14015](https://g=
ithub.com/ocaml/ocaml/issues/14015): Fix memory corruption when an exceptio=
n is raised during=20
demarshaling.=20
(Beno=EEt Vaugon, review by David Allsopp and Gabriel Scherer)=20

- [OSEC-2026-01](https://osv.dev/vulnerability/OSEC-2026-01): robustify int=
ern.c=20
(Xavier Leroy, review by Damien Doligez and Olivier Nicole)=20

OCaml 5.4.1 (17 February 2026)=20
-------------------------------------------=20

### Bug fixes:=20

- [#14010](https://github.com/ocaml/ocaml/issues/14010): Fix miscompilation=
 / liveness errors for string operations=20
(Mark Shinwell, Xavier Clerc, review by Xavier Leroy and Gabriel Scherer)=
=20

- [#14065](https://github.com/ocaml/ocaml/issues/14065): Fix function signa=
ture mismatch of `__tsan_func_exit` with GCC 15.=20
Check in the configure step if the TSan provided internal builtins are the=
=20
same as what we expect, introduce `caml_tsan_*` wrappers for the `__tsan_*`=
=20
functions we use.=20
(Hari Hara Naveen S, report by Hari Hara Naveen S,=20
review by Gabriel Scherer, Antonin D=E9cimo, Olivier Nicole)=20

- [#14417](https://github.com/ocaml/ocaml/issues/14417): Fix issue with nes=
ted packs on macOS.=20
(Vincent Laviron, report by Kate Deplaix, review by Gabriel Scherer)=20

- [#14213](https://github.com/ocaml/ocaml/issues/14213): Fix shadow-stack-r=
elated crashes with TSan=20
(Olivier Nicole, report by Nathan Taylor, review by Gabriel Scherer and=20
Stefan Muenzel)=20

- [#14255](https://github.com/ocaml/ocaml/issues/14255): Fix TSan bug with =
C calls that take many arguments=20
(Olivier Nicole and Miod Vallat, report by Nathan Taylor, review by Gabriel=
=20
Scherer)=20

- [OSEC-2026-01](https://osv.dev/vulnerability/OSEC-2026-01): robustify int=
ern.c=20
(Xavier Leroy and Nicol=E1s Ojeda B=E4r, review by Olivier Nicole, Mindy Pr=
eston,=20
Edwin T=F6r=F6k, and Gabriel Scherer)=20


--=_fa172da6-6b11-4a17-bf41-3e5d9e08a09d
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"font-family: arial, helvetica, sans-serif; font-s=
ize: 12pt; color: #000000"><div>Dear OCaml users,<br><br>We have the pleasu=
re of announcing the dual releases of OCaml 4.14.3 and OCaml<br>5.4.1, dedi=
cated to the memory of Nicolaas Govert de Bruijn on the anniversary<br>of h=
is death.<br><br>Those releases are a collection of safe and valuable runti=
me bugfixes.<br>The OCaml 5.4.1 release also contains a fix for the `-pack`=
 mode for macOs<br>and various TSAN fixes.<br><br>More importantly, those n=
ew versions harden the Marshal module against malicious</div><div>inputs as=
 described in the security announcement (https://osv.dev/vulnerability/OSEC=
-2026-01).</div><div><br>We are encouraging you to switch to those new rele=
ases whenever possible.<br><br>Don't hesitate to report any bugs on the OCa=
ml issue tracker at<br>https://github.com/ocaml/ocaml/issues.<br><br>See th=
e list of changes below for more details.<br><br>Happy hacking,<br>-- Flori=
an Angeletti for the OCaml team.<br><br><br>Installation Instructions<br>--=
----------------------------<br><br>The base compilers will be soon install=
able as an opam switch with the following commands:<br><br>&nbsp; &nbsp; op=
am update<br>&nbsp; &nbsp; opam switch create 4.14.3<br>&nbsp; &nbsp; opam =
switch create 5.4.1<br><br><br>The source code for the release candidate is=
 also directly available on:<br><br>* GitHub:&nbsp;<br>&nbsp; - https://git=
hub.com/ocaml/ocaml/archive/4.14.3.tar.gz<br>&nbsp; - https://github.com/oc=
aml/ocaml/archive/5.4.1.tar.gz<br><br>* Inria archive:&nbsp;<br>&nbsp; &nbs=
p;- https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.3.tar.gz<br>&nb=
sp; &nbsp;- https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.1.tar.gz<=
br><br><br>OCaml 4.14.3 (17 February 2026)<br>-----------------------------=
------------------------<br><br><br>- [#12070](https://github.com/ocaml/oca=
ml/issues/12070), [#12075](https://github.com/ocaml/ocaml/issues/12075), [#=
13209](https://github.com/ocaml/ocaml/issues/13209): auto-detect whether `a=
r` support @FILE arguments at<br>&nbsp; configure-time to avoid using this =
feature with toolchains that do not support<br>&nbsp; it (eg FreeBSD/Darwin=
); backport from 5.3.<br>&nbsp; (backport by Boris Dobroslavov, original fi=
x by Nicol=E1s Ojeda B=E4r, review by<br>&nbsp; Xavier Leroy, David Allsopp=
, Javier Ch=E1varri, Anil Madhavapeddy)<br><br>- [#12207](https://github.co=
m/ocaml/ocaml/issues/12207), [#12222](https://github.com/ocaml/ocaml/issues=
/12222): Make closure computation linear in the number of recursive<br>&nbs=
p; functions instead of quadratic<br>&nbsp; (Vincent Laviron, report by Fra=
n=E7ois Pottier, review by Nathana=EBlle Courant<br>&nbsp; and Gabriel Sche=
rer)<br><br>- [#13430](https://github.com/ocaml/ocaml/issues/13430), [#1343=
4](https://github.com/ocaml/ocaml/issues/13434): protect memory-safety on L=
azy.force races<br>&nbsp; (Gabriel Scherer and Vincent Laviron, report by E=
dwin T=F6r=F6k,<br>&nbsp; &nbsp;review by Vincent Laviron)<br><br>- [#13448=
](https://github.com/ocaml/ocaml/issues/13448), [#13449](https://github.com=
/ocaml/ocaml/issues/13449): fix a code-generation bug on unsafe array acces=
ses<br>&nbsp; at type int32, int64, nativeint, which has been introduced in=
 OCaml 4.04.<br>&nbsp; (Gabriel Scherer, review by Nicol=E1s Ojeda B=E4r an=
d Vincent Laviron,<br>&nbsp; &nbsp;report by Simon Cruanes)<br><br>- [#1351=
6](https://github.com/ocaml/ocaml/issues/13516): Fix regression where error=
 conditions during bytecode initialisation<br>&nbsp; caused a segmentation =
fault rather than being properly reported (regression of<br>&nbsp; [#5115](=
https://github.com/ocaml/ocaml/issues/5115) in [#11788](https://github.com/=
ocaml/ocaml/issues/11788))<br>&nbsp; (David Allsopp, review by Nicol=E1s Oj=
eda B=E4r)<br><br>- [#13847](https://github.com/ocaml/ocaml/issues/13847): =
On Windows, maintain a number of threads waiting on the master lock to<br>&=
nbsp; avoid unnecessary context switches<br>&nbsp; (Dmitry Bely, review by =
Antonin D=E9cimo)<br><br>- [#14007](https://github.com/ocaml/ocaml/issues/1=
4007), [#14015](https://github.com/ocaml/ocaml/issues/14015): Fix memory co=
rruption when an exception is raised during<br>&nbsp; demarshaling.<br>&nbs=
p; (Beno=EEt Vaugon, review by David Allsopp and Gabriel Scherer)<br><br>- =
[OSEC-2026-01](https://osv.dev/vulnerability/OSEC-2026-01): robustify inter=
n.c<br>&nbsp; (Xavier Leroy, review by Damien Doligez and Olivier Nicole)<b=
r><br>OCaml 5.4.1 (17 February 2026)<br>-----------------------------------=
--------<br><br>### Bug fixes:<br><br>- [#14010](https://github.com/ocaml/o=
caml/issues/14010): Fix miscompilation / liveness errors for string operati=
ons<br>&nbsp; (Mark Shinwell, Xavier Clerc, review by Xavier Leroy and Gabr=
iel Scherer)<br><br>- [#14065](https://github.com/ocaml/ocaml/issues/14065)=
: Fix function signature mismatch of `__tsan_func_exit` with GCC 15.<br>&nb=
sp; Check in the configure step if the TSan provided internal builtins are =
the<br>&nbsp; same as what we expect, introduce `caml_tsan_*` wrappers for =
the `__tsan_*`<br>&nbsp; functions we use.<br>&nbsp; (Hari Hara Naveen S, r=
eport by Hari Hara Naveen S,<br>&nbsp; review by Gabriel Scherer, Antonin D=
=E9cimo, Olivier Nicole)<br><br>- [#14417](https://github.com/ocaml/ocaml/i=
ssues/14417): Fix issue with nested packs on macOS.<br>&nbsp; (Vincent Lavi=
ron, report by Kate Deplaix, review by Gabriel Scherer)<br><br>- [#14213](h=
ttps://github.com/ocaml/ocaml/issues/14213): Fix shadow-stack-related crash=
es with TSan<br>&nbsp; (Olivier Nicole, report by Nathan Taylor, review by =
Gabriel Scherer and<br>&nbsp; &nbsp;Stefan Muenzel)<br><br>- [#14255](https=
://github.com/ocaml/ocaml/issues/14255): Fix TSan bug with C calls that tak=
e many arguments<br>&nbsp; (Olivier Nicole and Miod Vallat, report by Natha=
n Taylor, review by Gabriel<br>&nbsp; &nbsp;Scherer)<br><br>- [OSEC-2026-01=
](https://osv.dev/vulnerability/OSEC-2026-01): robustify intern.c<br>&nbsp;=
 (Xavier Leroy and Nicol=E1s Ojeda B=E4r, review by Olivier Nicole, Mindy P=
reston,<br>&nbsp; Edwin T=F6r=F6k, and Gabriel Scherer)<br><br data-mce-bog=
us=3D"1"></div></div></body></html>
--=_fa172da6-6b11-4a17-bf41-3e5d9e08a09d--