OCaml releases 4.13.0 and 4.12.1

Florian Angeletti <[email protected]> Fri, 24 Sep 2021 20:25:51 +0200 (CEST)
Newsgroups gmane.comp.lang.caml.announce
Message-ID <[email protected]>
--=_ce9e6cc3-57b0-4aff-be59-fbf0570f4b8c
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Dear OCaml users,=20

We have the pleasure of celebrating the 175th anniversary of the discovery =
of Neptune=20
by announcing the joint releases of OCaml version 4.13.0 and 4.12.1.=20

Some of the highlights in the 4.13.0 release are:=20

- Safe points: a multicore prerequisite that ensures that ocamlopt-generate=
d code can always be interrupted.=20
- The best-fit GC allocation policy is now the default policy (and many oth=
er GC improvements).=20
- Named existential type variables in pattern matching: `Showable (type a) =
(x, show : a * (a -> string))`.=20

- Improved error messages for functor application and functor types.=20
- Let-punning for monadic let: `let* x =3D x in` can be shortened to `let* =
x in`.=20
- Module type substitutions `SIG with module type T =3D F(X).S`.=20

- Many other quality of life improvements=20
- Many bug fixes=20

The 4.12.1 release is a collection of safe bug fixes, cherry-picked from th=
e 4.13.0 development=20
cycle. If you were using OCaml 4.12.0 and cannot yet upgrade to 4.13.0, thi=
s release is for you.=20

The full list of changes can be found in the changelogs below.=20

Those releases are available as OPAM switches, and as a source download her=
e:=20

https://github.com/ocaml/ocaml/archive/4.13.0.tar.gz=20
https://caml.inria.fr/pub/distrib/ocaml-4.13/=20

and there:=20

https://github.com/ocaml/ocaml/archive/4.12.1.tar.gz=20
https://caml.inria.fr/pub/distrib/ocaml-4.12/=20


Happy hacking,=20

-- Florian Angeletti for the OCaml team.=20


OCaml 4.12.1 (24 September 2021)=20
------------------------------------------------=20

### Bug fixes:=20

- #10107: Ensure modules compiled with -afl-instrument can still link on=20
platforms without AFL support.=20
(David Allsopp, review by Xavier Leroy)=20

