Dear OCaml users, With the progress of the ongoing stabilisation effort for OCaml 5.5.0, I am happy to announce the third alpha release for OCaml 5.5.0. The missing second alpha was unreleased due to an unforeseen interaction between the relocatable compiler and bootstrapping. This issue is fixed in this third alpha. Beyond this important change, compared to the first alpha this new alpha release contains 2 code generation fixes, 3 type system fixes and one standard library fix (see the Changelog below for a full list). Thus, it looks like 5.5.0 is stabilizing quite well and we are planning to switch to a beta release in the beginning of April. More precisely, the ongoing progress on stabilising the ecosystem is tracked on the opam readiness for 5.5.0 meta-issue at: https://github.com/ocaml/opam-repository/issues/29463 There is also a companion alpha opam repository available for this alpha release opam repo add alpha git+https://github.com/kit-ty-kate/opam-alpha-repository.git which contains in-progress alpha releases of opam packages that are being updated for OCaml 5.5.0 . The final release is still planned for between May and June. If you find any bugs, please report them here: https://github.com/ocaml/ocaml/issues If you are interested by the full list of new features and bug fixes, the updated change log for OCaml 5.5.0 is available at: https://github.com/ocaml/ocaml/blob/5.5/Changes Happy hacking, Florian Angeletti for the OCaml team. Changes compared to the first alpha ----------------------------------------------- ## Compiler artefact fixes - More bootstrap-friendly relocatable compiler - A bootstrap to fix compiler-libs related issues reported by js_of_ocaml ## Code generation bug fixes - #14583(https://github.com/ocaml/ocaml/issues/14583): fix bug in linear scan spilling heuristic that in certain situations could lead to miscompilations. (Nicolás Ojeda Bär, review by Vincent Laviron) - #13693(https://github.com/ocaml/ocaml/issues/13693), #14514(https://github.com/ocaml/ocaml/issues/14514): s390x: fix heap corruption with libasmrun_shared.so caused by PLT lazy binding trampoline saving FPRs into OCaml's fiber stack. Replace @PLT calls with GOT-indirect calls in the s390x code emitter. (Zane Hambly, review by David Allsopp and Xavier Leroy) ## Type system bug fixes - #14434(https://github.com/ocaml/ocaml/issues/14434), #14652(https://github.com/ocaml/ocaml/issues/14652): Protect check_counter_example_pat against polymorphic types, restoring type soundness. (Stephen Dolan and Jacques Garrigue, report and review by Alistair O'Brien) - #14603(https://github.com/ocaml/ocaml/issues/14603), [#14604](https://github.com/ocaml/ocaml/issues/14604): avoid Ctype.apply failures when mixing polymorphic types and unboxed constructors. (Gabriel Scherer and Stefan Muenzel, report by Brandon Stride, review by Florian Angeletti) - #14626(https://github.com/ocaml/ocaml/issues/14626), [#14675](https://github.com/ocaml/ocaml/issues/14675): take in account module-dependent functions when determining if an optional argument is non-erasable. (Alistair O'Brien and Florian Angeletti, review by Gabriel Scherer) ## Standard library fix - #14635(https://github.com/ocaml/ocaml/issues/14635): Fix a bug in `caml_floatarray_gather` that would cause the result of `Float.Array.sub`, `Float.Array.append`, `Float.Array.concat` (when empty) not to be equal to `[||]`. (Marc Lasson, review by Gabriel Scherer) ## Documentation update - #13590(https://github.com/ocaml/ocaml/issues/13590): Document automatic command-line expansion of `*` and `?` wildcards by the runtime under Windows. (Benjamin Sigonneau, review by Nicolás Ojeda Bär)