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> many new functions in Seq module, UTF decoding and validation =
support<br> for strings and bytes.<br>- Runtime optimisation: GC pref=
etching. Benchmarks show a speedup of around 20%<br> 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> =
In particular, the Stream and Genlex modules are now deprecated.<br>- Type =
variables can be explicitly introduced in value and variant constructor<br>=
declarations. For instance,<br><br> val fold=
: ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc<br>&nb=
sp; type showable =3D Show: 'a * ('a -> string) -> =
showable<br><br>can now be written as<br><br> val fold: '=
acc 'elt. ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'ac=
c<br> type showable =3D Show: 'a. 'a * ('a -> string) =
-> showable<br><br>- Tail-call with up to 64 arguments are now guarantee=
d to be optimized<br> 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> https://github.com/oc=
aml/ocaml/archive/4.14.0.tar.gz<br> 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> (Stephen Dolan, review by Leo White)<br><br>- #181, #976=
0, #10740: opt-in tail-modulo-cons (TMC) transformation<br> &nbs=
p; let[@tail_mod_cons] rec map f li =3D ...<br> (Fr=E9d=E9ric Bour, G=
abriel Scherer, Basile Cl=E9ment,<br> review by Basile Cl=E9men=
t and Pierre Chambart,<br> tested by Konstantin Romanov)<br><br=
>### Runtime system (highlights):<br><br>- #10195, #10680: Speed up GC by p=
refetching during marking<br> (Stephen Dolan, review by Xavier Leroy,=
Guillaume Munch-Maccagnoni,<br> 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> as tail calls. To this end, memory locations =
in the domain state<br> are used for passing arguments that do not fi=
t in registers.<br> (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> String modules.<br> =
(Daniel B=FCnzli, review by Florian Angeletti, Nicol=E1s Ojeda B=E4r, Alain=
<br> Frisch and Gabriel Scherer)<br><br>* #10482: mark the Stre=
am and Genlex modules as deprecated, in preparation<br> for a future =
removal. These modules (without deprecation alert)<br> are now =
provided by the camlp-streams library.<br> (Xavier Leroy, review by N=
icol=E1s Ojeda B=E4r)<br><br>- #10545: Add In_channel and Out_channel modul=
es.<br> (Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, Simon Crua=
nes, Gabriel Scherer,<br> 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> possibly work.<br> (Leo White, review by Gabriel Sche=
rer and Florian Angeletti)<br><br>- #10361: Improve error messages for mism=
atched record and variant<br> definitions.<br> (Florian Angelet=
ti, review by Gabriel Radanne and Gabriel Scherer)<br><br>- #10407: Produce=
more detailed error messages that contain full error traces<br> when=
module inclusion fails.<br> (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> abstraction of modules that can be used by external tooling to pe=
rform<br> definition-aware operations.<br> (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> (Sadiq Jaffer, review by Mark Shinwell, Stephen Dolan<br=
> and Guillaume Munch-Maccagnoni)<br><br>- #10441: Remove unnec=
essary parentheses surrounding immediate objects.<br> Allow 'object .=
.. end # f', 'f object ... end', etc.<br> (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> *blit_* function during Mark phase<br> (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> (Xavier Leroy, review by Stephen Dolan)<br><br>* #10675, #10937=
: Emit deprecation warnings when old C runtime function names<br> are=
used. This will break C stub code that uses these old names and<br>&=
nbsp; treats warnings as errors. The workaround is to use the new nam=
es.<br> (Xavier Leroy and David Allsopp, review by S=E9bastien Hinder=
er and<br> Damien Doligez)<br><br>- #10698, #10726, #10891: Fre=
e the alternate signal stack when the main OCaml<br> code or an=
OCaml thread stops<br> (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> 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> (Xavier Leroy, review by Mark Shinwell)<br><br>- #10591, #10615=
: Tune the heuristic for CSE of integer constants<br> so as to avoid =
excessive CSE on compiler-generated constants<br> and long register a=
llocation times.<br> (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> (Vincent Laviron, review by Gabriel Scherer)<b=
r><br>- #10719: Ensure that build_apply respects Lambda.max_arity<br> =
(Stephen Dolan, review by Xavier Leroy)<br><br>- #10728: Ensure that funct=
ions are evaluated after their arguments<br> (Stephen Dolan, review b=
y Mark Shinwell)<br><br>- #10732: Ensure right-to-left evaluation of argume=
nts in cmm_helpers<br> (Greta Yorsh, review by Xavier Leroy)<br><br>#=
## Standard library:<br><br>* #10622: Annotate `Uchar.t` with immediate att=
ribute<br> (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> is actually a suffix of `name` and raises Invalid_=
argument otherwise.<br> (Xavier Leroy, report by whitequark, review b=
y David Allsopp)<br><br>- #10526: add Random.bits32, Random.bits64, Random.=
nativebits<br> (Xavier Leroy, review by Gabriel Scherer and Fran=E7oi=
s Bobot)<br><br>* #10568: remove Obj.marshal and Obj.unmarshal<br> (t=
hese functions have been deprecated for a while and are superseded<br> =
; by the functions from module Marshal)<br> (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> the buffe=
ring mode of output channels.<br> (Nicol=E1s Ojeda B=E4r, review by J=
ohn Whitington, Daniel B=FCnzli, David Allsopp<br> and Xavier Leroy)<=
br><br>* #10583, #10998: Add over 40 new functions in Seq.<br> (Fran=
=E7ois Pottier and Simon Cruanes, review by Nicol=E1s Ojeda B=E4r,<br> =
; Daniel B=FCnzli, Na=EBla Courant, Craig Ferguson, Wiktor Kuchta,<br> =
; Xavier Leroy, Guillaume Munch-Maccagnoni, Rapha=EBl Proust, Gabriel Scher=
er<br> and Thierry Martinez)<br><br>- #10596, #10978: Add with_open_b=
in, with_open_text and with_open_gen to<br> In_channel and Out_channe=
l. Also, add In_channel.input_all.<br> (Nicol=E1s Ojeda B=E4r, review=
by Daniel B=FCnzli, J=E9r=E9mie Dimino, Damien Doligez<br> and Xavie=
r Leroy)<br><br>- #10658: add detailed information about the current versio=
n of OCaml<br> to the Sys module of the standard library.<br> (=
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> to direct=
ories instead of raising EACCES. Introduce<br> caml/winsupport.h to h=
old more common code between the runtime,<br> lib-sys, and win32unix.=
<br> (Antonin D=E9cimo, review by David Allsopp and Xavier Leroy)<br>=
<br>- #10737: add new ephemeron API for forward compatibility with Multicor=
e<br> OCaml.<br> (Damien Doligez, review by Stephen Dolan)<br><=
br>* #10922: Add deprecation warnings on {Int32,Int64,Nativeint}.format.<br=
> (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> to emulate Unix.socketpair (only=
available on Windows 1803+)<br> (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> (Enguerrand Deco=
rne, review by David Allsopp)<br><br>- #10697: Bindings of dup and dup2 in =
win32unix now correctly call<br> WSADuplicateSocket on sockets instea=
d of DuplicateHandle.<br> (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> terminate threads prematurely. =
This alternative way will become<br> 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> (=C9lie=
Brami, review by Florian Angeletti)<br><br>- #3959, #7202, #10476: ocaml, =
in script mode, directive errors<br> (`#use "missing_file";;`) use st=
derr and exit with an error.<br> (Florian Angeletti, review by Gabrie=
l Scherer)<br><br>- #10438: add a new toplevel cli argument `-e <script&=
gt;` to<br> run script passed to the toplevel.<br> (Pavlo Khrys=
tenko, review by Gabriel Scherer)<br><br>- #10524: Directive argument type =
error now shows expected and received type.<br> (Wiktor Kuchta, revie=
w by Gabriel Scherer)<br><br>- #10560: Disable colors if the env variable `=
NO_COLOR` is set. If<br> `OCAML_COLOR` is set, its setting take=
s precedence over `NO_COLOR`.<br> (Nicol=E1s Ojeda B=E4r, report by G=
abriel Scherer, review by Daniel B=FCnzli,<br> Gabriel Scherer and Da=
vid Allsopp)<br><br>- #10565: Toplevel value printing: truncate strings onl=
y after 8 bytes.<br> (Wiktor Kuchta, review by Xavier Leroy)<br><br>-=
#10527: Show "#help;; for help" at toplevel startup<br> (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> `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> threads library, don't fail immediately; instead, allow debuggi=
ng<br> until the program creates a thread for the first time, then fa=
il cleanly.<br> (Xavier Leroy, report by @anentropic, review by Gabri=
el Scherer)<br><br>- #9621: Pack the ocamldebug modules to minimize clashes=
<br> (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> float->int conversions in=
case of overflow, and of iterators<br> in case of concurrent modific=
ations.<br> (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> for ocamlrun command line options<br> (Do=
ng An and Anukriti Kumar, review by David Allsopp, Gabriel Scherer<br> =
; and Damien Doligez)<br><br>- #10281, #10685: Add description of C c=
ompiler on macOS and Windows platforms.<br> (Dong An, review by Xavie=
r Leroy and David Allsopp)<br><br>- #10397: Document exceptions raised by U=
nix module functions on Windows<br> (Martin Jambon, review by Daniel =
B=FCnzli, David Alsopp, Damien Doligez,<br> Xavier Leroy, and F=
lorian Angeletti)<br><br>- #10589: Fix many typos (excess/inconsistent spac=
es) in the HTML manual.<br> (Wiktor Kuchta, review by Florian Angelet=
ti)<br><br>- #10605: manual, name few css classes to ease styling and maint=
ainability.<br> (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> installed as part of the distribution. The =
destination directory can be<br> customized using the `--docdir` argu=
ment to `./configure`.<br> (Nicol=E1s Ojeda B=E4r, report by Daniel B=
=FCnzli, review by David Allsopp,<br> S=E9bastien Hinderer, and Danie=
l B=FCnzli)<br><br>- #10671, #10672: webman: Fix misalignments in unordered=
lists by changing the<br> CSS for coloring bullets<br> (Wiktor=
Kuchta, review by Florian Angeletti)<br><br>- #11107: Lifted comments in t=
he Parsetree module into actual documentation.<br> (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> to the li=
st of warnings.<br> (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> Makefile.config.<br> (Damien Doligez, review by Mark S=
hinwell and Gabriel Scherer)<br><br>- #9116, #9118, #10582: Fix single-line=
source highlighting in the<br> presence of tabs<br> (Arma=EBl =
Gu=E9neau, review by Gabriel Scherer,<br> 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> 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> spurious `as 'a`s in types.<br> (Antal Spector-Zabusky, =
review by Florian Angeletti)<br><br>- #10794: Clarify warning 57 (Ambiguous=
or-pattern variables under guard)<br> (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> (David Allsopp, review by Damien Doligez and S=
=E9bastien Hinderer)<br><br>- #8516: Change representation of class signatu=
res<br> (Leo White, review by Thomas Refis)<br><br>- #9444: -dtypedtr=
ee, print more explictly extra nodes in pattern ast.<br> (Fr=E9d=E9ri=
c Bour, review by Gabriel Scherer)<br><br>- #10337: Normalize type_expr nod=
es on access<br> One should now use accessors such as get_desc and ge=
t_level to access fields<br> of type_expr, rather than calling manual=
ly Btype.repr (which is now hidden<br> in Types.Transient_expr).<br>&=
nbsp; (Jacques Garrigue and Takafumi Saikawa,<br> review by Flo=
rian Angeletti and Gabriel Radanne)<br><br>- #10474: Force normalization on=
access to row_desc<br> Similar to #10337. Make row_desc an abstract =
types, with constructor<br> create_row and accessors defined in Types=
rather than Btype.<br> A normalized view row_desc_repr is provided f=
or convenience.<br> (Jacques Garrigue and Takafumi Saikawa,<br> =
review by Leo White and Florian Angeletti)<br><br>- #10541: Make fie=
ld_kind and commutable abstract, enforcing correct access<br> (Jacque=
s Garrigue and Takafumi Saikawa,<br> review by Thomas Refis and=
Florian Angeletti)<br><br>- #10575: add a -dump-dir flag, which redirects =
all debugging printer<br> (`-dprofile`, `-dlambda`, ...) to the=
target directory<br> (Florian Angeletti, review by Thomas Refis and =
Gabriel Scherer)<br><br>* #10627: Make row_field abstract<br> Complet=
es #10474 by making row_field abstract too.<br> An immutable view row=
_field_view is provided, and one converts between it<br> and row_fiel=
d via inj_row_field and row_field_repr.<br> (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> 64-bit floats =
in Cmm.memory_chunk.<br> (Greta Yorsh, review by Xavier Leroy)<br><br=
>- #10434: Pun labelled arguments with type constraint in function applicat=
ions.<br> (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> type<br> (Nicolas Chataing, review by G=
abriel Scherer)<br><br>- #10382: Don't repeat environment entries in Typemo=
d.check_type_decl<br> (Leo White, review by Gabriel Scherer and Flori=
an Angeletti)<br><br>- #10472: refactor caml_sys_random_seed to ease future=
Multicore changes<br> (Gabriel Scherer, review by Xavier Leroy)<br><=
br>- #10487: Move logic to get the type path from a constructor return type=
in<br> Types<br> (Nicolas Chataing, review by Jacques Garrigue=
)<br><br>- #10555: Do not use ghost locations for type constraints<br> =
; (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> types<br> (Florian Angeletti, report and review by =
Stephen Dolan)<br><br>- #10559: Evaluate signature substitutions lazily<br>=
(Stephen Dolan, review by Leo White)<br><br>- #8776, #10624: Fix com=
pilation time regression introduced in 4.08<br> (Nicol=E1s Ojeda B=E4=
r, fix by Leo White, report by Alain Frisch, review by Thomas<br> Ref=
is)<br><br>- #10618: Expose more Pprintast functions<br> (Guillaume P=
etiot, review by Gabriel Scherer)<br><br>- #10637: Outcometree: introduce a=
record type for constructors<br> (Gabriel Scherer, review by Thomas =
Refis)<br><br>- #10516: refactor the compilation of the 'switch' construct<=
br> (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>=
(Xavier Leroy, review by Gabriel Scherer)<br><br>- #10678: Expose de=
scriptions in Warnings module<br> (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> (Guillaume Petiot, review by=
Gabriel Scherer)<br><br>- #10714: Add X86_proc.with_internal_assembler for=
temporarily changing the<br> assembler used by the backend.<br> =
; (David Allsopp, review by Gabriel Scherer)<br><br>- #10715: Allow the ass=
embler and loader to be substituted in ocamlnat, for<br> example to b=
e replaced with a binary emitter.<br> (David Allsopp and Nathan Rebou=
rs, review by Louis Gesbert,<br> Nicol=E1s Ojeda B=E4r and Gabriel Sc=
herer)<br><br>- #10742: strong call-by-need reduction for shapes<br> =
(Gabriel Scherer and Nathana=EBlle Courant,<br> 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> (Chr=
istopher Zimmermann)<br><br>- #10835 Disable DT_TEXTREL warnings on x86 32 =
bit architecture by passing<br> -Wl,-z,notext in mksharedlib and mkma=
indll. Fixes relocation issues, reported<br> in #9800, making local p=
atches in Debian, Alpine, and FreeBSD superfluous.<br> (Hannes Mehner=
t with Kate Deplaix and St=E9phane Glondu, review by Xavier Leroy)<br><br>-=
#10717: Simplify the installation of man pages<br> (S=E9bastien Hind=
erer, review by David Allsopp)<br><br>- #10739: Stop installing extract_crc=
<br> (S=E9bastien Hinderer, review by David Allsopp, Daniel B=FCnzli,=
Xavier Leroy<br> and Gabriel Scherer)<br><br>- #10797: Compile with =
-d2VolatileMetadata- on supporting versions of Visual<br> Studio. Thi=
s suppresses the addition of .voltbl sections and eliminates<br> link=
ing errors in systhreads.<br> (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> 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=
> Vincent Laviron)<br><br>- #10473: Add CFI directives to RISC-=
V runtime and asmcomp.<br> This allows stacktraces to work in gdb thr=
ough C and OCaml calls.<br> (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> Losing the sharing meant that one could desynchron=
ize them between several<br> occurrences of self, allowing a method t=
o be both public and hidden,<br> which broke type soundness.<br> =
; (Jacques Garrigue, review by Leo White)<br><br>- #10542: Fix detection of=
immediate64 types through unboxed types.<br> (Leo White, review by S=
tephen Dolan and Gabriel Scherer)<br><br>- #10590: Some typechecker optimis=
ations<br> (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> 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> (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> triplet-prefixed GCC) and fix all C compi=
ler detection when CC is a path<br> rather than a basename.<br> =
(David Allsopp, report by Fabian @copy, review by Gabriel Scherer)<br><br>=
- #10690: Add --enable-native-toplevel to configure to enable installing<br=
> ocamlnat as part of the main build (default is not to install it)<b=
r> (David Allsopp, review by Gabriel Scherer)<br><br>- #10693: Fix id=
ent collision in includemod<br> (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> (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> the bytecode toplevel. In particular, this fixe=
s the loss of type variable<br> 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> (Jacques Garrigue=
, report and review by Leo White)<br><br>- #10763, #10764: fix miscompilati=
on of method delegation<br> (Alain Frisch, review by Vincent Laviron =
and Jacques Garrigue)<br><br>- #10822, #10823: Bad interaction between ambi=
valent types and subtyping<br> 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> inclusion in presence of i=
ncompatible types.<br> (Florian Angeletti, report by Craig Ferguson, =
review by Gabriel Scherer)<br><br>- #10849: Display the result of `let _ : =
<type> =3D <expr>` in the native<br> toplevel, as in the =
bytecode toplevel.<br> (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> 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> =
(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> RISC-V. Improves support for building DLLs and PIE=
s. In particular, this<br> applies to all binaries in distributions t=
hat build PIEs by default (eg<br> Gentoo and Alpine).<br> (Alex=
Fan, review by Gabriel Scherer)<br><br>- #11031: Exception handlers restor=
e the rbp register when using frame-pointers<br> on amd64.<br> =
(Fabrice Buoro, with help from Stephen Dolan, Tom Kelly and Mark Shinwell,<=
br> review by Xavier Leroy)<br><br>- #11025, #11036: Do not pass -no-=
pie to the C compiler on musl/arm64<br> (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> (Jacques Garrigue, report and r=
eview by Florian Angeletti)<br><br>- #11118: Fix integer overflow on 64-bit=
Windows when indexing bigarrays (which<br> could lead to a segmentat=
ion fault).<br> (Roven Gabriel, review by Nicol=E1s Ojeda B=E4r and X=
avier Leroy)<br></div></div></div></body></html>
--=_cc06ea44-ea88-4155-bf2b-2855b7200f62--