- #10294, #10295: fix an assert-failure in pattern-matching compilation=20
(Gabriel Scherer, review by Thomas Refis and Luc Maranget,=20
report by Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10310: configure's --enable-spacetime option now causes an error rather =
than=20
being silently ignored.=20
(David Allsopp, review by Gabriel Scherer)=20

- #10351: Fix DLL loading with binutils 2.36+ on mingw-w64=20
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10442, #10446: Fix regression in the toplevel to #directory caused by=20
corrections and improvements to the Load_path in #9611. #directory now=20
adds the path to the start of the load path again (so files in the newly=20
added directory take priority).=20
(David Allsopp, report by Vasile Rotaru, review by Florian Angeletti=20
and Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10449: Fix major GC work accounting (the GC was running too fast).=20
(Damien Doligez, report by Stephen Dolan, review by Nicol=C3=A1s Ojeda B=C3=
=A4r=20
and Sadiq Jaffer)=20

- #10478: Fix segfault under Windows due to a mistaken initialization of th=
read=20
ID when a thread starts.=20
(David Allsopp, Nicol=C3=A1s Ojeda B=C3=A4r, review by Xavier Leroy)=20

- #10626, #10628: Wrong reloading of the x86-64 instruction for=20
integer multiplication by a constant, causing the assembler to=20
reject the ocamlopt-generated code.=20
(Xavier Leroy, report by Dave Aitken, review by Vincent Laviron)=20


OCaml 4.13.0 (24 September 2021)=20
------------------------------------------------=20

### Progress towards Multicore:=20

- #10039: Safepoints=20
Add poll points to native generated code. These are effectively=20
zero-sized allocations and fix some signal and remembered set=20
issues. Also multicore prerequisite.=20
(Sadiq Jaffer, Stephen Dolan, Damien Doligez, Xavier Leroy,=20
Anmol Sahoo, Mark Shinwell, review by Damien Doligez, Xavier Leroy,=20
and Mark Shinwell)=20

- #9876: do not cache the young_limit GC variable in a processor register.=
=20
This affects the ARM64, PowerPC and RISC-V ports, making signal handling=20
and minor GC triggers more reliable, at the cost of a small slowdown.=20
(Xavier Leroy, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

### Language features (highlights):=20

- #9584, #7074: Allow to name existentials in pattern-matching=20
One can now write '(Cstr (type a) (x, y : int * a))' to give a name to=20
existentials freshly introduced by GADT constructors.=20
(Jacques Garrigue, review by Leo White and Gabriel Scherer)=20

### Compiler user-interface and warnings (highlights):=20

- #9331: Improve error messages for functor application and functor types.=
=20
(Florian Angeletti and Gabriel Radanne, review by Leo White)=20

* #10118, #10140: enable warning 6 [labels-omitted] by default.=20
The following now warns:=20
let f ~x y =3D ... in f 3 5=20
the callsite (f 3 5) has to be turned into (f ~x:3 5).=20
This prevents mistakes where two arguments of the same types are swapped.=
=20
(Note: Dune already enables this warning by default.)=20
(Gabriel Scherer, review by Xavier Leroy and Florian Angeletti,=20
report by ygrek)=20

### Manual and documentation (highlights):=20

- #10247: Add initial tranche of examples to reference manual.=20
Adds some eighty examples to the reference manual, principally to the=20
expressions and patterns sections.=20
https://ocaml.org/releases/4.13/manual/patterns.html=20
(John Whitington, review by Xavier Leroy, Gabriel Scherer, @Fourchaux, and=
=20
Florian Angeletti)=20

- #9987, #9988, #9996, #9997: add an odoc mode for the documentation=20
of the standard library and compiler library=20
(Florian Angeletti, review by David Allsopp, S=C3=A9bastien Hinderer,=20
and Gabriel Scherer)=20

### Standard library (highlights):=20

- #944: Add some missing C99 float operations. `Stdlib` now contains=20
the inverse hyperbolic functions=20
`acosh`, `asinh`, and `atanh`.=20
These functions were also added to module `Stdlib.Float` together with=20
`exp2`, `log2`, `cbrt`, `erf`, and `erfc`.=20
Full support on MSVC requires VS2013+ but emulated versions are=20
still available (for now) for older compilers.=20
(Markus Mottl, review by David Allsopp, Olivier Andrieu, Florian Angeletti,=
=20
Nicol=C3=A1s Ojeda B=C3=A4r, Daniel B=C3=BCnzli, Fabian @copy, Pascal Cuoq,=
 Damien=20
Doligez, S=C3=A9bastien Hinderer, Jacques-Henri Jourdan, Xavier Leroy, Guil=
laume=20
Melquiond, Perry E. Metzger, Runhang Li, Gabriel Scherer, Mark Shinwell,=20
Bernhard Schommer and Christophe Troestler)=20

- #9582: Add Array.{find_opt,find_map,split,combine}.=20
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BCnzli and Gabriel Sche=
rer)=20

- #9533: Added String.starts_with and String.ends_with.=20
(Bernhard Schommer, review by Daniel B=C3=BCnzli, Gabriel Scherer and=20
Alain Frisch)=20

### Code generation and optimizations (highlights):=20

- #10404: Add a generic backward dataflow analyzer and use it to speed up=
=20
liveness analysis=20
(Xavier Leroy, review by Gabriel Scherer, Greta Yorsh, Mark Shinwell)=20

- #10414: Avoid compilation times exponential in the nesting of loops=20
in the spilling and reloading passes=20
(Xavier Leroy, review by Vincent Laviron)=20

### Internal typechecker changes (highlights):=20

- #10170: Maintain more structural information in type-checking errors=20
A mostly-internal change that preserves more information in errors=20
during type checking; most significantly, it split the errors from=20
unification, moregen, and type equality into three different types.=20
(Antal Spector-Zabusky and Mekhrubon Tuarev, review by Leo White,=20
Florian Angeletti, and Jacques Garrigue)=20

- #9994: Make Types.type_expr a private type, and abstract marking mechanis=
m=20
(Jacques Garrigue and Takafumi Saikawa,=20
review by Gabriel Scherer and Leo White)=20

### Runtime system (highlights):=20

- #10188, #10213: Switch the default allocation policy to best-fit and adju=
st=20
the default overhead parameter accordingly.=20
(Damien Doligez, review by Josh Berdine and Xavier Leroy)=20

- #10549: Stack overflow detection and naked pointers checking for ARM64=20
(Xavier Leroy, review by Stephen Dolan)=20

- #9934: Optimise sweeping using prefetching.=20
(Stephen Dolan and Will Hasenplaugh, review by David Allsopp, Xavier=20
Leroy and Damien Doligez, benchmarking by Shubham Kumar and KC=20
Sivaramakrishnan)=20

- #10194: Change compaction-triggering heuristic: use the overhead measured=
=20
by the previous GC cycle instead of an indirect (and noisy) computation=20
of the current overhead.=20
(Damien Doligez, review by Stephen Dolan)=20

- #10449: Fix major GC work accounting (the GC was running too fast).=20
(Damien Doligez, report by Stephen Dolan, review by Nicol=C3=A1s Ojeda B=C3=
=A4r and=20
Sadiq Jaffer)=20


### Language features:=20

- #10013: Let-punning=20
Allow 'let* x in ...' and 'let%ext x in ...' as shorthand for=20
'let* x =3D x in ...' and 'let%ext x =3D x in ...' respectively.=20
(Stephen Dolan, review by Gabriel Scherer)=20

- #10133: module type substitutions=20
Allow 'SIG with module type T =3D F(X).S', 'SIG with module type T :=3D sig=
 end'=20
and their local equivalent `module type T :=3D sig type u end`=20
(Florian Angeletti, review by Gabriel Radanne and Leo White)=20

### Type system:=20

* #10081: Typecheck `x |> f` and `f @@ x` as `(f x)`=20
(Alain Frisch, review by Jacques Garrigue, Josh Berdine and Thomas Refis)=
=20

### Runtime system:=20

- #10318: Windows Unicode runtime functions are no longer marked as=20
experimental.=20
(Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp)=20

- #9284: Add -config option to display the configuration of ocamlrun on std=
out,=20
including the search path for shared stub libraries.=20
(David Allsopp, review by Xavier Leroy)=20

- #9919: Introduce caml_record_backtraces and update Interfacing with C to=
=20
refer to it (previous instruction to use caml_record_backtrace primitive wa=
s=20
not possible without defining CAML_INTERNALS)=20
(David Allsopp, review by Xavier Leroy)=20

- #10102: Ignore PROFINFO_WIDTH if WITH_PROFINFO is not defined (technicall=
y=20
a breaking change if the configuration system was being abused before).=20
(David Allsopp, review by Xavier Leroy)=20

- #10107: Ensure modules compiled with -afl-instrument can still link on=20
platforms without AFL support.=20
(David Allsopp, review by Xavier Leroy)=20

* #10098: Improve command-line parsing in ocamlrun: strictly recognise opti=
ons,=20
be more informative for `ocamlrun -I` and support `--` for terminating opti=
ons=20
parsing.=20
(David Allsopp, review by Xavier Leroy)=20

- #10101: Add -help/--help option to ocamlrun.=20
(David Allsopp, review by Xavier Leroy)=20

- #10136: Minor clean-ups in runtime/io.c and runtime/caml/io.h=20
(Xavier Leroy, review by David Allsopp and Guillaume Munch-Maccagnoni)=20

- #10171: Tweak the naked pointers checker so that processes which trigger =
the=20
alarm always exit with non-zero status (i.e. exit(0) becomes exit(70)).=20
(David Allsopp, review by Xavier Leroy)=20

- #10212: Simplify and improve the Windows-specific code that connects=20
to the debugger via a socket.=20
(Antonin D=C3=A9cimo, review by Xavier Leroy)=20

- #10217: Fix a segfault in a corner case of compaction (reported in #9853)=
=20
(Damien Doligez, report by Sadiq Jaffer, review by Stephen Dolan)=20

- #10250, #10266: Dynamically allocate alternate signal stacks to=20
accommodate changes in Glibc 2.34.=20
(Xavier Leroy, reports by Tomasz K=C5=82oczko and R.W.M. Jones, review by A=
nil=20
Madhavapeddy, Stephen Dolan, and Florian Angeletti)=20

### Code generation and optimizations:=20

- #1400: Add an optional invariants check on Cmm, which can be activated=20
with the -dcmm-invariants flag=20
(Vincent Laviron, with help from Sebastien Hinderer, review by Stephen Dola=
n=20
and David Allsopp)=20

- #9562, #367: Allow CSE of immutable loads across stores=20
(Stephen Dolan, review by Mark Shinwell)=20

- #9937: improvements in ARM64 code generation (constants, sign extensions)=
=20
(Xavier Leroy, review by Stephen Dolan)=20

- #10228: Better code-generation for inlined comparisons=20
(Stephen Dolan, review by Alain Frisch and Xavier Leroy)=20

- #10244: Optimise Int32.unsigned_to_int=20
(Fabian Hemmer, review by Stephen Dolan and Xavier Leroy)=20

- #10302, #10303: Fix incorrect instruction selection for string constant l=
oads=20
on ppc.=20
(David Allsopp, review by Stephen Dolan)=20

- #10349: Fix destroyed_at_c_call on RISC-V=20
(Mark Shinwell, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10419: Add %frame_pointers primitive which is true only in native code w=
ith=20
frame pointers mode enabled.=20
(David Allsopp, review by Vincent Laviron and Mark Shinwell)=20

### Standard library:=20

- #9448: Add String.{empty,cat} as dual of Bytes.{empty,cat},=20
String.{of,to}_bytes as aliases of Bytes.{to,of}_string,=20
Bytes.split_on_char as dual of String.split_on_char, and binary decoding=20
functions in String to match those in Bytes.=20
(David Allsopp, review by Damien Doligez, Gabriel Scherer and others)=20

- #9487, #9489: Add Random.full_int which allows 62-bit bounds on 64-bit=20
systems.=20
(David Allsopp, request by Francois Berenger, review by Xavier Leroy and=20
Damien Doligez)=20

- #9961: Add Array.fold_left_map.=20
(Craig Ferguson, review by Damien Doligez)=20

- #10097: Lazy.map, Lazy.map_val: ('a -> 'b) -> 'a Lazy.t -> 'b Lazy.t=20
(map f x) is always (lazy (f (force x))), whereas (map_val f x)=20
applies f directly if x is already forced.=20
(Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r, Alain Frisch, Xavi=
er Leroy,=20
Daniel B=C3=BCnzli and Stephen Dolan)=20

- #10242: Added convenience pretty printer for Either.t in the Format modul=
e.=20
(Oghenevwogaga Ebresafe, review by Nicol=C3=A1s Ojeda B=C3=A4r,=20
Gabriel Scherer and Xavier Van de Woestyne)=20

- #10352: Seq.(concat : 'a t t -> 'a t)=20
Seq.concat_map as an alias to Seq.flat_map,=20
(Gabriel Scherer, review by Ulugbek Abdullaev and Daniel B=C3=BCnzli=20
and Nicol=C3=A1s Ojeda B=C3=A4r and Florian Angeletti)=20

- #882: Add fold_left, fold_right, exists and for_all to String/Bytes=20
(Yotam Barnoy, review by Alain Frisch and Jeremy Yallop)=20

- #4070, #10398: small optimization of Stdlib.{frexp,modf}.=20
(Markus Mottl, Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer)=20

- #10389, #10391, #10392: Add {Int,Int32,Int64,Nativeint}.{min,max}.=20
(Nicol=C3=A1s Ojeda B=C3=A4r and Alain Frisch, review by Xavier Leroy)=20

- #10430: Add Format.print_bytes and Format.pp_print_bytes.=20
(Gabriel Radanne, review by Gabriel Scherer and David Allsopp)=20

### Other libraries:=20

* #10084: Unix.open_process_args* functions now look up the program in the =
PATH.=20
This was already the case under Windows, but this is now also done under=20
Unix. Note that previously the program was interpreted relative to the curr=
ent=20
directory.=20
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer and Xavier Leroy)=
=20

- #10047: Add `Unix.realpath`=20
(Daniel B=C3=BCnzli, review by David Allsopp, Josh Berdine and Gabriel Sche=
rer)=20

- #10184: Remove expensive debug assertion from dynlink.=20
(Leo White, review by David Allsopp and Xavier Leroy)=20

- #10185: Consider that IPv6 is always enabled on Windows.=20
(Antonin D=C3=A9cimo, review by David Allsopp and Xavier Leroy)=20

- #10306: Map WSA error code to Unix errno for sockopt and getsockname=20
functions (Antonin D=C3=A9cimo, review by David Allsopp)=20

- #10309: Properly return EBADF on error in Unix.descr_of_{in,out}_channel =
on=20
Win32 and map Windows error correctly in Unix.truncate and Unix.ftruncate o=
n=20
Win32.=20
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

### Tools:=20

- #10139: Adds a -nonavbar option to ocamldoc, to remove confusing=20
'Up', 'Previous' and 'Next' links=20
(John Whitington, review by David Allsopp)=20

- #8645, #10363: ocamldoc: escape `<`, `>`, and `&` in html backend.=20
(Florian Angeletti, report by Wim Lewis, review by Gabriel Scherer)=20

### Manual and documentation:=20

- #9525, #10402: document that ocamldoc only creates paragraphs=20
at the toplevel of documentation comments=20
(Florian Angeletti, report by Hendrik Tews, review by Gabriel Scherer)=20

- #10206: Split labels and polymorphic variants tutorials in two.=20
Moves the GADTs tutorial from the Language Extensions chapter=20
to the tutorials.=20
(John Whitington, review by Florian Angeletti and Xavier Leroy)=20

- #9786, #10181: improved documentation of Unix.{in,out}_channel_of_descr=
=20
with respect to closing.=20
(Xavier Leroy, report by Jacques-Henri Jourdan, review by Guillaume=20
Munch-Maccagnoni, Gabriel Scherer, Jacques-Henri Jourdan)=20

- #10139: Use the new -nonavbar option to improve navigation within=20
the reference manual stdlib documentation.=20
(John Whitington, review by David Allsopp)=20

- #1351: Document `-output-complete-obj` option in the manual.=20
(Fran=C3=A7ois Bobot, Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BC=
nzli and Damien=20
Doligez)=20

- #9632: Document incremental build solutions with opam=20
(Vincent Laviron, review by Daniel B=C3=BCnzli and Gabriel Scherer)=20

- #10497: Styling changes in the post-processed HTML manual (webman)=20
(Wiktor Kuchta, review by Florian Angeletti)=20

- #10605: manual, name few css classes to ease styling and maintainability.=
=20
(Florian Angeletti, review by Wiktor Kuchta and Gabriel Scherer)=20

### Compiler user-interface and warnings:=20

- #1737, #2092, #7852, #7859, #10405, #10417: Update locations during=20
destructive substitutions=20
(Thomas Refis, review by Gabriel Radanne, report by Hugo Heuzard)=20

- #2245: Improve error message for link order error in bytecode=20
(Pierre Chambart, review by J=C3=A9r=C3=A9mie Dimino and Gabriel Scherer)=
=20

- #8732, improved error messages for invalid private row type definitions.=
=20
For instance, [ type t =3D private [< `A > `A ] ] .=20
(Florian Angeletti, review by Jacques Garrigue, Thomas Refis,=20
and Gabriel Scherer)=20

- #9407: optional warning for missing mli interface file=20
(Anukriti Kumar, review by Florian Angeletti)=20

- #9960, #10619: extend ocamlc/ocamlopt's -o option to work when=20
compiling C files=20
(S=C3=A9bastien Hinderer, reported by Daniel B=C3=BCnzli, review by=20
Florian Angeletti and Gabriel Scherer)=20

- #10095: minor simplifications to some syntax error messages.=20
(Fran=C3=A7ois Pottier, review by Gabriel Scherer and Fr=C3=A9d=C3=A9ric Bo=
ur.)=20

- #10196, #10197: better error message on empty character literals ''.=20
(Gabriel Scherer, review by David Allsopp and Florian Angeletti=20
and Daniel B=C3=BCnzli, report by Robin Bj=C3=B6rklin)=20

- #8877: Call the linker when ocamlopt is invoked with .o and .a files only=
.=20
(Greta Yorsh, review by Leo White)=20

- #10207, #10312: deprecate consecutive letters in warning=20
specifications.=20
The form `-w aBcD` was equivalent to `-w -a+b-c+d`.=20
It is now deprecated to improve the coexistence with warning mnemonics.=20
However, using isolated single letter is not deprecated to allow the form=
=20
`-w "A-32..50-45"`.=20
(Florian Angeletti, review by Damien Doligez and Gabriel Scherer)=20

- #10232: Warning for unused record fields.=20
(Leo White, review by Florian Angeletti)=20

### Internal/compiler-libs changes:=20

- #9243, simplify parser rules for array indexing operations=20
(Florian Angeletti, review by Damien Doligez and Gabriel Scherer)=20

- #9650, #9651: keep refactoring the pattern-matching compiler=20
(Gabriel Scherer, review by Thomas Refis and Florian Angeletti)=20

- #9827: Replace references with functions arguments in Simplif=20
(Anukriti Kumar, review by Vincent Laviron and David Allsop)=20

- #10007: Driver.compile_common: when typing a .ml file, return the=20
compilation unit signature (inferred or from the .cmi) in addition=20
to the implementation and the coercion.=20
(Leandro Ostera, review by Gabriel Scherer and Thomas Refis)=20

- #10045: Add libext variable to ocamltest and enable C# tests on on mingw=
=20
(David Allsopp, review by Gabriel Scherer)=20

* #10061, #10078, #10187: remove library `ocamlopttoplevel`, remove modules=
=20
`Opttoploop`, `Opttopstart`, which are replaced by `Toploop` and `Topstart`=
 in=20
library `ocamltoplevel`, made available in native code.=20
(Louis Gesbert, review by Jeremie Dimino, Mark Shinwell and Gabriel Radanne=
)=20

- #10124: remove duplicated code from the native toplevel, split toplevel=
=20
implementation into the shared part (`Topcommon`, etc.) and specific ones=
=20
(`Topeval`, `Trace`, `Topmain`).=20
(Louis Gesbert, review by Jeremie Dimino and Gabriel Radanne)=20

- #10086: add the commands `make list-parse-errors` and `make=20
generate-parse-errors` to generate a set of syntactically incorrect=20
sentences that covers all error states of the LR automaton. Add these=20
sentences to the test suite. This can be used to evaluate the quality of th=
e=20
parser's syntax error messages and (in the future) to evaluate the impact o=
f=20
changes in the parser.=20
(Fran=C3=A7ois Pottier, review by Gabriel Scherer and Xavier Leroy.)=20

- #10090: Distinguished constructors for ref variables at lambda level=20
(Keryan Didier, review by Gabriel Scherer and Vincent Laviron)=20

- #10113: add a `-timeout` option to ocamltest and use it in the test suite=
.=20
(Xavier Leroy and Gabriel Scherer, review by S=C3=A9bastien Hinderer=20
and David Allsopp)=20

* #10169, #10270, #10301, #10451: Use capitalized module names in the Stand=
ard=20
Library prefixing scheme to match Dune, e.g. Stdlib__String instead of=20
Stdlib__string. This is a breaking change only to code which attempted to u=
se=20
the internal names before. The Standard Library generated by the Dune rules=
 is=20
now equivalent to the main build (the Dune rules still do not generate a=20
distributable compiler).=20
(David Allsopp and Mark Shinwell, review by Gabriel Scherer)=20

- #10327: Add a subdirectories variable and a copy action to ocamltest=20
(S=C3=A9bastien Hinderer, review by David Allsopp)=20

- #10358: Use a hash table for the load path.=20
(Leo White, review by Gabriel Scherer)=20

- #8936: Per-function environment for Emit=20
(Greta Yorsh, review by Vincent Laviron and Florian Angeletti)=20

- #10543: Fix Ast_mapper to apply the mapping function to the constants in=
=20
"interval" patterns `c1..c2`.=20
(Guillaume Petiot, review by Gabriel Scherer and Nicol=C3=A1s Ojeda B=C3=A4=
r)=20

### Internal typechecker changes:=20

- #10174: Make Tsubst more robust by avoiding strange workarounds=20
(Takafumi Saikawa and Jacques Garrigue, review by Gabriel Scherer and=20
Florian Angeletti)=20

- #10265: Move type_unboxed.unboxed into type_kind=20
(Stephen Dolan, review by Gabriel Scherer)=20

- #10307: Refactor type_description in the typing env=20
(Nicolas Chataing, review by Takafumi Saikawa, Florian Angeletti and Thomas=
=20
Refis)=20

- #10311: Separate the constraint-solving part of Typecore.type_pat into=20
specific solver functions.=20
(Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer)=20

- #10428: Make build_other_constrs work with names instead of tags.=20
(Nicolas Chataing, review by Florian Angeletti)=20

### Build system:=20

- #10332, #10333: Generate lambda/runtimedef.ml correctly in Swedish locale=
.=20
(the letter 'w' is not included in '[a-z]' in sv_SE.UTF-8)=20
(David Allsopp, report by Anders Jackson, review by Florian Angeletti and=
=20
Gabriel Scherer)=20

- #10289, #10406: Do not print option documentation in usage messages.=20
(Pavlo Khrystenko, review by Gabriel Scherer, fix by Kate Deplaix)=20

- #9191, #10091, #10182: take the LDFLAGS variable into account, except on=
=20
flexlink-using systems.=20
(Gabriel Scherer, review by S=C3=A9bastien Hinderer and David Allsopp,=20
report by Ralph Seichter)=20

- #10135: Overhaul the FlexDLL bootstrap process. It's now fully integrated=
=20
with the default build target and controlled by --with-flexdll which allows=
=20
externally downloaded sources for FlexDLL to be specified. A separate=20
non-shared version of the runtime is built, and shared artefacts are no lon=
ger=20
built twice. When bootstrapping, any flexlink in PATH is now ignored and th=
e=20
Cygwin port also supports bootstrapping FlexDLL. flexlink.opt is automatica=
lly=20
built and installed as part of opt.opt/world.opt.=20
(David Allsopp, review by S=C3=A9bastien Hinderer)=20

- #10156: configure script: fix sockets feature detection.=20
(Lucas Pluvinage, review by David Allsopp and Damien Doligez)=20

- #10176, #10632: By default, call the assembler through the C compiler dri=
ver=20
(S=C3=A9bastien Hinderer, review by Gabriel Scherer, David Allsopp and Xavi=
er=20
Leroy)=20

- #10186: configure wasn't using library link flags when searching for=20
network functions on systems where they're not in libc. Fix IPv6 and=20
socklen_t detection on Windows.=20
(Antonin D=C3=A9cimo, review by David Allsopp and S=C3=A9bastien Hinderer)=
=20

- #10366: Make it possible to use the OCAMLRUN variable to specify=20
which runtime to use while building the compilers (S=C3=A9bastien Hinderer,=
=20
review by David Allsopp)=20

- #10451, #10635: Replace the use of iconv with a C utility to convert $(LI=
BDIR)=20
to a C string constant on Windows when building the runtime. Hardens the=20
generation of the constant on Unix for paths with backslashes, double-quote=
s=20
and newlines.=20
(David Allsopp, review by Florian Angeletti and S=C3=A9bastien Hinderer)=20

- #10471: Fix detection of arm32 architectures with musl in configure.=20
(Louis Gesbert, review by David Allsopp)=20

### Bug fixes:=20

- #6654, #9774, #10401: make `include` and with `constraints` handle correc=
tly=20
the ghost components of signatures. For instance, in=20

include struct class c =3D object end end type c=20

the type `c` shadows the `class c` to avoid shadowing only the ghost type=
=20
c introduced by the class.=20
(Florian Angeletti, report by Eduardo Rafael, review by Gabriel Scherer)=20

- #6985, #10385: remove all ghost row types from included modules=20
(Florian Angeletti, review by Gabriel Scherer)=20

- #7453, #9828, #10416: fix #show for recursive types and modules=20
(Florian Angeletti, review by Gabriel Scherer)=20

* #7469, #10408: Sys.time now returns processor time on Windows (previously=
=20
returned wall-clock time)=20
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

* #8857, #10220: Don't clobber GetLastError() in caml_leave_blocking_sectio=
n=20
when the systhreads library is loaded.=20
(David Allsopp, report by Anton Bachin, review by Xavier Leroy)=20

- #8575, #10362: Surprising interaction between polymorphic variants and=20
constructor disambiguation.=20
(Jacques Garrigue, report and review by Thomas Refis)=20

- #8917, #8929, #9889, #10219: fix printing of nested recursive definitions=
=20
in presence of a name collision.=20
(Florian Angeletti, report by Thomas Refis, review by Gabriel Scherer)=20

- #10005: Try expanding aliases in Ctype.nondep_type_rec=20
(Stephen Dolan, review by Gabriel Scherer, Leo White and Xavier Leroy)=20

- #10072, #10085: Check that sizes and offsets in stack frame descriptors=
=20
do not overflow the 16-bit fields where they are stored.=20
(Xavier Leroy, report by Github user pveber, review by Gabriel Scherer)=20

- #10087, #10138: In the toplevel REPL, don't use the cache=20
of included directories, so that files created or deleted while=20
the REPL is running are correctly handled.=20
(Xavier Leroy, report by Github user quakerquickoats, review by=20
Jeremie Dimino)=20

- #10294, #10295: fix an assert-failure in pattern-matching compilation=20
(Gabriel Scherer, review by Thomas Refis and Luc Maranget,=20
report by Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10147, #10148: Fix building runtime with GCC on macOS.=20
(David Allsopp, report by John Skaller)=20

- #10166: Fix illegal permutation error reporting in module aliases.=20
(Matthew Ryan, review by Florian Angeletti)=20

- #10189, #10190, #10347: Universal variables leaking through GADT equation=
s=20
(Jacques Garrigue, report and review by Leo White)=20

- #10205: Avoid overwriting closures while initialising recursive modules=
=20
(Stephen Dolan, review by Xavier Leroy, Hugo Heuzard and Vincent Laviron)=
=20

- #10253, #10373: tweak error message for unknown variant constructors=20
or record fields in type-directed disambiguation=20
(Florian Angeletti, report by Hongbo Zhang, review by Gabriel Scherer)=20

* #10277, #10383: Need to detect ambiguity recursively inside types to=20
guarantee principality (affects only principal mode)=20
(Jacques Garrigue, review by Thomas Refis, Leo White and Kate Deplaix)=20

- #10283, #10284: Enforce right-to-left evaluation order for Lstaticraise=
=20
(Vincent Laviron, report by Github user Ngoguey42, review by Gabriel Schere=
r)=20

- #10298, #10305: Incorrect propagation of type equalities in functor=20
application=20
(Jacques Garrigue, report and review by Didier Remy)=20

- #10324, #10325: Prevent generation of Lsend(Cached, _) in bytecode=20
(Vincent Laviron, report by Yawar Amin and Nicol=C3=A1s Ojeda B=C3=A4r, rev=
iew by=20
Jacques Garrigue)=20

- #10338, #10340: Translcore.push_defaults does not respect scoping=20
(Jacques Garrigue, report and review by Stephen Dolan)=20

- #10351: Fix DLL loading with binutils 2.36+ on mingw-w64=20
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20

- #10339, #10354, #10387: Fix handling of exception-raising specific=20
operations during spilling and liveness analysis.=20
(This bug affects ARM and ARM64.)=20
In passing, refactor Proc.op_is_pure and Mach.operation_can_raise.=20
(Xavier Leroy, report by Richard Bornat, review by Stephen Dolan=20
and Mark Shinwell)=20

- #10371: no longer generatd useless `.cds` file when using=20
`-output-complete-exe`.=20
(Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp)=20

- #10376: Link runtime libraries correctly on msvc64 in -output-complete-ob=
j=20
(David Allsopp, review by Gabriel Scherer)=20

- #10380: Correct handling of UTF-8 paths in configure on Windows=20
(David Allsopp, review by S=C3=A9bastien Hinderer)=20

- #10450, #10558: keep %apply and %revapply primitives working with abstrac=
t=20
types. This breach of backward compatibility was only present in the alpha=
=20
releases of OCaml 4.13.0 .=20
(Florian Angeletti, review by Thomas Refis and Leo White)=20

- #10454: Check row_more in nondep_type_rec.=20
(Leo White, review by Thomas Refis)=20

- #10468: Correctly pretty print local type substitution, e.g. type t :=3D =
...,=20
with -dsource=20
(Matt Else, review by Florian Angeletti)=20

- #10461, #10498: `caml_send*` helper functions take derived pointers=20
as arguments. Those must be declared with type Addr instead of Val.=20
Moreover, poll point insertion must be disabled for `caml_send*`,=20
otherwise the derived pointer is live across a poll point.=20
(Vincent Laviron and Xavier Leroy, review by Xavier Leroy and Sadiq Jaffer)=
=20

- #10511: Cygwin ports now correctly configure when flexdll is not availabl=
e.=20
(David Allsopp, review by Florian Angeletti)=20

- #10550, #10551: fix pretty-print of gadt-pattern-with-type-vars=20
(Chet Murthy, review by Gabriel Scherer)=20

- #10584, #10856: Standard Library documentation build no longer fails if=
=20
optional libraries have been disabled.=20
(David Allsopp, report by Yuri Victorovich review by Florian Angeletti)=20

- #10593: Fix untyping of patterns without named existential quantifiers. T=
his=20
bug was only present in the beta version of OCaml 4.13.0.=20
(Ulysse G=C3=A9rard, review by Florian Angeletti)=20

- #10603, #10611: Fix if condition marked as inconstant in flambda=20
(Vincent Laviron and Pierre Chambart, report by Marcello Seri)=20

--=_ce9e6cc3-57b0-4aff-be59-fbf0570f4b8c
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"font-family: arial, helvetica, sans-serif; font-s=
ize: 12pt; color: #000000"><div><div>Dear OCaml users,<br><br>We have the p=
leasure of celebrating the 175th anniversary of the discovery of Neptune<br=
>by announcing the joint releases of OCaml version 4.13.0 and 4.12.1.<br><b=
r>Some of the highlights in the 4.13.0 release are:<br><br>- Safe points: a=
 multicore prerequisite that ensures that ocamlopt-generated code can alway=
s be interrupted.<br>- The best-fit GC allocation policy is now the default=
 policy (and many other GC improvements).<br>- Named existential type varia=
bles in pattern matching: `Showable (type a) (x, show : a * (a -&gt; string=
))`.<br><br>- Improved error messages for functor application and functor t=
ypes.<br>- Let-punning for monadic let: `let* x =3D x in` can be shortened =
to `let* x in`.<br>- Module type substitutions `SIG with module type T =3D =
F(X).S`.<br><br>- Many other quality of life improvements<br>- Many bug fix=
es<br><br>The 4.12.1 release is a collection of safe bug fixes, cherry-pick=
ed from the 4.13.0 development<br>cycle. If you were using OCaml 4.12.0 and=
 cannot yet upgrade to 4.13.0, this release is for you.<br><br>The full lis=
t of changes can be found in the changelogs below.<br><br>Those releases ar=
e available as OPAM switches, and as a source download here:<br><br>&nbsp; =
https://github.com/ocaml/ocaml/archive/4.13.0.tar.gz<br>&nbsp; https://caml=
.inria.fr/pub/distrib/ocaml-4.13/<br><br>and there:<br><br>&nbsp; https://g=
ithub.com/ocaml/ocaml/archive/4.12.1.tar.gz<br>&nbsp; https://caml.inria.fr=
/pub/distrib/ocaml-4.12/<br><br><br>Happy hacking,<br><br>-- Florian Angele=
tti for the OCaml team.<br><br><br>OCaml 4.12.1 (24 September 2021)<br>----=
--------------------------------------------<br><br>### Bug fixes:<br><br>-=
 #10107: Ensure modules compiled with -afl-instrument can still link on<br>=
&nbsp; platforms without AFL support.<br>&nbsp; (David Allsopp, review by X=
avier Leroy)<br><br>- #10294, #10295: fix an assert-failure in pattern-matc=
hing compilation<br>&nbsp; (Gabriel Scherer, review by Thomas Refis and Luc=
 Maranget,<br>&nbsp;&nbsp; report by Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>- =
#10310: configure's --enable-spacetime option now causes an error rather th=
an<br>&nbsp; being silently ignored.<br>&nbsp; (David Allsopp, review by Ga=
briel Scherer)<br><br>- #10351: Fix DLL loading with binutils 2.36+ on ming=
w-w64<br>&nbsp; (David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)<br><=
br>- #10442, #10446: Fix regression in the toplevel to #directory caused by=
<br>&nbsp; corrections and improvements to the Load_path in #9611. #directo=
ry now<br>&nbsp; adds the path to the start of the load path again (so file=
s in the newly<br>&nbsp; added directory take priority).<br>&nbsp; (David A=
llsopp, report by Vasile Rotaru, review by Florian Angeletti<br>&nbsp;&nbsp=
; and Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>- #10449: Fix major GC work accou=
nting (the GC was running too fast).<br>&nbsp; (Damien Doligez, report by S=
tephen Dolan, review by Nicol=C3=A1s Ojeda B=C3=A4r<br>&nbsp;&nbsp; and Sad=
iq Jaffer)<br><br>- #10478: Fix segfault under Windows due to a mistaken in=
itialization of thread<br>&nbsp; ID when a thread starts.<br>&nbsp; (David =
Allsopp, Nicol=C3=A1s Ojeda B=C3=A4r, review by Xavier Leroy)<br><br>- #106=
26, #10628: Wrong reloading of the x86-64 instruction for<br>&nbsp; integer=
 multiplication by a constant, causing the assembler to<br>&nbsp; reject th=
e ocamlopt-generated code.<br>&nbsp; (Xavier Leroy, report by Dave Aitken, =
review by Vincent Laviron)<br><br><br>OCaml 4.13.0 (24 September 2021)<br>-=
-----------------------------------------------<br><br>### Progress towards=
 Multicore:<br><br>- #10039: Safepoints<br>&nbsp; Add poll points to native=
 generated code. These are effectively<br>&nbsp; zero-sized allocations and=
 fix some signal and remembered set<br>&nbsp; issues. Also multicore prereq=
uisite.<br>&nbsp; (Sadiq Jaffer, Stephen Dolan, Damien Doligez, Xavier Lero=
y,<br>&nbsp;&nbsp; Anmol Sahoo, Mark Shinwell, review by Damien Doligez, Xa=
vier Leroy,<br>&nbsp;&nbsp; and Mark Shinwell)<br><br>- #9876: do not cache=
 the young_limit GC variable in a processor register.<br>&nbsp; This affect=
s the ARM64, PowerPC and RISC-V ports, making signal handling<br>&nbsp; and=
 minor GC triggers more reliable, at the cost of a small slowdown.<br>&nbsp=
; (Xavier Leroy, review by Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>### Language=
 features (highlights):<br><br>- #9584, #7074: Allow to name existentials i=
n pattern-matching<br>&nbsp; One can now write '(Cstr (type a) (x, y : int =
* a))' to give a name to<br>&nbsp; existentials freshly introduced by GADT =
constructors.<br>&nbsp; (Jacques Garrigue, review by Leo White and Gabriel =
Scherer)<br><br>### Compiler user-interface and warnings (highlights):<br><=
br>- #9331: Improve error messages for functor application and functor type=
s.<br>&nbsp; (Florian Angeletti and Gabriel Radanne, review by Leo White)<b=
r><br>* #10118, #10140: enable warning 6 [labels-omitted] by default.<br>&n=
bsp; The following now warns:<br>&nbsp;&nbsp;&nbsp; let f ~x y =3D ... in f=
 3 5<br>&nbsp; the callsite (f 3 5) has to be turned into (f ~x:3 5).<br>&n=
bsp; This prevents mistakes where two arguments of the same types are swapp=
ed.<br>&nbsp; (Note: Dune already enables this warning by default.)<br>&nbs=
p; (Gabriel Scherer, review by Xavier Leroy and Florian Angeletti,<br>&nbsp=
;&nbsp; report by ygrek)<br><br>### Manual and documentation (highlights):<=
br><br>- #10247: Add initial tranche of examples to reference manual.<br>&n=
bsp; Adds some eighty examples to the reference manual, principally to the<=
br>&nbsp; expressions and patterns sections.<br>&nbsp; https://ocaml.org/re=
leases/4.13/manual/patterns.html<br>&nbsp; (John Whitington, review by Xavi=
er Leroy, Gabriel Scherer, @Fourchaux, and<br>&nbsp; Florian Angeletti)<br>=
<br>- #9987, #9988, #9996, #9997: add an odoc mode for the documentation<br=
>&nbsp; of the standard library and compiler library<br>&nbsp; (Florian Ang=
eletti, review by David Allsopp, S=C3=A9bastien Hinderer,<br>&nbsp;&nbsp; a=
nd Gabriel Scherer)<br><br>### Standard library (highlights):<br><br>- #944=
: Add some missing C99 float operations.&nbsp; `Stdlib` now contains<br>&nb=
sp; the inverse hyperbolic functions<br>&nbsp;&nbsp;&nbsp; `acosh`, `asinh`=
, and `atanh`.<br>&nbsp; These functions were also added to module `Stdlib.=
Float` together with<br>&nbsp;&nbsp;&nbsp; `exp2`, `log2`, `cbrt`, `erf`, a=
nd `erfc`.<br>&nbsp; Full support on MSVC requires VS2013+ but emulated ver=
sions are<br>&nbsp; still available (for now) for older compilers.<br>&nbsp=
; (Markus Mottl, review by David Allsopp, Olivier Andrieu, Florian Angelett=
i,<br>&nbsp; Nicol=C3=A1s Ojeda B=C3=A4r, Daniel B=C3=BCnzli, Fabian @copy,=
 Pascal Cuoq, Damien<br>&nbsp; Doligez, S=C3=A9bastien Hinderer, Jacques-He=
nri Jourdan, Xavier Leroy, Guillaume<br>&nbsp; Melquiond, Perry E. Metzger,=
 Runhang Li, Gabriel Scherer, Mark Shinwell,<br>&nbsp; Bernhard Schommer an=
d Christophe Troestler)<br><br>- #9582: Add Array.{find_opt,find_map,split,=
combine}.<br>&nbsp; (Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BCn=
zli and Gabriel Scherer)<br><br>- #9533: Added String.starts_with and Strin=
g.ends_with.<br>&nbsp; (Bernhard Schommer, review by Daniel B=C3=BCnzli, Ga=
briel Scherer and<br>&nbsp; Alain Frisch)<br><br>### Code generation and op=
timizations (highlights):<br><br>- #10404: Add a generic backward dataflow =
analyzer and use it to speed up<br>&nbsp; liveness analysis<br>&nbsp; (Xavi=
er Leroy, review by Gabriel Scherer, Greta Yorsh, Mark Shinwell)<br><br>- #=
10414: Avoid compilation times exponential in the nesting of loops<br>&nbsp=
; in the spilling and reloading passes<br>&nbsp; (Xavier Leroy, review by V=
incent Laviron)<br><br>### Internal typechecker changes (highlights):<br><b=
r>- #10170: Maintain more structural information in type-checking errors<br=
>&nbsp; A mostly-internal change that preserves more information in errors<=
br>&nbsp; during type checking; most significantly, it split the errors fro=
m<br>&nbsp; unification, moregen, and type equality into three different ty=
pes.<br>&nbsp; (Antal Spector-Zabusky and Mekhrubon Tuarev, review by Leo W=
hite,<br>&nbsp; Florian Angeletti, and Jacques Garrigue)<br><br>- #9994: Ma=
ke Types.type_expr a private type, and abstract marking mechanism<br>&nbsp;=
 (Jacques Garrigue and Takafumi Saikawa,<br>&nbsp;&nbsp; review by Gabriel =
Scherer and Leo White)<br><br>### Runtime system (highlights):<br><br>- #10=
188, #10213: Switch the default allocation policy to best-fit and adjust<br=
>&nbsp; the default overhead parameter accordingly.<br>&nbsp; (Damien Dolig=
ez, review by Josh Berdine and Xavier Leroy)<br><br>- #10549: Stack overflo=
w detection and naked pointers checking for ARM64<br>&nbsp; (Xavier Leroy, =
review by Stephen Dolan)<br><br>- #9934: Optimise sweeping using prefetchin=
g.<br>&nbsp; (Stephen Dolan and Will Hasenplaugh, review by David Allsopp, =
Xavier<br>&nbsp;&nbsp; Leroy and Damien Doligez, benchmarking by Shubham Ku=
mar and KC<br>&nbsp;&nbsp; Sivaramakrishnan)<br><br>- #10194: Change compac=
tion-triggering heuristic: use the overhead measured<br>&nbsp; by the previ=
ous GC cycle instead of an indirect (and noisy) computation<br>&nbsp; of th=
e current overhead.<br>&nbsp; (Damien Doligez, review by Stephen Dolan)<br>=
<br>- #10449: Fix major GC work accounting (the GC was running too fast).<b=
r>&nbsp; (Damien Doligez, report by Stephen Dolan, review by Nicol=C3=A1s O=
jeda B=C3=A4r and<br>&nbsp;&nbsp; Sadiq Jaffer)<br><br><br>### Language fea=
tures:<br><br>- #10013: Let-punning<br>&nbsp; Allow 'let* x in ...' and 'le=
t%ext x in ...' as shorthand for<br>&nbsp;&nbsp;&nbsp; 'let* x =3D x in ...=
' and 'let%ext x =3D x in ...' respectively.<br>&nbsp; (Stephen Dolan, revi=
ew by Gabriel Scherer)<br><br>- #10133: module type substitutions<br>&nbsp;=
 Allow 'SIG with module type T =3D F(X).S', 'SIG with module type T :=3D si=
g end'<br>&nbsp; and their local equivalent `module type T :=3D sig type u =
end`<br>&nbsp; (Florian Angeletti, review by Gabriel Radanne and Leo White)=
<br><br>### Type system:<br><br>* #10081: Typecheck `x |&gt; f` and `f @@ x=
` as `(f x)`<br>&nbsp; (Alain Frisch, review by Jacques Garrigue, Josh Berd=
ine and Thomas Refis)<br><br>### Runtime system:<br><br>- #10318: Windows U=
nicode runtime functions are no longer marked as<br>&nbsp; experimental.<br=
>&nbsp; (Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp)<br><br>- #92=
84: Add -config option to display the configuration of ocamlrun on stdout,<=
br>&nbsp; including the search path for shared stub libraries.<br>&nbsp; (D=
avid Allsopp, review by Xavier Leroy)<br><br>- #9919: Introduce caml_record=
_backtraces and update Interfacing with C to<br>&nbsp; refer to it (previou=
s instruction to use caml_record_backtrace primitive was<br>&nbsp; not poss=
ible without defining CAML_INTERNALS)<br>&nbsp; (David Allsopp, review by X=
avier Leroy)<br><br>- #10102: Ignore PROFINFO_WIDTH if WITH_PROFINFO is not=
 defined (technically<br>&nbsp; a breaking change if the configuration syst=
em was being abused before).<br>&nbsp; (David Allsopp, review by Xavier Ler=
oy)<br><br>- #10107: Ensure modules compiled with -afl-instrument can still=
 link on<br>&nbsp; platforms without AFL support.<br>&nbsp; (David Allsopp,=
 review by Xavier Leroy)<br><br>* #10098: Improve command-line parsing in o=
camlrun: strictly recognise options,<br>&nbsp; be more informative for `oca=
mlrun -I` and support `--` for terminating options<br>&nbsp; parsing.<br>&n=
bsp; (David Allsopp, review by Xavier Leroy)<br><br>- #10101: Add -help/--h=
elp option to ocamlrun.<br>&nbsp; (David Allsopp, review by Xavier Leroy)<b=
r><br>- #10136: Minor clean-ups in runtime/io.c and runtime/caml/io.h<br>&n=
bsp; (Xavier Leroy, review by David Allsopp and Guillaume Munch-Maccagnoni)=
<br><br>- #10171: Tweak the naked pointers checker so that processes which =
trigger the<br>&nbsp; alarm always exit with non-zero status (i.e. exit(0) =
becomes exit(70)).<br>&nbsp; (David Allsopp, review by Xavier Leroy)<br><br=
>- #10212: Simplify and improve the Windows-specific code that connects<br>=
&nbsp; to the debugger via a socket.<br>&nbsp; (Antonin D=C3=A9cimo, review=
 by Xavier Leroy)<br><br>- #10217: Fix a segfault in a corner case of compa=
ction (reported in #9853)<br>&nbsp; (Damien Doligez, report by Sadiq Jaffer=
, review by Stephen Dolan)<br><br>- #10250, #10266: Dynamically allocate al=
ternate signal stacks to<br>&nbsp;&nbsp; accommodate changes in Glibc 2.34.=
<br>&nbsp; (Xavier Leroy, reports by Tomasz K=C5=82oczko and R.W.M. Jones, =
review by Anil<br>&nbsp;&nbsp; Madhavapeddy, Stephen Dolan, and Florian Ang=
eletti)<br><br>### Code generation and optimizations:<br><br>- #1400: Add a=
n optional invariants check on Cmm, which can be activated<br>&nbsp; with t=
he -dcmm-invariants flag<br>&nbsp; (Vincent Laviron, with help from Sebasti=
en Hinderer, review by Stephen Dolan<br>&nbsp;&nbsp; and David Allsopp)<br>=
<br>- #9562, #367: Allow CSE of immutable loads across stores<br>&nbsp; (St=
ephen Dolan, review by Mark Shinwell)<br><br>- #9937: improvements in ARM64=
 code generation (constants, sign extensions)<br>&nbsp; (Xavier Leroy, revi=
ew by Stephen Dolan)<br><br>- #10228: Better code-generation for inlined co=
mparisons<br>&nbsp; (Stephen Dolan, review by Alain Frisch and Xavier Leroy=
)<br><br>- #10244: Optimise Int32.unsigned_to_int<br>&nbsp; (Fabian Hemmer,=
 review by Stephen Dolan and Xavier Leroy)<br><br>- #10302, #10303: Fix inc=
orrect instruction selection for string constant loads<br>&nbsp; on ppc.<br=
>&nbsp; (David Allsopp, review by Stephen Dolan)<br><br>- #10349: Fix destr=
oyed_at_c_call on RISC-V<br>&nbsp; (Mark Shinwell, review by Nicol=C3=A1s O=
jeda B=C3=A4r)<br><br>- #10419: Add %frame_pointers primitive which is true=
 only in native code with<br>&nbsp; frame pointers mode enabled.<br>&nbsp; =
(David Allsopp, review by Vincent Laviron and Mark Shinwell)<br><br>### Sta=
ndard library:<br><br>- #9448: Add String.{empty,cat} as dual of Bytes.{emp=
ty,cat},<br>&nbsp; String.{of,to}_bytes as aliases of Bytes.{to,of}_string,=
<br>&nbsp; Bytes.split_on_char as dual of String.split_on_char, and binary =
decoding<br>&nbsp; functions in String to match those in Bytes.<br>&nbsp; (=
David Allsopp, review by Damien Doligez, Gabriel Scherer and others)<br><br=
>- #9487, #9489: Add Random.full_int which allows 62-bit bounds on 64-bit<b=
r>&nbsp; systems.<br>&nbsp; (David Allsopp, request by Francois Berenger, r=
eview by Xavier Leroy and<br>&nbsp;&nbsp; Damien Doligez)<br><br>- #9961: A=
dd Array.fold_left_map.<br>&nbsp; (Craig Ferguson, review by Damien Doligez=
)<br><br>- #10097: Lazy.map, Lazy.map_val: ('a -&gt; 'b) -&gt; 'a Lazy.t -&=
gt; 'b Lazy.t<br>&nbsp; (map f x) is always (lazy (f (force x))), whereas (=
map_val f x)<br>&nbsp; applies f directly if x is already forced.<br>&nbsp;=
 (Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r, Alain Frisch, Xav=
ier Leroy,<br>&nbsp;&nbsp; Daniel B=C3=BCnzli and Stephen Dolan)<br><br>- #=
10242: Added convenience pretty printer for Either.t in the Format module.<=
br>&nbsp; (Oghenevwogaga Ebresafe, review by Nicol=C3=A1s Ojeda B=C3=A4r,<b=
r>&nbsp; Gabriel Scherer and Xavier Van de Woestyne)<br><br>- #10352: Seq.(=
concat : 'a t t -&gt; 'a t)<br>&nbsp; Seq.concat_map as an alias to Seq.fla=
t_map,<br>&nbsp; (Gabriel Scherer, review by Ulugbek Abdullaev and Daniel B=
=C3=BCnzli<br>&nbsp;&nbsp; and Nicol=C3=A1s Ojeda B=C3=A4r and Florian Ange=
letti)<br><br>- #882: Add fold_left, fold_right, exists and for_all to Stri=
ng/Bytes<br>&nbsp; (Yotam Barnoy, review by Alain Frisch and Jeremy Yallop)=
<br><br>- #4070, #10398: small optimization of Stdlib.{frexp,modf}.<br>&nbs=
p; (Markus Mottl, Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer)<b=
r><br>- #10389, #10391, #10392: Add {Int,Int32,Int64,Nativeint}.{min,max}.<=
br>&nbsp; (Nicol=C3=A1s Ojeda B=C3=A4r and Alain Frisch, review by Xavier L=
eroy)<br><br>- #10430: Add Format.print_bytes and Format.pp_print_bytes.<br=
>&nbsp; (Gabriel Radanne, review by Gabriel Scherer and David Allsopp)<br><=
br>### Other libraries:<br><br>* #10084: Unix.open_process_args* functions =
now look up the program in the PATH.<br>&nbsp; This was already the case un=
der Windows, but this is now also done under<br>&nbsp; Unix. Note that prev=
iously the program was interpreted relative to the current<br>&nbsp; direct=
ory.<br>&nbsp; (Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer and =
Xavier Leroy)<br><br>- #10047: Add `Unix.realpath`<br>&nbsp; (Daniel B=C3=
=BCnzli, review by David Allsopp, Josh Berdine and Gabriel Scherer)<br><br>=
- #10184: Remove expensive debug assertion from dynlink.<br>&nbsp; (Leo Whi=
te, review by David Allsopp and Xavier Leroy)<br><br>- #10185: Consider tha=
t IPv6 is always enabled on Windows.<br>&nbsp; (Antonin D=C3=A9cimo, review=
 by David Allsopp and Xavier Leroy)<br><br>- #10306: Map WSA error code to =
Unix errno for sockopt and getsockname<br>&nbsp; functions (Antonin D=C3=A9=
cimo, review by David Allsopp)<br><br>- #10309: Properly return EBADF on er=
ror in Unix.descr_of_{in,out}_channel on<br>&nbsp; Win32 and map Windows er=
ror correctly in Unix.truncate and Unix.ftruncate on<br>&nbsp; Win32.<br>&n=
bsp; (David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>### Tool=
s:<br><br>- #10139: Adds a -nonavbar option to ocamldoc, to remove confusin=
g<br>&nbsp; 'Up', 'Previous' and 'Next' links<br>&nbsp; (John Whitington, r=
eview by David Allsopp)<br><br>- #8645, #10363: ocamldoc: escape `&lt;`, `&=
gt;`, and `&amp;` in html backend.<br>&nbsp; (Florian Angeletti, report by =
Wim Lewis, review by Gabriel Scherer)<br><br>### Manual and documentation:<=
br><br>- #9525, #10402: document that ocamldoc only creates paragraphs<br>&=
nbsp; at the toplevel of documentation comments<br>&nbsp; (Florian Angelett=
i, report by Hendrik Tews, review by Gabriel Scherer)<br><br>- #10206: Spli=
t labels and polymorphic variants tutorials in two.<br>&nbsp; Moves the GAD=
Ts tutorial from the Language Extensions chapter<br>&nbsp; to the tutorials=
.<br>&nbsp; (John Whitington, review by Florian Angeletti and Xavier Leroy)=
<br><br>- #9786, #10181: improved documentation of Unix.{in,out}_channel_of=
_descr<br>&nbsp; with respect to closing.<br>&nbsp; (Xavier Leroy, report b=
y Jacques-Henri Jourdan, review by Guillaume<br>&nbsp;&nbsp; Munch-Maccagno=
ni, Gabriel Scherer, Jacques-Henri Jourdan)<br><br>- #10139: Use the new -n=
onavbar option to improve navigation within<br>&nbsp; the reference manual =
stdlib documentation.<br>&nbsp; (John Whitington, review by David Allsopp)<=
br><br>- #1351: Document `-output-complete-obj` option in the manual.<br>&n=
bsp; (Fran=C3=A7ois Bobot, Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=
=C3=BCnzli and Damien<br>&nbsp; Doligez)<br><br>- #9632: Document increment=
al build solutions with opam<br>&nbsp; (Vincent Laviron, review by Daniel B=
=C3=BCnzli and Gabriel Scherer)<br><br>- #10497: Styling changes in the pos=
t-processed HTML manual (webman)<br>&nbsp; (Wiktor Kuchta, review by Floria=
n Angeletti)<br><br>- #10605: manual, name few css classes to ease styling =
and maintainability.<br>&nbsp; (Florian Angeletti, review by Wiktor Kuchta =
and Gabriel Scherer)<br><br>### Compiler user-interface and warnings:<br><b=
r>- #1737, #2092, #7852, #7859, #10405, #10417: Update locations during<br>=
&nbsp; destructive substitutions<br>&nbsp; (Thomas Refis, review by Gabriel=
 Radanne, report by Hugo Heuzard)<br><br>- #2245: Improve error message for=
 link order error in bytecode<br>&nbsp; (Pierre Chambart, review by J=C3=A9=
r=C3=A9mie Dimino and Gabriel Scherer)<br><br>- #8732, improved error messa=
ges for invalid private row type definitions.<br>&nbsp; For instance, [ typ=
e t =3D private [&lt; `A &gt; `A ] ] .<br>&nbsp; (Florian Angeletti, review=
 by Jacques Garrigue, Thomas Refis,<br>&nbsp;&nbsp; and Gabriel Scherer)<br=
><br>- #9407: optional warning for missing mli interface file<br>&nbsp; (An=
ukriti Kumar, review by Florian Angeletti)<br><br>- #9960, #10619: extend o=
camlc/ocamlopt's -o option to work when<br>&nbsp; compiling C files<br>&nbs=
p; (S=C3=A9bastien Hinderer, reported by Daniel B=C3=BCnzli, review by<br>&=
nbsp; Florian Angeletti and Gabriel Scherer)<br><br>- #10095: minor simplif=
ications to some syntax error messages.<br>&nbsp; (Fran=C3=A7ois Pottier, r=
eview by Gabriel Scherer and Fr=C3=A9d=C3=A9ric Bour.)<br><br>- #10196, #10=
197: better error message on empty character literals ''.<br>&nbsp; (Gabrie=
l Scherer, review by David Allsopp and Florian Angeletti<br>&nbsp;&nbsp; an=
d Daniel B=C3=BCnzli, report by Robin Bj=C3=B6rklin)<br><br>- #8877: Call t=
he linker when ocamlopt is invoked with .o and .a files only.<br>&nbsp; (Gr=
eta Yorsh, review by Leo White)<br><br>- #10207, #10312: deprecate consecut=
ive letters in warning<br>&nbsp; specifications.<br>&nbsp; The form `-w aBc=
D` was equivalent to `-w -a+b-c+d`.<br>&nbsp; It is now deprecated to impro=
ve the coexistence with warning mnemonics.<br>&nbsp; However, using isolate=
d single letter is not deprecated to allow the form<br>&nbsp; `-w "A-32..50=
-45"`.<br>&nbsp; (Florian Angeletti, review by Damien Doligez and Gabriel S=
cherer)<br><br>- #10232: Warning for unused record fields.<br>&nbsp; (Leo W=
hite, review by Florian Angeletti)<br><br>### Internal/compiler-libs change=
s:<br><br>- #9243, simplify parser rules for array indexing operations<br>&=
nbsp; (Florian Angeletti, review by Damien Doligez and Gabriel Scherer)<br>=
<br>- #9650, #9651: keep refactoring the pattern-matching compiler<br>&nbsp=
; (Gabriel Scherer, review by Thomas Refis and Florian Angeletti)<br><br>- =
#9827: Replace references with functions arguments in Simplif<br>&nbsp; (An=
ukriti Kumar, review by Vincent Laviron and David Allsop)<br><br>- #10007: =
Driver.compile_common: when typing a .ml file, return the<br>&nbsp; compila=
tion unit signature (inferred or from the .cmi) in addition<br>&nbsp; to th=
e implementation and the coercion.<br>&nbsp; (Leandro Ostera, review by Gab=
riel Scherer and Thomas Refis)<br><br>- #10045: Add libext variable to ocam=
ltest and enable C# tests on on mingw<br>&nbsp; (David Allsopp, review by G=
abriel Scherer)<br><br>* #10061, #10078, #10187: remove library `ocamloptto=
plevel`, remove modules<br>&nbsp; `Opttoploop`, `Opttopstart`, which are re=
placed by `Toploop` and `Topstart` in<br>&nbsp; library `ocamltoplevel`, ma=
de available in native code.<br>&nbsp; (Louis Gesbert, review by Jeremie Di=
mino, Mark Shinwell and Gabriel Radanne)<br><br>- #10124: remove duplicated=
 code from the native toplevel, split toplevel<br>&nbsp; implementation int=
o the shared part (`Topcommon`, etc.) and specific ones<br>&nbsp; (`Topeval=
`, `Trace`, `Topmain`).<br>&nbsp; (Louis Gesbert, review by Jeremie Dimino =
and Gabriel Radanne)<br><br>- #10086: add the commands `make list-parse-err=
ors` and `make<br>&nbsp; generate-parse-errors` to generate a set of syntac=
tically incorrect<br>&nbsp; sentences that covers all error states of the L=
R automaton. Add these<br>&nbsp; sentences to the test suite. This can be u=
sed to evaluate the quality of the<br>&nbsp; parser's syntax error messages=
 and (in the future) to evaluate the impact of<br>&nbsp; changes in the par=
ser.<br>&nbsp; (Fran=C3=A7ois Pottier, review by Gabriel Scherer and Xavier=
 Leroy.)<br><br>- #10090: Distinguished constructors for ref variables at l=
ambda level<br>&nbsp; (Keryan Didier, review by Gabriel Scherer and Vincent=
 Laviron)<br><br>- #10113: add a `-timeout` option to ocamltest and use it =
in the test suite.<br>&nbsp; (Xavier Leroy and Gabriel Scherer, review by S=
=C3=A9bastien Hinderer<br>&nbsp;&nbsp; and David Allsopp)<br><br>* #10169, =
#10270, #10301, #10451: Use capitalized module names in the Standard<br>&nb=
sp; Library prefixing scheme to match Dune, e.g. Stdlib__String instead of<=
br>&nbsp; Stdlib__string. This is a breaking change only to code which atte=
mpted to use<br>&nbsp; the internal names before. The Standard Library gene=
rated by the Dune rules is<br>&nbsp; now equivalent to the main build (the =
Dune rules still do not generate a<br>&nbsp; distributable compiler).<br>&n=
bsp; (David Allsopp and Mark Shinwell, review by Gabriel Scherer)<br><br>- =
#10327: Add a subdirectories variable and a copy action to ocamltest<br>&nb=
sp; (S=C3=A9bastien Hinderer, review by David Allsopp)<br><br>- #10358: Use=
 a hash table for the load path.<br>&nbsp; (Leo White, review by Gabriel Sc=
herer)<br><br>- #8936: Per-function environment for Emit<br>&nbsp; (Greta Y=
orsh, review by Vincent Laviron and Florian Angeletti)<br><br>- #10543: Fix=
 Ast_mapper to apply the mapping function to the constants in<br>&nbsp; "in=
terval" patterns `c1..c2`.<br>&nbsp; (Guillaume Petiot, review by Gabriel S=
cherer and Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>### Internal typechecker cha=
nges:<br><br>- #10174: Make Tsubst more robust by avoiding strange workarou=
nds<br>&nbsp; (Takafumi Saikawa and Jacques Garrigue, review by Gabriel Sch=
erer and<br>&nbsp;&nbsp; Florian Angeletti)<br><br>- #10265: Move type_unbo=
xed.unboxed into type_kind<br>&nbsp; (Stephen Dolan, review by Gabriel Sche=
rer)<br><br>- #10307: Refactor type_description in the typing env<br>&nbsp;=
 (Nicolas Chataing, review by Takafumi Saikawa, Florian Angeletti and Thoma=
s<br>&nbsp;&nbsp; Refis)<br><br>- #10311: Separate the constraint-solving p=
art of Typecore.type_pat into<br>&nbsp; specific solver functions.<br>&nbsp=
; (Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer)<br><br=
>- #10428: Make build_other_constrs work with names instead of tags.<br>&nb=
sp; (Nicolas Chataing, review by Florian Angeletti)<br><br>### Build system=
:<br><br>- #10332, #10333: Generate lambda/runtimedef.ml correctly in Swedi=
sh locale.<br>&nbsp; (the letter 'w' is not included in '[a-z]' in sv_SE.UT=
F-8)<br>&nbsp; (David Allsopp, report by Anders Jackson, review by Florian =
Angeletti and<br>&nbsp;&nbsp; Gabriel Scherer)<br><br>- #10289, #10406: Do =
not print option documentation in usage messages.<br>&nbsp;&nbsp;&nbsp; (Pa=
vlo Khrystenko, review by Gabriel Scherer, fix by Kate Deplaix)<br><br>- #9=
191, #10091, #10182: take the LDFLAGS variable into account, except on<br>&=
nbsp; flexlink-using systems.<br>&nbsp; (Gabriel Scherer, review by S=C3=A9=
bastien Hinderer and David Allsopp,<br>&nbsp;&nbsp; report by Ralph Seichte=
r)<br><br>- #10135: Overhaul the FlexDLL bootstrap process. It's now fully =
integrated<br>&nbsp; with the default build target and controlled by --with=
-flexdll which allows<br>&nbsp; externally downloaded sources for FlexDLL t=
o be specified. A separate<br>&nbsp; non-shared version of the runtime is b=
uilt, and shared artefacts are no longer<br>&nbsp; built twice. When bootst=
rapping, any flexlink in PATH is now ignored and the<br>&nbsp; Cygwin port =
also supports bootstrapping FlexDLL. flexlink.opt is automatically<br>&nbsp=
; built and installed as part of opt.opt/world.opt.<br>&nbsp; (David Allsop=
p, review by S=C3=A9bastien Hinderer)<br><br>- #10156: configure script: fi=
x sockets feature detection.<br>&nbsp; (Lucas Pluvinage, review by David Al=
lsopp and Damien Doligez)<br><br>- #10176, #10632: By default, call the ass=
embler through the C compiler driver<br>&nbsp; (S=C3=A9bastien Hinderer, re=
view by Gabriel Scherer, David Allsopp and Xavier<br>&nbsp; Leroy)<br><br>-=
 #10186: configure wasn't using library link flags when searching for<br>&n=
bsp; network functions on systems where they're not in libc. Fix IPv6 and<b=
r>&nbsp; socklen_t detection on Windows.<br>&nbsp; (Antonin D=C3=A9cimo, re=
view by David Allsopp and S=C3=A9bastien Hinderer)<br><br>- #10366: Make it=
 possible to use the OCAMLRUN variable to specify<br>&nbsp; which runtime t=
o use while building the compilers (S=C3=A9bastien Hinderer,<br>&nbsp; revi=
ew by David Allsopp)<br><br>- #10451, #10635: Replace the use of iconv with=
 a C utility to convert $(LIBDIR)<br>&nbsp; to a C string constant on Windo=
ws when building the runtime. Hardens the<br>&nbsp; generation of the const=
ant on Unix for paths with backslashes, double-quotes<br>&nbsp; and newline=
s.<br>&nbsp; (David Allsopp, review by Florian Angeletti and S=C3=A9bastien=
 Hinderer)<br><br>- #10471: Fix detection of arm32 architectures with musl =
in configure.<br>&nbsp; (Louis Gesbert, review by David Allsopp)<br><br>###=
 Bug fixes:<br><br>- #6654, #9774, #10401: make `include` and with `constra=
