OCaml release 4.14.0

Florian Angeletti <[email protected]> Mon, 28 Mar 2022 19:09:34 +0200 (CEST)
Newsgroups gmane.comp.lang.caml.announce
Message-ID <[email protected]>
--=_cc06ea44-ea88-4155-bf2b-2855b7200f62
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Dear OCaml users,=20

We have the pleasure of celebrating the birthday of Alexander Grothendieck =
by=20
announcing the release of OCaml version 4.14.0.=20

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

- Integrated support for "go to definitions" in Merlin.=20
- Standard library: new modules `In_channel` and `Out_channel`,=20
many new functions in Seq module, UTF decoding and validation support=20
for strings and bytes.=20
- Runtime optimisation: GC prefetching. Benchmarks show a speedup of around=
 20%=20
in GC-heavy programs.=20
- Improved error messages in particular for module-level errors.=20
- Deprecated functions and modules in preparation for OCaml 5.=20
In particular, the Stream and Genlex modules are now deprecated.=20
- Type variables can be explicitly introduced in value and variant construc=
tor=20
declarations. For instance,=20

val fold: ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc=20
type showable =3D Show: 'a * ('a -> string) -> showable=20

can now be written as=20

val fold: 'acc 'elt. ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc=20
type showable =3D Show: 'a. 'a * ('a -> string) -> showable=20

- Tail-call with up to 64 arguments are now guaranteed to be optimized=20
for all architectures.=20
- Experimental tail modulo cons (TMC) transformation=20


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

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

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


Happy hacking,=20

-- Florian Angeletti for the OCaml team.=20

OCaml 4.14.0 changes (28 March 2022)=20
----------------------------------------------------=20

### Language features (highlights):=20

- #10437: Allow explicit binders for type variables.=20
(Stephen Dolan, review by Leo White)=20

- #181, #9760, #10740: opt-in tail-modulo-cons (TMC) transformation=20
let[@tail_mod_cons] rec map f li =3D ...=20
(Fr=E9d=E9ric Bour, Gabriel Scherer, Basile Cl=E9ment,=20
review by Basile Cl=E9ment and Pierre Chambart,=20
tested by Konstantin Romanov)=20

### Runtime system (highlights):=20

- #10195, #10680: Speed up GC by prefetching during marking=20
(Stephen Dolan, review by Xavier Leroy, Guillaume Munch-Maccagnoni,=20
Jacques-Henri Jourdan, Damien Doligez and Leo White)=20

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

- #10595: Tail calls with up to 64 arguments are guaranteed to be compiled=
=20
as tail calls. To this end, memory locations in the domain state=20
are used for passing arguments that do not fit in registers.=20
(Xavier Leroy, review by Vincent Laviron)=20

### Standard library (highlights):=20

* #10710: Add UTF tools, codecs and validations to the Uchar, Bytes and=20
String modules.=20
(Daniel B=FCnzli, review by Florian Angeletti, Nicol=E1s Ojeda B=E4r, Alain=
=20
Frisch and Gabriel Scherer)=20

* #10482: mark the Stream and Genlex modules as deprecated, in preparation=
=20
for a future removal. These modules (without deprecation alert)=20
are now provided by the camlp-streams library.=20
(Xavier Leroy, review by Nicol=E1s Ojeda B=E4r)=20

- #10545: Add In_channel and Out_channel modules.=20
(Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, Simon Cruanes, Gabriel S=
cherer,=20
Guillaume Munch-Maccagnoni, Alain Frisch and Xavier Leroy)=20

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

- #10328, #10780: Give more precise error when disambiguation could not=20
possibly work.=20
(Leo White, review by Gabriel Scherer and Florian Angeletti)=20

- #10361: Improve error messages for mismatched record and variant=20
definitions.=20
(Florian Angeletti, review by Gabriel Radanne and Gabriel Scherer)=20

- #10407: Produce more detailed error messages that contain full error trac=
es=20
when module inclusion fails.=20
(Antal Spector-Zabusky, review by Florian Angeletti)=20

### Internal/compiler-libs changes (highlights):=20

- #10718, #11012: Add "Shape" information to the cmt files. Shapes are an=
=20
abstraction of modules that can be used by external tooling to perform=20
definition-aware operations.=20
(Ulysse G=E9rard, Thomas Refis and Leo White, review by Florian Angeletti)=
=20


### Language features:=20

- #10462: Add attribute to produce a compiler error for polls.=20
(Sadiq Jaffer, review by Mark Shinwell, Stephen Dolan=20
and Guillaume Munch-Maccagnoni)=20

- #10441: Remove unnecessary parentheses surrounding immediate objects.=20
Allow 'object ... end # f', 'f object ... end', etc.=20
(Yan Dong, review by Nicol=E1s Ojeda B=E4r, Florian Angeletti and Gabriel S=
cherer)=20

### Runtime system:=20

* #9391, #9424: Fix failed assertion in runtime due to ephemerons *set_* an=
d=20
*blit_* function during Mark phase=20
(Fran=E7ois Bobot, reported by Stephen Dolan, reviewed by Damien Doligez)=
=20

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

* #10675, #10937: Emit deprecation warnings when old C runtime function nam=
es=20
are used. This will break C stub code that uses these old names and=20
treats warnings as errors. The workaround is to use the new names.=20
(Xavier Leroy and David Allsopp, review by S=E9bastien Hinderer and=20
Damien Doligez)=20

- #10698, #10726, #10891: Free the alternate signal stack when the main OCa=
ml=20
code or an OCaml thread stops=20
(Xavier Leroy, review by David Allsopp and Damien Doligez)=20

- #10730, 10731: Fix bug in `Obj.reachable_words` causing a slowdown when c=
alled=20
multiple time (Alain Frisch, report by ygrek, review by Xavier Leroy)=20

### Code generation and optimizations:=20

- #10578: Increase the number of integer registers used for=20
parameter passing on PowerPC (16 registers) and on s390x (8 registers).=20
(Xavier Leroy, review by Mark Shinwell)=20

- #10591, #10615: Tune the heuristic for CSE of integer constants=20
so as to avoid excessive CSE on compiler-generated constants=20
and long register allocation times.=20
(Xavier Leroy, report by Edwin T=F6r=F6k, review by Nicol=E1s Ojeda B=E4r)=
=20

- #10681: Enforce boolean conditions for the native backend=20
(Vincent Laviron, review by Gabriel Scherer)=20

- #10719: Ensure that build_apply respects Lambda.max_arity=20
(Stephen Dolan, review by Xavier Leroy)=20

- #10728: Ensure that functions are evaluated after their arguments=20
(Stephen Dolan, review by Mark Shinwell)=20

- #10732: Ensure right-to-left evaluation of arguments in cmm_helpers=20
(Greta Yorsh, review by Xavier Leroy)=20

### Standard library:=20

* #10622: Annotate `Uchar.t` with immediate attribute=20
(Hongbo Zhang, reivew by Gabriel Scherer and Nicol=E1s Ojeda B=E4r)=20

* #7812, #10475: `Filename.chop_suffix name suff` now checks that `suff`=20
is actually a suffix of `name` and raises Invalid_argument otherwise.=20
(Xavier Leroy, report by whitequark, review by David Allsopp)=20

- #10526: add Random.bits32, Random.bits64, Random.nativebits=20
(Xavier Leroy, review by Gabriel Scherer and Fran=E7ois Bobot)=20

* #10568: remove Obj.marshal and Obj.unmarshal=20
(these functions have been deprecated for a while and are superseded=20
by the functions from module Marshal)=20
(Fran=E7ois Pottier, review by Gabriel Scherer and Kate Deplaix)=20

- #10538: add Out_channel.set_buffered and Out_channel.is_buffered to contr=
ol=20
the buffering mode of output channels.=20
(Nicol=E1s Ojeda B=E4r, review by John Whitington, Daniel B=FCnzli, David A=
llsopp=20
and Xavier Leroy)=20

* #10583, #10998: Add over 40 new functions in Seq.=20
(Fran=E7ois Pottier and Simon Cruanes, review by Nicol=E1s Ojeda B=E4r,=20
Daniel B=FCnzli, Na=EBla Courant, Craig Ferguson, Wiktor Kuchta,=20
Xavier Leroy, Guillaume Munch-Maccagnoni, Rapha=EBl Proust, Gabriel Scherer=
=20
and Thierry Martinez)=20

- #10596, #10978: Add with_open_bin, with_open_text and with_open_gen to=20
In_channel and Out_channel. Also, add In_channel.input_all.=20
(Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, J=E9r=E9mie Dimino, Dami=
en Doligez=20
and Xavier Leroy)=20

- #10658: add detailed information about the current version of OCaml=20
to the Sys module of the standard library.=20
(S=E9bastien Hinderer, review by Damien Doligez, Gabriel Scherer, David=20
Allsopp, Nicol=E1s Ojeda B=E4r, Vincent Laviron)=20

- #10642: On Windows, Sys.remove and Unix.unlink now remove symlinks=20
to directories instead of raising EACCES. Introduce=20
caml/winsupport.h to hold more common code between the runtime,=20
lib-sys, and win32unix.=20
(Antonin D=E9cimo, review by David Allsopp and Xavier Leroy)=20

- #10737: add new ephemeron API for forward compatibility with Multicore=20
OCaml.=20
(Damien Doligez, review by Stephen Dolan)=20

* #10922: Add deprecation warnings on {Int32,Int64,Nativeint}.format.=20
(Nicol=E1s Ojeda B=E4r, review by Xavier Leroy and Florian Angeletti)=20

### Other libraries:=20

- #10192: Add support for Unix domain sockets on Windows and use them=20
to emulate Unix.socketpair (only available on Windows 1803+)=20
(Antonin D=E9cimo, review by David Allsopp)=20

- #10469: Add Thread.set_uncaught_exception_handler and=20
Thread.default_uncaught_exception_handler.=20
(Enguerrand Decorne, review by David Allsopp)=20

- #10697: Bindings of dup and dup2 in win32unix now correctly call=20
WSADuplicateSocket on sockets instead of DuplicateHandle.=20
(Antonin D=E9cimo, review by Xavier Leroy and Nicol=E1s Ojeda B=E4r)=20

- #10951: Introduce the Thread.Exit exception as an alternative way to=20
terminate threads prematurely. This alternative way will become=20
the standard way in 5.00.=20
(Xavier Leroy, review by Florian Angeletti)=20

### Tools:=20

- #10839: Fix regression of #show when printing class type=20
(=C9lie Brami, review by Florian Angeletti)=20

- #3959, #7202, #10476: ocaml, in script mode, directive errors=20
(`#use "missing_file";;`) use stderr and exit with an error.=20
(Florian Angeletti, review by Gabriel Scherer)=20

- #10438: add a new toplevel cli argument `-e <script>` to=20
run script passed to the toplevel.=20
(Pavlo Khrystenko, review by Gabriel Scherer)=20

- #10524: Directive argument type error now shows expected and received typ=
e.=20
(Wiktor Kuchta, review by Gabriel Scherer)=20

- #10560: Disable colors if the env variable `NO_COLOR` is set. If=20
`OCAML_COLOR` is set, its setting takes precedence over `NO_COLOR`.=20
(Nicol=E1s Ojeda B=E4r, report by Gabriel Scherer, review by Daniel B=FCnzl=
i,=20
Gabriel Scherer and David Allsopp)=20

- #10565: Toplevel value printing: truncate strings only after 8 bytes.=20
(Wiktor Kuchta, review by Xavier Leroy)=20

- #10527: Show "#help;; for help" at toplevel startup=20
(Wiktor Kuchta, review by David Allsopp and Florian Angeletti)=20

- #10846: add the `-shape` command-line option to ocamlobjinfo. When readin=
g a=20
`cmt` file, shape information will only be shown if that option is used.=20
(Ulysse G=E9rard, review by Florian Angeletti)=20

### Debugging:=20

- #10517, #10594: when running ocamldebug on a program linked with the=20
threads library, don't fail immediately; instead, allow debugging=20
until the program creates a thread for the first time, then fail cleanly.=
=20
(Xavier Leroy, report by @anentropic, review by Gabriel Scherer)=20

- #9621: Pack the ocamldebug modules to minimize clashes=20
(Raphael Sousa Santos, review by Vincent Laviron and Gabriel Scherer)=20

### Manual and documentation:=20

- #7812, #10475: reworded the description of the behaviors of=20
float->int conversions in case of overflow, and of iterators=20
in case of concurrent modifications.=20
(Xavier Leroy, report by whitequark, review by David Allsopp)=20

- #8697, #10666: add M, m, n options of the OCAMLRUNPARAM to manual and man=
 page=20
for ocamlrun command line options=20
(Dong An and Anukriti Kumar, review by David Allsopp, Gabriel Scherer=20
and Damien Doligez)=20

- #10281, #10685: Add description of C compiler on macOS and Windows platfo=
rms.=20
(Dong An, review by Xavier Leroy and David Allsopp)=20

- #10397: Document exceptions raised by Unix module functions on Windows=20
(Martin Jambon, review by Daniel B=FCnzli, David Alsopp, Damien Doligez,=20
Xavier Leroy, and Florian Angeletti)=20

- #10589: Fix many typos (excess/inconsistent spaces) in the HTML manual.=
=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

- #10668, #10669: the changelog (this file), LICENSE and README files are n=
ow=20
installed as part of the distribution. The destination directory can be=20
customized using the `--docdir` argument to `./configure`.=20
(Nicol=E1s Ojeda B=E4r, report by Daniel B=FCnzli, review by David Allsopp,=
=20
S=E9bastien Hinderer, and Daniel B=FCnzli)=20

- #10671, #10672: webman: Fix misalignments in unordered lists by changing =
the=20
CSS for coloring bullets=20
(Wiktor Kuchta, review by Florian Angeletti)=20

- #11107: Lifted comments in the Parsetree module into actual documentation=
.=20
(Paul-Elliot Angl=E8s d'Auriac, review by Florian Angeletti)=20

- #11120, #11133: man pages, add missing warning entries and add mnemonic n=
ames=20
to the list of warnings.=20
(Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)=20

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

- #10531: add naked_pointers to ocamlc -config exporting NAKED_POINTERS fro=
m=20
Makefile.config.=20
(Damien Doligez, review by Mark Shinwell and Gabriel Scherer)=20

- #9116, #9118, #10582: Fix single-line source highlighting in the=20
presence of tabs=20
(Arma=EBl Gu=E9neau, review by Gabriel Scherer,=20
split off from #9118 by Kate Deplaix, report by Ricardo M. Correia)=20

- #10488: Improve type variable name generation and recursive type detectio=
n=20
when printing type errors; this ensures that the names given to type variab=
les=20
are always reused in the following portion of the trace and also removes=20
spurious `as 'a`s in types.=20
(Antal Spector-Zabusky, review by Florian Angeletti)=20

- #10794: Clarify warning 57 (Ambiguous or-pattern variables under guard)=
=20
(Wiktor Kuchta, review by Gabriel Scherer)=20

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

- #1599: add unset directive to ocamltest to clear environment variables be=
fore=20
running tests.=20
(David Allsopp, review by Damien Doligez and S=E9bastien Hinderer)=20

- #8516: Change representation of class signatures=20
(Leo White, review by Thomas Refis)=20

- #9444: -dtypedtree, print more explictly extra nodes in pattern ast.=20
(Fr=E9d=E9ric Bour, review by Gabriel Scherer)=20

- #10337: Normalize type_expr nodes on access=20
One should now use accessors such as get_desc and get_level to access field=
s=20
of type_expr, rather than calling manually Btype.repr (which is now hidden=
=20
in Types.Transient_expr).=20
(Jacques Garrigue and Takafumi Saikawa,=20
review by Florian Angeletti and Gabriel Radanne)=20

- #10474: Force normalization on access to row_desc=20
Similar to #10337. Make row_desc an abstract types, with constructor=20
create_row and accessors defined in Types rather than Btype.=20
A normalized view row_desc_repr is provided for convenience.=20
(Jacques Garrigue and Takafumi Saikawa,=20
review by Leo White and Florian Angeletti)=20

- #10541: Make field_kind and commutable abstract, enforcing correct access=
=20
(Jacques Garrigue and Takafumi Saikawa,=20
review by Thomas Refis and Florian Angeletti)=20

- #10575: add a -dump-dir flag, which redirects all debugging printer=20
(`-dprofile`, `-dlambda`, ...) to the target directory=20
(Florian Angeletti, review by Thomas Refis and Gabriel Scherer)=20

* #10627: Make row_field abstract=20
Completes #10474 by making row_field abstract too.=20
An immutable view row_field_view is provided, and one converts between it=
=20
and row_field via inj_row_field and row_field_repr.=20
(Jacques Garrigue and Takafumi Saikawa, review by Florian Angeletti)=20

- #10433: Remove the distinction between 32-bit aligned and 64-bit aligned=
=20
64-bit floats in Cmm.memory_chunk.=20
(Greta Yorsh, review by Xavier Leroy)=20

- #10434: Pun labelled arguments with type constraint in function applicati=
ons.=20
(Greta Yorsh, review by Nicolas Chataing and Nicol=E1s Ojeda B=E4r)=20

- #10470: Remove unused `cstr_normal` field from the `constructor_descripti=
on`=20
type=20
(Nicolas Chataing, review by Gabriel Scherer)=20

- #10382: Don't repeat environment entries in Typemod.check_type_decl=20
(Leo White, review by Gabriel Scherer and Florian Angeletti)=20

- #10472: refactor caml_sys_random_seed to ease future Multicore changes=20
(Gabriel Scherer, review by Xavier Leroy)=20

- #10487: Move logic to get the type path from a constructor return type in=
=20
Types=20
(Nicolas Chataing, review by Jacques Garrigue)=20

- #10555: Do not use ghost locations for type constraints=20
(Nicol=E1s Ojeda B=E4r, report by Anton Bachin, review by Thomas Refis)=20

- #10598, #10616: fix an exponential blow-up when typechecking nested modul=
e=20
types=20
(Florian Angeletti, report and review by Stephen Dolan)=20

- #10559: Evaluate signature substitutions lazily=20
(Stephen Dolan, review by Leo White)=20

- #8776, #10624: Fix compilation time regression introduced in 4.08=20
(Nicol=E1s Ojeda B=E4r, fix by Leo White, report by Alain Frisch, review by=
 Thomas=20
Refis)=20

- #10618: Expose more Pprintast functions=20
(Guillaume Petiot, review by Gabriel Scherer)=20

- #10637: Outcometree: introduce a record type for constructors=20
(Gabriel Scherer, review by Thomas Refis)=20

- #10516: refactor the compilation of the 'switch' construct=20
(Gabriel Scherer, review by Wiktor Kuchta and Luc Maranget)=20

- #10670: avoid global C state in the RE engine for the "str" library=20
(Xavier Leroy, review by Gabriel Scherer)=20

- #10678: Expose descriptions in Warnings module=20
(Leo White, review by Gabriel Scherer and Alain Frisch)=20

- #10690: Always build ocamltoplevel.cmxa=20
(David Allsopp, review by Gabriel Scherer)=20

- #10692: Expose Parse.module_type and Parse.module_expr=20
(Guillaume Petiot, review by Gabriel Scherer)=20

- #10714: Add X86_proc.with_internal_assembler for temporarily changing the=
=20
assembler used by the backend.=20
(David Allsopp, review by Gabriel Scherer)=20

- #10715: Allow the assembler and loader to be substituted in ocamlnat, for=
=20
example to be replaced with a binary emitter.=20
(David Allsopp and Nathan Rebours, review by Louis Gesbert,=20
Nicol=E1s Ojeda B=E4r and Gabriel Scherer)=20

- #10742: strong call-by-need reduction for shapes=20
(Gabriel Scherer and Nathana=EBlle Courant,=20
review by Florian Angeletti, Ulysse G=E9rard and Thomas Refis)=20

### Build system:=20

- #10828 Build native-code compilers on OpenBSD/aarch64=20
(Christopher Zimmermann)=20

- #10835 Disable DT_TEXTREL warnings on x86 32 bit architecture by passing=
=20
-Wl,-z,notext in mksharedlib and mkmaindll. Fixes relocation issues, report=
ed=20
in #9800, making local patches in Debian, Alpine, and FreeBSD superfluous.=
=20
(Hannes Mehnert with Kate Deplaix and St=E9phane Glondu, review by Xavier L=
eroy)=20

- #10717: Simplify the installation of man pages=20
(S=E9bastien Hinderer, review by David Allsopp)=20

- #10739: Stop installing extract_crc=20
(S=E9bastien Hinderer, review by David Allsopp, Daniel B=FCnzli, Xavier Ler=
oy=20
and Gabriel Scherer)=20

- #10797: Compile with -d2VolatileMetadata- on supporting versions of Visua=
l=20
Studio. This suppresses the addition of .voltbl sections and eliminates=20
linking errors in systhreads.=20
(David Allsopp, review by Jonah Beckford and S=E9bastien Hinderer)=20

### Bug fixes:=20

- #9214, #10709: Wrong unmarshaling of function pointers in debugger mode.=
=20
This was causing ocamldebug to crash when running some user-defined printer=
s.=20
(Xavier Leroy, report by Rehan Malak, review by Gabriel Scherer and=20
Vincent Laviron)=20

- #10473: Add CFI directives to RISC-V runtime and asmcomp.=20
This allows stacktraces to work in gdb through C and OCaml calls.=20
(Edwin T=F6r=F6k, review by Nicol=E1s Ojeda B=E4r and Xavier Leroy)=20

- #10539: Field kinds should be kept when copying types=20
Losing the sharing meant that one could desynchronize them between several=
=20
occurrences of self, allowing a method to be both public and hidden,=20
which broke type soundness.=20
(Jacques Garrigue, review by Leo White)=20

- #10542: Fix detection of immediate64 types through unboxed types.=20
(Leo White, review by Stephen Dolan and Gabriel Scherer)=20

- #10590: Some typechecker optimisations=20
(Stephen Dolan, review by Gabriel Scherer and Leo White)=20

- #10633: Stack overflow recovery in ocamlopt for AMD64/Linux and ARM/Linux=
=20
was not restoring the minor heap pointer correctly=20
(Stephen Dolan, review by Xavier Leroy)=20

- #10659: Fix freshening substitutions on imported modules=20
(Leo White and Stephen Dolan, review by Matthew Ryan)=20

- #10677, #10679: Fix detection of CC as gcc in configure (allow for=20
triplet-prefixed GCC) and fix all C compiler detection when CC is a path=20
rather than a basename.=20
(David Allsopp, report by Fabian @copy, review by Gabriel Scherer)=20

- #10690: Add --enable-native-toplevel to configure to enable installing=20
ocamlnat as part of the main build (default is not to install it)=20
(David Allsopp, review by Gabriel Scherer)=20

- #10693: Fix ident collision in includemod=20
(Leo White, review by Matthew Ryan)=20

- #10702: Fix cast of more strictly aligned pointer in win32unix=20
implementation of stat=20
(Antonin D=E9cimo, review by David Allsopp)=20

- #10712: Type-check toplevel terms in the native toplevel in the same way =
as=20
the bytecode toplevel. In particular, this fixes the loss of type variable=
=20
names in the native toplevel.=20
(Leo White, review by David Allsopp and Gabriel Scherer)=20

- #10735: Uncaught unify exception from `build_as_type`=20
(Jacques Garrigue, report and review by Leo White)=20

- #10763, #10764: fix miscompilation of method delegation=20
(Alain Frisch, review by Vincent Laviron and Jacques Garrigue)=20

- #10822, #10823: Bad interaction between ambivalent types and subtyping=20
coercions (Jacques Garrigue, report and review by Fr=E9d=E9ric Bour)=20

- #10836, #10952: avoid internal typechecker errors when checking signature=
=20
inclusion in presence of incompatible types.=20
(Florian Angeletti, report by Craig Ferguson, review by Gabriel Scherer)=20

- #10849: Display the result of `let _ : <type> =3D <expr>` in the native=
=20
toplevel, as in the bytecode toplevel.=20
(David Allsopp, report by Nathan Rebours, review by Gabriel Scherer)=20

- #10853: `Obj.reachable_words` could crash if called after a marshaling=20
operation in `NO_SHARING` mode.=20
(Xavier Leroy, report by Anil Madhavapeddy, review by Alain Frisch)=20

- #10907, #10959: Wrong type inferred from existential types=20
(Jacques Garrigue and Gabriel Scherer, report by @dyzsr, review by Leo Whit=
e)=20

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

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

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

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

- #11118: Fix integer overflow on 64-bit Windows when indexing bigarrays (w=
hich=20
could lead to a segmentation fault).=20
(Roven Gabriel, review by Nicol=E1s Ojeda B=E4r and Xavier Leroy)=20

--=_cc06ea44-ea88-4155-bf2b-2855b7200f62
Content-Type: text/html; charset=ISO-8859-1
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 birthday of Alexander Grothendieck by<br>announc=
ing the release of OCaml version 4.14.0.<br><br>Some of the highlights in t=
he 4.14.0 release are:<br><br>- Integrated support for "go to definitions" =
in Merlin.<br>- Standard library: new modules `In_channel` and `Out_channel=
`,<br>&nbsp; many new functions in Seq module, UTF decoding and validation =
support<br>&nbsp; for strings and bytes.<br>- Runtime optimisation: GC pref=
etching. Benchmarks show a speedup of around 20%<br>&nbsp; in GC-heavy prog=
rams.<br>- Improved error messages in particular for module-level errors.<b=
r>- Deprecated functions and modules in preparation for OCaml 5.<br>&nbsp; =
In particular, the Stream and Genlex modules are now deprecated.<br>- Type =
variables can be explicitly introduced in value and variant constructor<br>=
&nbsp; declarations. For instance,<br><br>&nbsp;&nbsp;&nbsp;&nbsp; val fold=
: ('acc -&gt; 'elt -&gt; 'acc) -&gt; 'acc -&gt; 'elt list -&gt; 'acc<br>&nb=
sp;&nbsp;&nbsp;&nbsp; type showable =3D Show: 'a * ('a -&gt; string) -&gt; =
showable<br><br>can now be written as<br><br>&nbsp;&nbsp;&nbsp; val fold: '=
acc 'elt. ('acc -&gt; 'elt -&gt; 'acc) -&gt; 'acc -&gt; 'elt list -&gt; 'ac=
c<br>&nbsp;&nbsp;&nbsp; type showable =3D Show: 'a. 'a * ('a -&gt; string) =
-&gt; showable<br><br>- Tail-call with up to 64 arguments are now guarantee=
d to be optimized<br>&nbsp; for all architectures.<br>- Experimental tail m=
odulo cons (TMC) transformation<br><br><br>The full list of changes can be =
found in the changelog below.<br><br>Those releases are available as OPAM s=
witches, and as a source download here:<br><br>&nbsp; https://github.com/oc=
aml/ocaml/archive/4.14.0.tar.gz<br>&nbsp; https://caml.inria.fr/pub/distrib=
/ocaml-4.14/ocaml-4.14.0.tar.gz<br><br><br>Happy hacking,<br><br>-- Florian=
 Angeletti for the OCaml team.<br><br>OCaml 4.14.0 changes (28 March 2022)<=
br>----------------------------------------------------<br><br>### Language=
 features (highlights):<br><br>- #10437: Allow explicit binders for type va=
riables.<br>&nbsp; (Stephen Dolan, review by Leo White)<br><br>- #181, #976=
0, #10740: opt-in tail-modulo-cons (TMC) transformation<br>&nbsp;&nbsp;&nbs=
p; let[@tail_mod_cons] rec map f li =3D ...<br>&nbsp; (Fr=E9d=E9ric Bour, G=
abriel Scherer, Basile Cl=E9ment,<br>&nbsp;&nbsp; review by Basile Cl=E9men=
t and Pierre Chambart,<br>&nbsp;&nbsp; tested by Konstantin Romanov)<br><br=
>### Runtime system (highlights):<br><br>- #10195, #10680: Speed up GC by p=
refetching during marking<br>&nbsp; (Stephen Dolan, review by Xavier Leroy,=
 Guillaume Munch-Maccagnoni,<br>&nbsp;&nbsp; Jacques-Henri Jourdan, Damien =
Doligez and Leo White)<br><br>### Code generation and optimizations (highli=
ghts):<br><br>- #10595: Tail calls with up to 64 arguments are guaranteed t=
o be compiled<br>&nbsp; as tail calls.&nbsp; To this end, memory locations =
in the domain state<br>&nbsp; are used for passing arguments that do not fi=
t in registers.<br>&nbsp; (Xavier Leroy, review by Vincent Laviron)<br><br>=
### Standard library (highlights):<br><br>* #10710: Add UTF tools, codecs a=
nd validations to the Uchar, Bytes and<br>&nbsp; String modules.<br>&nbsp; =
(Daniel B=FCnzli, review by Florian Angeletti, Nicol=E1s Ojeda B=E4r, Alain=
<br>&nbsp;&nbsp; Frisch and Gabriel Scherer)<br><br>* #10482: mark the Stre=
am and Genlex modules as deprecated, in preparation<br>&nbsp; for a future =
removal.&nbsp; These modules (without deprecation alert)<br>&nbsp; are now =
provided by the camlp-streams library.<br>&nbsp; (Xavier Leroy, review by N=
icol=E1s Ojeda B=E4r)<br><br>- #10545: Add In_channel and Out_channel modul=
es.<br>&nbsp; (Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, Simon Crua=
nes, Gabriel Scherer,<br>&nbsp; Guillaume Munch-Maccagnoni, Alain Frisch an=
d Xavier Leroy)<br><br>### Compiler user-interface and warnings (highlights=
)<br><br>- #10328, #10780: Give more precise error when disambiguation coul=
d not<br>&nbsp; possibly work.<br>&nbsp; (Leo White, review by Gabriel Sche=
rer and Florian Angeletti)<br><br>- #10361: Improve error messages for mism=
atched record and variant<br>&nbsp; definitions.<br>&nbsp; (Florian Angelet=
ti, review by Gabriel Radanne and Gabriel Scherer)<br><br>- #10407: Produce=
 more detailed error messages that contain full error traces<br>&nbsp; when=
 module inclusion fails.<br>&nbsp; (Antal Spector-Zabusky, review by Floria=
n Angeletti)<br><br>### Internal/compiler-libs changes (highlights):<br><br=
>- #10718, #11012: Add "Shape" information to the cmt files. Shapes are an<=
br>&nbsp; abstraction of modules that can be used by external tooling to pe=
rform<br>&nbsp; definition-aware operations.<br>&nbsp; (Ulysse G=E9rard, Th=
omas Refis and Leo White, review by Florian Angeletti)<br><br><br>### Langu=
age features:<br><br>- #10462: Add attribute to produce a compiler error fo=
r polls.<br>&nbsp; (Sadiq Jaffer, review by Mark Shinwell, Stephen Dolan<br=
>&nbsp;&nbsp; and Guillaume Munch-Maccagnoni)<br><br>- #10441: Remove unnec=
essary parentheses surrounding immediate objects.<br>&nbsp; Allow 'object .=
.. end # f', 'f object ... end', etc.<br>&nbsp; (Yan Dong, review by Nicol=
=E1s Ojeda B=E4r, Florian Angeletti and Gabriel Scherer)<br><br>### Runtime=
 system:<br><br>* #9391, #9424: Fix failed assertion in runtime due to ephe=
merons *set_* and<br>&nbsp; *blit_* function during Mark phase<br>&nbsp; (F=
ran=E7ois Bobot, reported by Stephen Dolan, reviewed by Damien Doligez)<br>=
<br>- #10549: Stack overflow detection and naked pointers checking for ARM6=
4<br>&nbsp; (Xavier Leroy, review by Stephen Dolan)<br><br>* #10675, #10937=
: Emit deprecation warnings when old C runtime function names<br>&nbsp; are=
 used.&nbsp; This will break C stub code that uses these old names and<br>&=
nbsp; treats warnings as errors.&nbsp; The workaround is to use the new nam=
es.<br>&nbsp; (Xavier Leroy and David Allsopp, review by S=E9bastien Hinder=
er and<br>&nbsp;&nbsp; Damien Doligez)<br><br>- #10698, #10726, #10891: Fre=
e the alternate signal stack when the main OCaml<br>&nbsp;&nbsp; code or an=
 OCaml thread stops<br>&nbsp; (Xavier Leroy, review by David Allsopp and Da=
mien Doligez)<br><br>- #10730, 10731: Fix bug in `Obj.reachable_words` caus=
ing a slowdown when called<br>&nbsp; multiple time (Alain Frisch, report by=
 ygrek, review by Xavier Leroy)<br><br>### Code generation and optimization=
s:<br><br>- #10578: Increase the number of integer registers used for<br>&n=
bsp; parameter passing on PowerPC (16 registers) and on s390x (8 registers)=
.<br>&nbsp; (Xavier Leroy, review by Mark Shinwell)<br><br>- #10591, #10615=
: Tune the heuristic for CSE of integer constants<br>&nbsp; so as to avoid =
excessive CSE on compiler-generated constants<br>&nbsp; and long register a=
llocation times.<br>&nbsp; (Xavier Leroy, report by Edwin T=F6r=F6k, review=
 by Nicol=E1s Ojeda B=E4r)<br><br>- #10681: Enforce boolean conditions for =
the native backend<br>&nbsp; (Vincent Laviron, review by Gabriel Scherer)<b=
r><br>- #10719: Ensure that build_apply respects Lambda.max_arity<br>&nbsp;=
 (Stephen Dolan, review by Xavier Leroy)<br><br>- #10728: Ensure that funct=
ions are evaluated after their arguments<br>&nbsp; (Stephen Dolan, review b=
y Mark Shinwell)<br><br>- #10732: Ensure right-to-left evaluation of argume=
nts in cmm_helpers<br>&nbsp; (Greta Yorsh, review by Xavier Leroy)<br><br>#=
## Standard library:<br><br>* #10622: Annotate `Uchar.t` with immediate att=
ribute<br>&nbsp; (Hongbo Zhang, reivew by Gabriel Scherer and Nicol=E1s Oje=
da B=E4r)<br><br>* #7812, #10475: `Filename.chop_suffix name suff` now chec=
ks that `suff`<br>&nbsp; is actually a suffix of `name` and raises Invalid_=
argument otherwise.<br>&nbsp; (Xavier Leroy, report by whitequark, review b=
y David Allsopp)<br><br>- #10526: add Random.bits32, Random.bits64, Random.=
nativebits<br>&nbsp; (Xavier Leroy, review by Gabriel Scherer and Fran=E7oi=
s Bobot)<br><br>* #10568: remove Obj.marshal and Obj.unmarshal<br>&nbsp; (t=
hese functions have been deprecated for a while and are superseded<br>&nbsp=
;&nbsp; by the functions from module Marshal)<br>&nbsp; (Fran=E7ois Pottier=
, review by Gabriel Scherer and Kate Deplaix)<br><br>- #10538: add Out_chan=
nel.set_buffered and Out_channel.is_buffered to control<br>&nbsp; the buffe=
ring mode of output channels.<br>&nbsp; (Nicol=E1s Ojeda B=E4r, review by J=
ohn Whitington, Daniel B=FCnzli, David Allsopp<br>&nbsp; and Xavier Leroy)<=
br><br>* #10583, #10998: Add over 40 new functions in Seq.<br>&nbsp; (Fran=
=E7ois Pottier and Simon Cruanes, review by Nicol=E1s Ojeda B=E4r,<br>&nbsp=
; Daniel B=FCnzli, Na=EBla Courant, Craig Ferguson, Wiktor Kuchta,<br>&nbsp=
; Xavier Leroy, Guillaume Munch-Maccagnoni, Rapha=EBl Proust, Gabriel Scher=
er<br>&nbsp; and Thierry Martinez)<br><br>- #10596, #10978: Add with_open_b=
in, with_open_text and with_open_gen to<br>&nbsp; In_channel and Out_channe=
l. Also, add In_channel.input_all.<br>&nbsp; (Nicol=E1s Ojeda B=E4r, review=
 by Daniel B=FCnzli, J=E9r=E9mie Dimino, Damien Doligez<br>&nbsp; and Xavie=
r Leroy)<br><br>- #10658: add detailed information about the current versio=
n of OCaml<br>&nbsp; to the Sys module of the standard library.<br>&nbsp; (=
S=E9bastien Hinderer, review by Damien Doligez, Gabriel Scherer, David<br>&=
nbsp; Allsopp, Nicol=E1s Ojeda B=E4r, Vincent Laviron)<br><br>- #10642: On =
Windows, Sys.remove and Unix.unlink now remove symlinks<br>&nbsp; to direct=
ories instead of raising EACCES. Introduce<br>&nbsp; caml/winsupport.h to h=
old more common code between the runtime,<br>&nbsp; lib-sys, and win32unix.=
<br>&nbsp; (Antonin D=E9cimo, review by David Allsopp and Xavier Leroy)<br>=
<br>- #10737: add new ephemeron API for forward compatibility with Multicor=
e<br>&nbsp; OCaml.<br>&nbsp; (Damien Doligez, review by Stephen Dolan)<br><=
br>* #10922: Add deprecation warnings on {Int32,Int64,Nativeint}.format.<br=
>&nbsp; (Nicol=E1s Ojeda B=E4r, review by Xavier Leroy and Florian Angelett=
i)<br><br>### Other libraries:<br><br>- #10192: Add support for Unix domain=
 sockets on Windows and use them<br>&nbsp; to emulate Unix.socketpair (only=
 available on Windows 1803+)<br>&nbsp; (Antonin D=E9cimo, review by David A=
llsopp)<br><br>- #10469: Add Thread.set_uncaught_exception_handler and<br>&=
nbsp; Thread.default_uncaught_exception_handler.<br>&nbsp; (Enguerrand Deco=
rne, review by David Allsopp)<br><br>- #10697: Bindings of dup and dup2 in =
win32unix now correctly call<br>&nbsp; WSADuplicateSocket on sockets instea=
d of DuplicateHandle.<br>&nbsp; (Antonin D=E9cimo, review by Xavier Leroy a=
nd Nicol=E1s Ojeda B=E4r)<br><br>- #10951: Introduce the Thread.Exit except=
ion as an alternative way to<br>&nbsp; terminate threads prematurely.&nbsp;=
 This alternative way will become<br>&nbsp; the standard way in 5.00.<br>&n=
bsp; (Xavier Leroy, review by Florian Angeletti)<br><br>### Tools:<br><br>-=
 #10839: Fix regression of #show when printing class type<br>&nbsp; (=C9lie=
 Brami, review by Florian Angeletti)<br><br>- #3959, #7202, #10476: ocaml, =
in script mode, directive errors<br>&nbsp; (`#use "missing_file";;`) use st=
derr and exit with an error.<br>&nbsp; (Florian Angeletti, review by Gabrie=
l Scherer)<br><br>- #10438: add a new toplevel cli argument `-e &lt;script&=
gt;` to<br>&nbsp; run script passed to the toplevel.<br>&nbsp; (Pavlo Khrys=
tenko, review by Gabriel Scherer)<br><br>- #10524: Directive argument type =
error now shows expected and received type.<br>&nbsp; (Wiktor Kuchta, revie=
w by Gabriel Scherer)<br><br>- #10560: Disable colors if the env variable `=
NO_COLOR` is set.&nbsp; If<br>&nbsp; `OCAML_COLOR` is set, its setting take=
s precedence over `NO_COLOR`.<br>&nbsp; (Nicol=E1s Ojeda B=E4r, report by G=
abriel Scherer, review by Daniel B=FCnzli,<br>&nbsp; Gabriel Scherer and Da=
vid Allsopp)<br><br>- #10565: Toplevel value printing: truncate strings onl=
y after 8 bytes.<br>&nbsp; (Wiktor Kuchta, review by Xavier Leroy)<br><br>-=
 #10527: Show "#help;; for help" at toplevel startup<br>&nbsp; (Wiktor Kuch=
ta, review by David Allsopp and Florian Angeletti)<br><br>- #10846: add the=
 `-shape` command-line option to ocamlobjinfo. When reading a<br>&nbsp; `cm=
t` file, shape information will only be shown if that option is used.<br>&n=
bsp; (Ulysse G=E9rard, review by Florian Angeletti)<br><br>### Debugging:<b=
r><br>- #10517, #10594: when running ocamldebug on a program linked with th=
e<br>&nbsp; threads library, don't fail immediately; instead, allow debuggi=
ng<br>&nbsp; until the program creates a thread for the first time, then fa=
il cleanly.<br>&nbsp; (Xavier Leroy, report by @anentropic, review by Gabri=
el Scherer)<br><br>- #9621: Pack the ocamldebug modules to minimize clashes=
<br>&nbsp; (Raphael Sousa Santos, review by Vincent Laviron and Gabriel Sch=
erer)<br><br>### Manual and documentation:<br><br>- #7812, #10475: reworded=
 the description of the behaviors of<br>&nbsp; float-&gt;int conversions in=
 case of overflow, and of iterators<br>&nbsp; in case of concurrent modific=
ations.<br>&nbsp; (Xavier Leroy, report by whitequark, review by David Alls=
opp)<br><br>- #8697, #10666: add M, m, n options of the OCAMLRUNPARAM to ma=
nual and man page<br>&nbsp; for ocamlrun command line options<br>&nbsp; (Do=
ng An and Anukriti Kumar, review by David Allsopp, Gabriel Scherer<br>&nbsp=
;&nbsp; and Damien Doligez)<br><br>- #10281, #10685: Add description of C c=
ompiler on macOS and Windows platforms.<br>&nbsp; (Dong An, review by Xavie=
r Leroy and David Allsopp)<br><br>- #10397: Document exceptions raised by U=
nix module functions on Windows<br>&nbsp; (Martin Jambon, review by Daniel =
B=FCnzli, David Alsopp, Damien Doligez,<br>&nbsp;&nbsp; Xavier Leroy, and F=
lorian Angeletti)<br><br>- #10589: Fix many typos (excess/inconsistent spac=
es) in the HTML manual.<br>&nbsp; (Wiktor Kuchta, review by Florian Angelet=
ti)<br><br>- #10605: manual, name few css classes to ease styling and maint=
ainability.<br>&nbsp; (Florian Angeletti, review by Wiktor Kuchta and Gabri=
el Scherer)<br><br>- #10668, #10669: the changelog (this file), LICENSE and=
 README files are now<br>&nbsp; installed as part of the distribution. The =
destination directory can be<br>&nbsp; customized using the `--docdir` argu=
ment to `./configure`.<br>&nbsp; (Nicol=E1s Ojeda B=E4r, report by Daniel B=
=FCnzli, review by David Allsopp,<br>&nbsp; S=E9bastien Hinderer, and Danie=
l B=FCnzli)<br><br>- #10671, #10672: webman: Fix misalignments in unordered=
 lists by changing the<br>&nbsp; CSS for coloring bullets<br>&nbsp; (Wiktor=
 Kuchta, review by Florian Angeletti)<br><br>- #11107: Lifted comments in t=
he Parsetree module into actual documentation.<br>&nbsp; (Paul-Elliot Angl=
=E8s d'Auriac, review by Florian Angeletti)<br><br>- #11120, #11133: man pa=
ges, add missing warning entries and add mnemonic names<br>&nbsp; to the li=
st of warnings.<br>&nbsp; (Florian Angeletti, report by Kate Deplaix, revie=
w by Gabriel Scherer)<br><br>### Compiler user-interface and warnings:<br><=
br>- #10531: add naked_pointers to ocamlc -config exporting NAKED_POINTERS =
from<br>&nbsp; Makefile.config.<br>&nbsp; (Damien Doligez, review by Mark S=
hinwell and Gabriel Scherer)<br><br>- #9116, #9118, #10582: Fix single-line=
 source highlighting in the<br>&nbsp; presence of tabs<br>&nbsp; (Arma=EBl =
Gu=E9neau, review by Gabriel Scherer,<br>&nbsp;&nbsp; split off from #9118 =
by Kate Deplaix, report by Ricardo M. Correia)<br><br>- #10488: Improve typ=
e variable name generation and recursive type detection<br>&nbsp; when prin=
ting type errors; this ensures that the names given to type variables<br>&n=
bsp; are always reused in the following portion of the trace and also remov=
es<br>&nbsp; spurious `as 'a`s in types.<br>&nbsp; (Antal Spector-Zabusky, =
review by Florian Angeletti)<br><br>- #10794: Clarify warning 57 (Ambiguous=
 or-pattern variables under guard)<br>&nbsp; (Wiktor Kuchta, review by Gabr=
iel Scherer)<br><br>### Internal/compiler-libs changes:<br><br>- #1599: add=
 unset directive to ocamltest to clear environment variables before<br>&nbs=
p; running tests.<br>&nbsp; (David Allsopp, review by Damien Doligez and S=
=E9bastien Hinderer)<br><br>- #8516: Change representation of class signatu=
res<br>&nbsp; (Leo White, review by Thomas Refis)<br><br>- #9444: -dtypedtr=
ee, print more explictly extra nodes in pattern ast.<br>&nbsp; (Fr=E9d=E9ri=
c Bour, review by Gabriel Scherer)<br><br>- #10337: Normalize type_expr nod=
es on access<br>&nbsp; One should now use accessors such as get_desc and ge=
t_level to access fields<br>&nbsp; of type_expr, rather than calling manual=
ly Btype.repr (which is now hidden<br>&nbsp; in Types.Transient_expr).<br>&=
nbsp; (Jacques Garrigue and Takafumi Saikawa,<br>&nbsp;&nbsp; review by Flo=
rian Angeletti and Gabriel Radanne)<br><br>- #10474: Force normalization on=
 access to row_desc<br>&nbsp; Similar to #10337. Make row_desc an abstract =
types, with constructor<br>&nbsp; create_row and accessors defined in Types=
 rather than Btype.<br>&nbsp; A normalized view row_desc_repr is provided f=
or convenience.<br>&nbsp; (Jacques Garrigue and Takafumi Saikawa,<br>&nbsp;=
&nbsp; review by Leo White and Florian Angeletti)<br><br>- #10541: Make fie=
ld_kind and commutable abstract, enforcing correct access<br>&nbsp; (Jacque=
s Garrigue and Takafumi Saikawa,<br>&nbsp;&nbsp; review by Thomas Refis and=
 Florian Angeletti)<br><br>- #10575: add a -dump-dir flag, which redirects =
all debugging printer<br>&nbsp;&nbsp; (`-dprofile`, `-dlambda`, ...) to the=
 target directory<br>&nbsp; (Florian Angeletti, review by Thomas Refis and =
Gabriel Scherer)<br><br>* #10627: Make row_field abstract<br>&nbsp; Complet=
es #10474 by making row_field abstract too.<br>&nbsp; An immutable view row=
_field_view is provided, and one converts between it<br>&nbsp; and row_fiel=
d via inj_row_field and row_field_repr.<br>&nbsp; (Jacques Garrigue and Tak=
afumi Saikawa, review by Florian Angeletti)<br><br>- #10433: Remove the dis=
tinction between 32-bit aligned and 64-bit aligned<br>&nbsp; 64-bit floats =
in Cmm.memory_chunk.<br>&nbsp; (Greta Yorsh, review by Xavier Leroy)<br><br=
>- #10434: Pun labelled arguments with type constraint in function applicat=
ions.<br>&nbsp; (Greta Yorsh, review by Nicolas Chataing and Nicol=E1s Ojed=
a B=E4r)<br><br>- #10470: Remove unused `cstr_normal` field from the `const=
ructor_description`<br>&nbsp; type<br>&nbsp; (Nicolas Chataing, review by G=
abriel Scherer)<br><br>- #10382: Don't repeat environment entries in Typemo=
d.check_type_decl<br>&nbsp; (Leo White, review by Gabriel Scherer and Flori=
an Angeletti)<br><br>- #10472: refactor caml_sys_random_seed to ease future=
 Multicore changes<br>&nbsp; (Gabriel Scherer, review by Xavier Leroy)<br><=
br>- #10487: Move logic to get the type path from a constructor return type=
 in<br>&nbsp; Types<br>&nbsp; (Nicolas Chataing, review by Jacques Garrigue=
)<br><br>- #10555: Do not use ghost locations for type constraints<br>&nbsp=
; (Nicol=E1s Ojeda B=E4r, report by Anton Bachin, review by Thomas Refis)<b=
r><br>- #10598, #10616: fix an exponential blow-up when typechecking nested=
 module<br>&nbsp; types<br>&nbsp; (Florian Angeletti, report and review by =
Stephen Dolan)<br><br>- #10559: Evaluate signature substitutions lazily<br>=
&nbsp; (Stephen Dolan, review by Leo White)<br><br>- #8776, #10624: Fix com=
pilation time regression introduced in 4.08<br>&nbsp; (Nicol=E1s Ojeda B=E4=
r, fix by Leo White, report by Alain Frisch, review by Thomas<br>&nbsp; Ref=
is)<br><br>- #10618: Expose more Pprintast functions<br>&nbsp; (Guillaume P=
etiot, review by Gabriel Scherer)<br><br>- #10637: Outcometree: introduce a=
 record type for constructors<br>&nbsp; (Gabriel Scherer, review by Thomas =
Refis)<br><br>- #10516: refactor the compilation of the 'switch' construct<=
br>&nbsp; (Gabriel Scherer, review by Wiktor Kuchta and Luc Maranget)<br><b=
r>- #10670: avoid global C state in the RE engine for the "str" library<br>=
&nbsp; (Xavier Leroy, review by Gabriel Scherer)<br><br>- #10678: Expose de=
scriptions in Warnings module<br>&nbsp; (Leo White, review by Gabriel Scher=
er and Alain Frisch)<br><br>- #10690: Always build ocamltoplevel.cmxa<br>&n=
bsp; (David Allsopp, review by Gabriel Scherer)<br><br>- #10692: Expose Par=
se.module_type and Parse.module_expr<br>&nbsp; (Guillaume Petiot, review by=
 Gabriel Scherer)<br><br>- #10714: Add X86_proc.with_internal_assembler for=
 temporarily changing the<br>&nbsp; assembler used by the backend.<br>&nbsp=
; (David Allsopp, review by Gabriel Scherer)<br><br>- #10715: Allow the ass=
embler and loader to be substituted in ocamlnat, for<br>&nbsp; example to b=
e replaced with a binary emitter.<br>&nbsp; (David Allsopp and Nathan Rebou=
rs, review by Louis Gesbert,<br>&nbsp; Nicol=E1s Ojeda B=E4r and Gabriel Sc=
herer)<br><br>- #10742: strong call-by-need reduction for shapes<br>&nbsp; =
(Gabriel Scherer and Nathana=EBlle Courant,<br>&nbsp;&nbsp; review by Flori=
an Angeletti, Ulysse G=E9rard and Thomas Refis)<br><br>### Build system:<br=
><br>- #10828 Build native-code compilers on OpenBSD/aarch64<br>&nbsp; (Chr=
istopher Zimmermann)<br><br>- #10835 Disable DT_TEXTREL warnings on x86 32 =
bit architecture by passing<br>&nbsp; -Wl,-z,notext in mksharedlib and mkma=
indll. Fixes relocation issues, reported<br>&nbsp; in #9800, making local p=
atches in Debian, Alpine, and FreeBSD superfluous.<br>&nbsp; (Hannes Mehner=
t with Kate Deplaix and St=E9phane Glondu, review by Xavier Leroy)<br><br>-=
 #10717: Simplify the installation of man pages<br>&nbsp; (S=E9bastien Hind=
erer, review by David Allsopp)<br><br>- #10739: Stop installing extract_crc=
<br>&nbsp; (S=E9bastien Hinderer, review by David Allsopp, Daniel B=FCnzli,=
 Xavier Leroy<br>&nbsp; and Gabriel Scherer)<br><br>- #10797: Compile with =
-d2VolatileMetadata- on supporting versions of Visual<br>&nbsp; Studio. Thi=
s suppresses the addition of .voltbl sections and eliminates<br>&nbsp; link=
ing errors in systhreads.<br>&nbsp; (David Allsopp, review by Jonah Beckfor=
d and S=E9bastien Hinderer)<br><br>### Bug fixes:<br><br>- #9214, #10709: W=
rong unmarshaling of function pointers in debugger mode.<br>&nbsp; This was=
 causing ocamldebug to crash when running some user-defined printers.<br>&n=
bsp; (Xavier Leroy, report by Rehan Malak, review by Gabriel Scherer and<br=
>&nbsp;&nbsp; Vincent Laviron)<br><br>- #10473: Add CFI directives to RISC-=
V runtime and asmcomp.<br>&nbsp; This allows stacktraces to work in gdb thr=
ough C and OCaml calls.<br>&nbsp; (Edwin T=F6r=F6k, review by Nicol=E1s Oje=
da B=E4r and Xavier Leroy)<br><br>- #10539: Field kinds should be kept when=
 copying types<br>&nbsp; Losing the sharing meant that one could desynchron=
ize them between several<br>&nbsp; occurrences of self, allowing a method t=
o be both public and hidden,<br>&nbsp; which broke type soundness.<br>&nbsp=
; (Jacques Garrigue, review by Leo White)<br><br>- #10542: Fix detection of=
 immediate64 types through unboxed types.<br>&nbsp; (Leo White, review by S=
tephen Dolan and Gabriel Scherer)<br><br>- #10590: Some typechecker optimis=
ations<br>&nbsp; (Stephen Dolan, review by Gabriel Scherer and Leo White)<b=
r><br>- #10633: Stack overflow recovery in ocamlopt for AMD64/Linux and ARM=
/Linux<br>&nbsp; was not restoring the minor heap pointer correctly<br>&nbs=
p; (Stephen Dolan, review by Xavier Leroy)<br><br>- #10659: Fix freshening =
substitutions on imported modules<br>&nbsp; (Leo White and Stephen Dolan, r=
eview by Matthew Ryan)<br><br>- #10677, #10679: Fix detection of CC as gcc =
in configure (allow for<br>&nbsp; triplet-prefixed GCC) and fix all C compi=
ler detection when CC is a path<br>&nbsp; rather than a basename.<br>&nbsp;=
 (David Allsopp, report by Fabian @copy, review by Gabriel Scherer)<br><br>=
- #10690: Add --enable-native-toplevel to configure to enable installing<br=
>&nbsp; ocamlnat as part of the main build (default is not to install it)<b=
r>&nbsp; (David Allsopp, review by Gabriel Scherer)<br><br>- #10693: Fix id=
ent collision in includemod<br>&nbsp; (Leo White, review by Matthew Ryan)<b=
r><br>- #10702: Fix cast of more strictly aligned pointer in win32unix<br>&=
nbsp; implementation of stat<br>&nbsp; (Antonin D=E9cimo, review by David A=
llsopp)<br><br>- #10712: Type-check toplevel terms in the native toplevel i=
n the same way as<br>&nbsp; the bytecode toplevel. In particular, this fixe=
s the loss of type variable<br>&nbsp; names in the native toplevel.<br>&nbs=
p; (Leo White, review by David Allsopp and Gabriel Scherer)<br><br>- #10735=
: Uncaught unify exception from `build_as_type`<br>&nbsp; (Jacques Garrigue=
, report and review by Leo White)<br><br>- #10763, #10764: fix miscompilati=
on of method delegation<br>&nbsp; (Alain Frisch, review by Vincent Laviron =
and Jacques Garrigue)<br><br>- #10822, #10823: Bad interaction between ambi=
valent types and subtyping<br>&nbsp; coercions (Jacques Garrigue, report an=
d review by Fr=E9d=E9ric Bour)<br><br>- #10836, #10952: avoid internal type=
checker errors when checking signature<br>&nbsp; inclusion in presence of i=
ncompatible types.<br>&nbsp; (Florian Angeletti, report by Craig Ferguson, =
review by Gabriel Scherer)<br><br>- #10849: Display the result of `let _ : =
&lt;type&gt; =3D &lt;expr&gt;` in the native<br>&nbsp; toplevel, as in the =
bytecode toplevel.<br>&nbsp; (David Allsopp, report by Nathan Rebours, revi=
ew by Gabriel Scherer)<br><br>- #10853: `Obj.reachable_words` could crash i=
f called after a marshaling<br>&nbsp; operation in `NO_SHARING` mode.<br>&n=
bsp; (Xavier Leroy, report by Anil Madhavapeddy, review by Alain Frisch)<br=
><br>- #10907, #10959: Wrong type inferred from existential types<br>&nbsp;=
 (Jacques Garrigue and Gabriel Scherer, report by @dyzsr, review by Leo Whi=
te)<br><br>- #10688: Move frame descriptor table from `rodata` to `data` se=
ction on<br>&nbsp; RISC-V.&nbsp; Improves support for building DLLs and PIE=
s. In particular, this<br>&nbsp; applies to all binaries in distributions t=
hat build PIEs by default (eg<br>&nbsp; Gentoo and Alpine).<br>&nbsp; (Alex=
 Fan, review by Gabriel Scherer)<br><br>- #11031: Exception handlers restor=
e the rbp register when using frame-pointers<br>&nbsp; on amd64.<br>&nbsp; =
(Fabrice Buoro, with help from Stephen Dolan, Tom Kelly and Mark Shinwell,<=
br>&nbsp; review by Xavier Leroy)<br><br>- #11025, #11036: Do not pass -no-=
pie to the C compiler on musl/arm64<br>&nbsp; (omni, Kate Deplaix and Anton=
io Nuno Monteiro, review by Xavier Leroy)<br><br>- #11101, #11109: A recurs=
ive type constraint fails on 4.14<br>&nbsp; (Jacques Garrigue, report and r=
eview by Florian Angeletti)<br><br>- #11118: Fix integer overflow on 64-bit=
 Windows when indexing bigarrays (which<br>&nbsp; could lead to a segmentat=
ion fault).<br>&nbsp; (Roven Gabriel, review by Nicol=E1s Ojeda B=E4r and X=
avier Leroy)<br></div></div></div></body></html>
--=_cc06ea44-ea88-4155-bf2b-2855b7200f62--