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> op= am update<br> opam switch create 4.14.3<br> opam = switch create 5.4.1<br><br><br>The source code for the release candidate is= also directly available on:<br><br>* GitHub: <br> - https://git= hub.com/ocaml/ocaml/archive/4.14.3.tar.gz<br> - https://github.com/oc= aml/ocaml/archive/5.4.1.tar.gz<br><br>* Inria archive: <br> &nbs= p;- https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.3.tar.gz<br>&nb= sp; - 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> configure-time to avoid using this = feature with toolchains that do not support<br> it (eg FreeBSD/Darwin= ); backport from 5.3.<br> (backport by Boris Dobroslavov, original fi= x by Nicol=E1s Ojeda B=E4r, review by<br> 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> (Vincent Laviron, report by Fra= n=E7ois Pottier, review by Nathana=EBlle Courant<br> 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> (Gabriel Scherer and Vincent Laviron, report by E= dwin T=F6r=F6k,<br> 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> at type int32, int64, nativeint, which has been introduced in= OCaml 4.04.<br> (Gabriel Scherer, review by Nicol=E1s Ojeda B=E4r an= d Vincent Laviron,<br> report by Simon Cruanes)<br><br>- [#1351= 6](https://github.com/ocaml/ocaml/issues/13516): Fix regression where error= conditions during bytecode initialisation<br> caused a segmentation = fault rather than being properly reported (regression of<br> [#5115](= https://github.com/ocaml/ocaml/issues/5115) in [#11788](https://github.com/= ocaml/ocaml/issues/11788))<br> (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> (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> 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> (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> (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> same as what we expect, introduce `caml_tsan_*` wrappers for = the `__tsan_*`<br> functions we use.<br> (Hari Hara Naveen S, r= eport by Hari Hara Naveen S,<br> 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> (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> (Olivier Nicole, report by Nathan Taylor, review by = Gabriel Scherer and<br> Stefan Muenzel)<br><br>- [#14255](https= ://github.com/ocaml/ocaml/issues/14255): Fix TSan bug with C calls that tak= e many arguments<br> (Olivier Nicole and Miod Vallat, report by Natha= n Taylor, review by Gabriel<br> Scherer)<br><br>- [OSEC-2026-01= ](https://osv.dev/vulnerability/OSEC-2026-01): robustify intern.c<br> = (Xavier Leroy and Nicol=E1s Ojeda B=E4r, review by Olivier Nicole, Mindy P= reston,<br> Edwin T=F6r=F6k, and Gabriel Scherer)<br><br data-mce-bog= us=3D"1"></div></div></body></html> --=_fa172da6-6b11-4a17-bf41-3e5d9e08a09d--