* [Caml-list] First alpha release of OCaml 5.4.0
@ 2025-05-27 12:38 Florian Angeletti
2025-07-25 9:09 ` [Caml-list] First beta " Florian Angeletti
0 siblings, 1 reply; 3+ messages in thread
From: Florian Angeletti @ 2025-05-27 12:38 UTC (permalink / raw)
To: caml-list
[-- Attachment #1: Type: text/plain, Size: 2321 bytes --]
Dear OCaml users,
Four months after the release of OCaml 5.3.0, the set of new features for the
future version 5.4.0 of OCaml has been frozen. We are thus happy to announce
the first alpha release for OCaml 5.4.0.
This alpha version is here to help fellow hackers join us early in our bug
hunting and opam ecosystem fixing fun (see below for the installation
instructions). More information about the release process is available
at https://github.com/ocaml/ocaml/blob/trunk/release-info/introduction.md.
The progresses on stabilising the ecosystem are tracked on the
"opam readiness for 5.4.0 meta-issue" at
https://github.com/ocaml/opam-repository/issues/27916
The full release is expected around the end of July. There are more information
available in the new prospective calendar at
https://github.com/ocaml/ocaml/blob/trunk/release-info/calendar.md .
If you find any bugs, please report them on OCaml's issue tracker:
https://github.com/ocaml/ocaml/issues
If you are interested in the ongoing list of new features and bug fixes, the
updated change log for OCaml 5.4.0 is available on GitHub at
https://github.com/ocaml/ocaml/blob/5.4/Changes
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 and later:
opam update
opam switch create 5.4.0~alpha1
The source code for the alpha is also available at these addresses:
* GitHub: https://github.com/ocaml/ocaml/archive/5.4.0-alpha1.tar.gz
* OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.0~alpha1.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.5.4.0~alpha1+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 5.4.0~alpha1+flambda+nffa ocaml-variants.5.4.0~alpha1+options ocaml-option-flambda ocaml-option-no-flat-float-array
All available options can be listed with `opam search ocaml-option`.
[-- Attachment #2: Type: text/html, Size: 2826 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Caml-list] First beta release of OCaml 5.4.0
2025-05-27 12:38 [Caml-list] First alpha release of OCaml 5.4.0 Florian Angeletti
@ 2025-07-25 9:09 ` Florian Angeletti
2025-09-11 12:42 ` [Caml-list] Second " Florian Angeletti
0 siblings, 1 reply; 3+ messages in thread
From: Florian Angeletti @ 2025-07-25 9:09 UTC (permalink / raw)
To: caml-list
[-- Attachment #1: Type: text/plain, Size: 6873 bytes --]
Dear OCaml users,
Two months after the release of the first alpha for OCaml 5.4.0, the release of
OCaml 5.4.0 is drawing near.
The internal API of the compiler libraries has been frozen, and most core
developer tools support (or will support soon) the new version of the compiler.
We have thus released a first beta version of OCaml 5.4.0 to help you update
your softwares and libraries ahead of the release (see below for the
installation instructions).
Compared to the first alpha release, this beta release brings two notable
changes. First, this beta partially reverts the changes of symbol names in
executable (in order to keep current version of `perf` working with OCaml
executable). Second, this beta fixes a significant performance issue on Apple
Silicon macOS.
Beyond these two changes, this first beta release contains a dozen of
small bug fixes (from the runtime to the error messages) which is usual for
the stage of the release. We are expecting the release candidate to follow
this beta release soon in the beginning of August.
The progresses on stabilising the ecosystem are tracked on the opam readiness
for 5.4.0 meta-issue: https://github.com/ocaml/opam-repository/issues/27916.
The full release is expected in the middle of August (see the new prospective
calendar at https://github.com/ocaml/ocaml/blob/trunk/release-info/calendar.md)
for more information).
If you find any bugs, please report them on OCaml's issue
tracker: https://github.com/ocaml/ocaml/issues .
If you are interested in full list of features and bug fixes of the new OCaml
version, the updated change log for OCaml 5.4.0 is available at
https://github.com/ocaml/ocaml/blob/5.4/Changes.
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 and later:
opam update
opam switch create 5.4.0~beta1
The source code for the beta is also available at these addresses:
* GitHub: https://github.com/ocaml/ocaml/archive/5.4.0-beta1.tar.gz)
* OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.0~beta1.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.5.4.0~beta1+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 5.4.0~beta1+flambda+nffa ocaml-variants.5.4.0~beta1+options ocaml-option-flambda ocaml-option-no-flat-float-array
All available options can be listed with `opam search ocaml-option`.
Changes since the first alpha
-----------------------------
Code generation fixes
---------------------
* (*breaking change*) #13050, #14104, +[#14143](https://github.com/ocaml/ocaml/issues/14143): Use '$' instead of '.' to separate module names
in symbol names on macOS and Windows (including the Cygwin backend).
This changes mangling of OCaml identifiers on those operating systems from
`camlModule.name_NNN` to `camlModule$name_NNN`. Additionally it
changes the encoding of special characters from $xx (two hex digits)
to $$xx (two dollar signs followed by two hex digits).
(Tim McGilchrist, with contributions from Xavier Leroy,
reviewed by Xavier Leroy, Miod Vallat, Gabriel Scherer,
Nick Barnes and Hugo Heuzard)
- [#14088](https://github.com/ocaml/ocaml/issues/14088), [#14091](https://github.com/ocaml/ocaml/issues/14091): fix non-deterministic code generation in
matching.ml (backport of rescript-lang/rescript[#7557](https://github.com/ocaml/ocaml/issues/7557))
(Christiano Calgano, review by Gabriel Scherer and Vincent Laviron)
Performance fix
--------------
- [#13262](https://github.com/ocaml/ocaml/issues/13262), [#14074](https://github.com/ocaml/ocaml/issues/14074): fix performance issue on Apple Silicon macOS by emitting
`stlr` instead of `dmb ishld; str`.
(KC Sivaramakrishnan, report by François Pottier, analysis by Frédéric Bour,
Xavier Leroy, Miod Vallat, Gabriel Scherer and Stephen Dolan, review by Miod
Vallat, Vincent Laviron and Xavier Leroy)
Standard library fix:
---------------------
* (*breaking change*) [#14124](https://github.com/ocaml/ocaml/issues/14124): Do not raise Invalid_argument on negative List.{drop,take}.
(Daniel Bünzli, review by Gabriel Scherer, Nicolás Ojeda Bär)
Runtime fixes
-------------
- [#14057](https://github.com/ocaml/ocaml/issues/14057): Don't update memprof too early at the end of a minor GC.
(Nick Barnes, review by Damien Doligez).
- [#13586](https://github.com/ocaml/ocaml/issues/13586), [#14093](https://github.com/ocaml/ocaml/issues/14093): Fix closing an out_channel during flush
(Stephen Dolan, report by Jan Midtgaard, investigation by Nick Roberts,
review by Antonin Décimo and Miod Vallat)
Error message fixes
-------------------
- [#13956](https://github.com/ocaml/ocaml/issues/13956) Fix a regression introduced in [#13308](https://github.com/ocaml/ocaml/issues/13308) triggering wrong unused warnings.
(Ulysse Gérard, review by Florian Angeletti)
- [#14070](https://github.com/ocaml/ocaml/issues/14070): also point to label mismatches in error messages for labelled tuples
(Florian Angeletti, review by Gabriel Scherer)
- [#14135](https://github.com/ocaml/ocaml/issues/14135): Fix a rare internal typechecker error when combining recursive
modules, polymorphic fields or methods, and constrained type parameters.
(Florian Angeletti, review by Gabriel Scherer)
Compilerlibs fixes
------------------
- [#14105](https://github.com/ocaml/ocaml/issues/14105): Fix a loop in Pprintast that could result in a hang when printing
constructor `(::)` in isolation.
(Ulysse Gérard, review by Nicolás Ojeda Bär and Florian Angeletti)
- [#14108](https://github.com/ocaml/ocaml/issues/14108): toplevel, fix a typo in directive type mismatch
(Florian Angeletti, review by Gabriel Scherer)
- [#14101](https://github.com/ocaml/ocaml/issues/14101), [#14139](https://github.com/ocaml/ocaml/issues/14139): define atomic helper types inside `caml/misc.h` to improve
header compatibility with C++
(Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)
OCamldoc fix
------------
- [#13896](https://github.com/ocaml/ocaml/issues/13896), [#14098](https://github.com/ocaml/ocaml/issues/14098): ocamldoc, do not wrap module description in a paragraph tag
inside the table of modules
(Florian Angeletti, report by John Whitington, review by Gabriel Scherer)
[-- Attachment #2: Type: text/html, Size: 7555 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Caml-list] Second beta release of OCaml 5.4.0
2025-07-25 9:09 ` [Caml-list] First beta " Florian Angeletti
@ 2025-09-11 12:42 ` Florian Angeletti
0 siblings, 0 replies; 3+ messages in thread
From: Florian Angeletti @ 2025-09-11 12:42 UTC (permalink / raw)
To: caml-list
[-- Attachment #1: Type: text/plain, Size: 5277 bytes --]
Dear OCaml users,
After an extended summer break, the release of OCaml 5.4.0 is getting close.
Since there have been a handful of meaningful bug fixes this summer,
we are releasing a second beta version of OCaml 5.4.0 to help you update
your software and libraries ahead of the release (see below for the
installation instructions). More information about the whole release process is
now available in the compiler repository:
- https://github.com/ocaml/ocaml/blob/trunk/release-info/introduction.md).
Compared to the first beta release, this beta release contains four notable
bug fixes:
- one type system bugfix for variance annotation on private types
- one memory concurrency safety fix for weak pointers
- two Windows fixes
Those fixes are complemented by:
- one runtime performance fix
- three tools and compiler-libs related fixes
- one error message fix.
The full list of fixes for this second beta is available below.
Overall, this beta release is already quite stable.
If the tests for this beta release go well, we are expecting to have a first release
candidate in the week of the 22 September, and the full release in the beginning
of October.
If you find any bugs, please report them on OCaml's issue tracker:
-https://github.com/ocaml/ocaml/issues
The last progresses on stabilising the ecosystem are still tracked on the
opam readiness for 5.4.0 meta-issue:
- https://github.com/ocaml/opam-repository/issues/27916
If you are interested in full list of features and bug fixes of the new OCaml
version, the updated change log for OCaml 5.4.0 is available on GitHub:
https://github.com/ocaml/ocaml/blob/5.4/Changes
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 and later:
opam update
opam switch create 5.4.0~beta2
The source code for the beta is also available at these addresses:
* GitHub; https://github.com/ocaml/ocaml/archive/5.4.0-beta2.tar.gz
* OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.0~beta2.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.5.4.0~beta2+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 5.4.0~beta2+flambda+nffa ocaml-variants.5.4.0~beta2+options ocaml-option-flambda ocaml-option-no-flat-float-array
All available options can be listed with `opam search ocaml-option`.
Changes since the first beta
----------------------------------------
* Type system fix
- #14200(https://github.com/ocaml/ocaml/issues/14200), [#14202](https://github.com/ocaml/ocaml/issues/14202) : bad variance check with private aliases
(Jacques Garrigue, report and review by Stephen Dolan)
* Windows fixes
- #13504, #13625, +#14223(https://github.com/ocaml/ocaml/issues/14223): Add `Thread.set_current_thread_name`.
(Romain Beauxis, review by Gabriel Scherer and Antonin Décimo)
- #13541(https://github.com/ocaml/ocaml/issues/13541), [#13777](https://github.com/ocaml/ocaml/issues/13777): Using C++11 `thread_local` causes name-mangling
issues when linking with flexlink on Cygwin.
(Antonin Décimo and David Allsopp, report by Kate Deplaix)
* Runtime fixes
- #14061(https://github.com/ocaml/ocaml/issues/14061), #14209(https://github.com/ocaml/ocaml/issues/14209): fix a memory-ordering bug in Weak.set that could
result in uninitialized memory seen by Weak.get on another domain.
(Damien Doligez, review by Gabriel Scherer)
- #14169(https://github.com/ocaml/ocaml/issues/14169): runtime, fix cache miss within the stack fragments cache
(Florian Angeletti, review by Gabriel Scherer)
* Tooling fixes
- #13302, +#14236(https://github.com/ocaml/ocaml/issues/14236): Store locations of longidents components
(Ulysse Gérard and Jules Aguillon, review by Jules Aguillon
and Florian Angeletti)
- #12642, #13536, +#14184(https://github.com/ocaml/ocaml/issues/14184), +[#14192](https://github.com/ocaml/ocaml/issues/14192): in the toplevel, print shorter paths for
constructors and labels when only some modules along their path are open.
(Gabriel Scherer, review by Florian Angeletti)
- #14196(https://github.com/ocaml/ocaml/issues/14196), #14197(https://github.com/ocaml/ocaml/issues/14197): ocamlprof: do not instrument unreachable clauses
(Gabriel Scherer, review by Nicolás Ojeda Bär, report by Ali Caglayan)
* Error messages
- #14214(https://github.com/ocaml/ocaml/issues/14214), #14221(https://github.com/ocaml/ocaml/issues/14221): fix a confused error message for module inclusions,
functor error messages were missing some type equalities potentially leading
to nonsensical "type t is not compatible with type t" submessage
(Florian Angeletti, report by Basile Clément, review by Gabriel Scherer)
[-- Attachment #2: Type: text/html, Size: 5957 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-09-11 12:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-27 12:38 [Caml-list] First alpha release of OCaml 5.4.0 Florian Angeletti
2025-07-25 9:09 ` [Caml-list] First beta " Florian Angeletti
2025-09-11 12:42 ` [Caml-list] Second " Florian Angeletti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox