Dear OCaml users,

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 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:

  https://github.com/ocaml/ocaml/issues

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

Happy hacking,
Florian Angeletti for the OCaml team.

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:

 https://github.com/ocaml/ocaml/archive/4.14.0-rc2.tar.gz
 https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.0~rc2.tar.gz


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)

### Documentation

+ #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)