OCaml 4.14.0, second release candidate

The release of OCaml 4.14.0 is imminent.
As a last test that everything is in order, we are publishing a second release
candidate for OCaml 4.14.0.

We are directly jumping to the second release candidate due to a
type system regression discovered during the release process of the first
release candidate.

Compared to the last beta, this release candidate includes a regression fix when
typing recursive constraints, two backend fixes (one for the frame-pointer mode
and the other one for the RISC-V architecture), one configuration fix
for musl/arm64, and the manual chapter for the TMC transformation.

If you find any bugs, please report them here:

Issues · ocaml/ocaml · GitHub

The full release of OCaml 4.14.0 is currently planned for next week.

Installation instructions

The base compiler can be installed as an opam switch with the following commands

opam update
opam switch create 4.14.0~rc2 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git

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> --packages=ocaml-variants.4.14.0~rc2+options,<option_list> --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git

where <option_list> is a comma separated list of ocaml-option-* packages. For instance, for a flambda and no-flat-float-array switch:

opam switch create 4.14.0~rc2+flambda+nffa --packages=ocaml-variants.4.14.0~rc2+options,ocaml-option-flambda,ocaml-option-no-flat-float-array --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git

All available options can be listed with opam search ocaml-option.

The source code for the release candidate is also available at these addresses:


Changes since the last beta

Type system regression fix

  • #11101, #11109: A recursive type constraint fails on 4.14
    (Jacques Garrigue, report and review by Florian Angeletti)

Backend fixes

  • #10688: Move frame descriptor table from rodata to data section on
    RISC-V. Improves support for building DLLs and PIEs. In particular, this
    applies to all binaries in distributions that build PIEs by default (eg
    Gentoo and Alpine).
    (Alex Fan, review by Gabriel Scherer)

  • #11031: Exception handlers restore the rbp register when using frame-pointers
    on amd64.
    (Fabrice Buoro, with help from Stephen Dolan, Tom Kelly and Mark Shinwell,
    review by Xavier Leroy)

Configuration fix

  • #11025, #11036: Do not pass -no-pie to the C compiler on musl/arm64
    (omni, Kate Deplaix and Antonio Nuno Monteiro, review by Xavier Leroy)


  • [updated entry] #181, #9760, +#10740: opt-in tail-modulo-cons (TMC) transformation
    let[@tail_mod_cons] rec map f li = …
    (Frédéric Bour, Gabriel Scherer, Basile Clément,
    review by Basile Clément and Pierre Chambart,
    tested by Konstantin Romanov)