ints` handle correctly<br>&nbsp; the ghost components of signatures. For in=
stance, in<br><br>&nbsp;&nbsp;&nbsp; include struct class c =3D object end =
end type c<br><br>&nbsp;&nbsp; the type `c` shadows the `class c` to avoid =
shadowing only the ghost type<br>&nbsp;&nbsp; c introduced by the class.<br=
>&nbsp; (Florian Angeletti, report by Eduardo Rafael, review by Gabriel Sch=
erer)<br><br>- #6985, #10385: remove all ghost row types from included modu=
les<br>&nbsp; (Florian Angeletti, review by Gabriel Scherer)<br><br>- #7453=
, #9828, #10416: fix #show for recursive types and modules<br>&nbsp; (Flori=
an Angeletti, review by Gabriel Scherer)<br><br>* #7469, #10408: Sys.time n=
ow returns processor time on Windows (previously<br>&nbsp; returned wall-cl=
ock time)<br>&nbsp; (David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)<=
br><br>* #8857, #10220: Don't clobber GetLastError() in caml_leave_blocking=
_section<br>&nbsp; when the systhreads library is loaded.<br>&nbsp; (David =
Allsopp, report by Anton Bachin, review by Xavier Leroy)<br><br>- #8575, #1=
0362: Surprising interaction between polymorphic variants and<br>&nbsp; con=
structor disambiguation.<br>&nbsp; (Jacques Garrigue, report and review by =
Thomas Refis)<br><br>- #8917, #8929, #9889, #10219: fix printing of nested =
recursive definitions<br>&nbsp; in presence of a name collision.<br>&nbsp; =
(Florian Angeletti, report by Thomas Refis, review by Gabriel Scherer)<br><=
br>- #10005: Try expanding aliases in Ctype.nondep_type_rec<br>&nbsp; (Step=
hen Dolan, review by Gabriel Scherer, Leo White and Xavier Leroy)<br><br>- =
#10072, #10085: Check that sizes and offsets in stack frame descriptors<br>=
&nbsp; do not overflow the 16-bit fields where they are stored.<br>&nbsp; (=
Xavier Leroy, report by Github user pveber, review by Gabriel Scherer)<br><=
br>- #10087, #10138: In the toplevel REPL, don't use the cache<br>&nbsp; of=
 included directories, so that files created or deleted while<br>&nbsp; the=
 REPL is running are correctly handled.<br>&nbsp; (Xavier Leroy, report by =
Github user quakerquickoats, review by<br>&nbsp;&nbsp; Jeremie Dimino)<br><=
br>- #10294, #10295: fix an assert-failure in pattern-matching compilation<=
br>&nbsp; (Gabriel Scherer, review by Thomas Refis and Luc Maranget,<br>&nb=
sp;&nbsp; report by Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>- #10147, #10148: F=
ix building runtime with GCC on macOS.<br>&nbsp; (David Allsopp, report by =
John Skaller)<br><br>- #10166: Fix illegal permutation error reporting in m=
odule aliases.<br>&nbsp; (Matthew Ryan, review by Florian Angeletti)<br><br=
>- #10189, #10190, #10347: Universal variables leaking through GADT equatio=
ns<br>&nbsp; (Jacques Garrigue, report and review by Leo White)<br><br>- #1=
0205: Avoid overwriting closures while initialising recursive modules<br>&n=
bsp; (Stephen Dolan, review by Xavier Leroy, Hugo Heuzard and Vincent Lavir=
on)<br><br>- #10253, #10373: tweak error message for unknown variant constr=
uctors<br>&nbsp; or record fields in type-directed disambiguation<br>&nbsp;=
 (Florian Angeletti, report by Hongbo Zhang, review by Gabriel Scherer)<br>=
<br>* #10277, #10383: Need to detect ambiguity recursively inside types to<=
br>&nbsp; guarantee principality (affects only principal mode)<br>&nbsp; (J=
acques Garrigue, review by Thomas Refis, Leo White and Kate Deplaix)<br><br=
>- #10283, #10284: Enforce right-to-left evaluation order for Lstaticraise<=
br>&nbsp; (Vincent Laviron, report by Github user Ngoguey42, review by Gabr=
iel Scherer)<br><br>- #10298, #10305: Incorrect propagation of type equalit=
ies in functor<br>&nbsp; application<br>&nbsp; (Jacques Garrigue, report an=
d review by Didier Remy)<br><br>- #10324, #10325: Prevent generation of Lse=
nd(Cached, _) in bytecode<br>&nbsp; (Vincent Laviron, report by Yawar Amin =
and Nicol=C3=A1s Ojeda B=C3=A4r, review by<br>&nbsp;&nbsp; Jacques Garrigue=
)<br><br>- #10338, #10340: Translcore.push_defaults does not respect scopin=
g<br>&nbsp; (Jacques Garrigue, report and review by Stephen Dolan)<br><br>-=
 #10351: Fix DLL loading with binutils 2.36+ on mingw-w64<br>&nbsp; (David =
Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)<br><br>- #10339, #10354, #1=
0387: Fix handling of exception-raising specific<br>&nbsp; operations durin=
g spilling and liveness analysis.<br>&nbsp; (This bug affects ARM and ARM64=
.)<br>&nbsp; In passing, refactor Proc.op_is_pure and Mach.operation_can_ra=
ise.<br>&nbsp; (Xavier Leroy, report by Richard Bornat, review by Stephen D=
olan<br>&nbsp;&nbsp; and Mark Shinwell)<br><br>- #10371: no longer generatd=
 useless `.cds` file when using<br>&nbsp; `-output-complete-exe`.<br>&nbsp;=
 (Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp)<br><br>- #10376: Li=
nk runtime libraries correctly on msvc64 in -output-complete-obj<br>&nbsp; =
(David Allsopp, review by Gabriel Scherer)<br><br>- #10380: Correct handlin=
g of UTF-8 paths in configure on Windows<br>&nbsp; (David Allsopp, review b=
y S=C3=A9bastien Hinderer)<br><br>- #10450, #10558: keep %apply and %revapp=
ly primitives working with abstract<br>&nbsp; types. This breach of backwar=
d compatibility was only present in the alpha<br>&nbsp; releases of OCaml 4=
.13.0 .<br>&nbsp; (Florian Angeletti, review by Thomas Refis and Leo White)=
<br><br>- #10454: Check row_more in nondep_type_rec.<br>&nbsp; (Leo White, =
review by Thomas Refis)<br><br>- #10468: Correctly pretty print local type =
substitution, e.g. type t :=3D ...,<br>&nbsp; with -dsource<br>&nbsp; (Matt=
 Else, review by Florian Angeletti)<br><br>- #10461, #10498: `caml_send*` h=
elper functions take derived pointers<br>&nbsp; as arguments.&nbsp; Those m=
ust be declared with type Addr instead of Val.<br>&nbsp; Moreover, poll poi=
nt insertion must be disabled for `caml_send*`,<br>&nbsp; otherwise the der=
ived pointer is live across a poll point.<br>&nbsp; (Vincent Laviron and Xa=
vier Leroy, review by Xavier Leroy and Sadiq Jaffer)<br><br>- #10511: Cygwi=
n ports now correctly configure when flexdll is not available.<br>&nbsp; (D=
avid Allsopp, review by Florian Angeletti)<br><br>- #10550, #10551: fix pre=
tty-print of gadt-pattern-with-type-vars<br>&nbsp; (Chet Murthy, review by =
Gabriel Scherer)<br><br>- #10584, #10856: Standard Library documentation bu=
ild no longer fails if<br>&nbsp; optional libraries have been disabled.<br>=
&nbsp; (David Allsopp, report by Yuri Victorovich review by Florian Angelet=
ti)<br><br>- #10593: Fix untyping of patterns without named existential qua=
ntifiers. This<br>&nbsp; bug was only present in the beta version of OCaml =
4.13.0.<br>&nbsp; (Ulysse G=C3=A9rard, review by Florian Angeletti)<br><br>=
- #10603, #10611: Fix if condition marked as inconstant in flambda<br>&nbsp=
; (Vincent Laviron and Pierre Chambart, report by Marcello Seri)<br></div><=
/div></div></body></html>
--=_ce9e6cc3-57b0-4aff-be59-fbf0570f4b8c--