First release candidate for OCaml 5.5.0

The release of OCaml 5.5.0 is imminent.

As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week.

If you find any bugs, please report them on the OCaml’s issue tracker.

Compared to the first beta, this release candidate contains two runtime fixes, two standard library fixes, six miscellaneous fixes and one documentation update.

The full change log for OCaml 5.5.0 is available on GitHub.

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.5.0~rc1

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

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.5.0~rc1+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.5.0~rc1+flambda+nffa ocaml-variants.5.5.0~rc1+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 release

Runtime fixes

  • #14820: caml_ba_alloc must account for memory it allocated itself.
    CAML_BA_SUBARRAY (introduced in 5.2) with data=NULL would result in the
    Gc accounting for the allocation as 0 bytes, which can eventually lead
    to OOM. This condition never occurs in the compiler itself, but occurs
    in external C bindings that attempt to create a new bigarray in the
    shape of an existing one. For backwards compatibility ignore CAML_BA_SUBARRAY
    when data is NULL.
    (Edwin Török, review by Damien Doligez)

  • …, +#14722: runtime, fix in the orphaning of ephemerons
    (Gabriel Scherer, review by Olivier Nicole and Damien Doligez,
    report by Jan Midtgaard)

Standard library fix

  • #14853, CVE-2026-41083,
    OSEC-2026-05: fix quoting of filenames passed
    to Filename.quote_command on Windows.
    (David Allsopp, report by Andrew Nesbitt, review by Florian Angeletti)

  • …, +#14715: Use POSIX thread-safe getgrnam_r, getgrgid_r,
    getpwnam_r, getpwuid_r, gmtime_r, localtime_r, getlogin_r, and fix mktime
    error checking.
    (Antonin Décimo, review by Florian Angeletti, David Allsopp, Stefan Muenzel,
    Gabriel Scherer, and Miod Vallat)

Compiler user-interface fix

  • #14702: Fix hidden directory files leaking into the visible load path table.
    When a hidden directory contained a file whose basename was already present,
    the file could be incorrectly added to the visible table.
    (Hugo Heuzard, review by Florian Angeletti)

Compilerlibs fix

  • #14797: avoid dropping attributes attached to package types when pretty
    printing in surface syntax.
    (Chet Murthy, review by Nicolás Ojeda Bär)

Configuration fixes

  • #14484: Set _WIN32_WINNT to require Windows 8/Server 2012 Windows header SDK
    support.
    (Antonin Décimo, review by David Allsopp)

  • #14760, #14802, #14846: Correct the detection of argument defaults in
    configure, fixing an incorrect error message when installing OCaml through
    opam on OpenSUSE with the site-config package installed.
    (David Allsopp, report and review by Edwin Török)

Documentation fix

  • #14684, #14782, #14838: Improve ocamlc’s and ocamlopt’s manual pages and fix
    small issues in the manual
    (Samuel Hym, review by Florian Angeletti, Antonin Décimo, Gabriel Scherer and
    Nicolás Ojeda Bär)

Internal fix

  • …, +#14550: Add the not-root builtin ocamltest action. This
    allows to skip tests that fail if the current user is root (superuser).
    (Kate Deplaix, review by Gabriel Scherer, Nicolás Ojeda Bär, and
    Antonin Décimo)

There’s a TODO: that probably needs to be removed ocaml/Changes at 5.5 · ocaml/ocaml · GitHub