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)