No subject


Tue Mar 2 06:11:16 PST 2021


</p>

<p>
Also, while not about the type systems you mention, the Rabbit and series o=
f "Lambda the Ultimate" papers are
excellent.
</p>
</div>
</div>


<div id=3D"outline-container-org262d797" class=3D"outline-3">
<h3 id=3D"org262d797">dimitris also replied</h3>
<div class=3D"outline-text-3" id=3D"text-org262d797">
<p>
Hi, maybe this is a good starting point or at least useful reading:
</p>

<ul class=3D"org-ul">
<li>"Compiling functional languages"  <a href=3D"https://xavierleroy.org/ta=
lks/compilation-agay.pdf">https://xavierleroy.org/talks/compilation-agay.pd=
f</a></li>
<li>"From Krivine=E2=80=99s machine to the Caml implementations" <a href=3D=
"https://xavierleroy.org/talks/zam-kazam05.pdf">https://xavierleroy.org/tal=
ks/zam-kazam05.pdf</a></li>
</ul>
</div>
</div>


<div id=3D"outline-container-org882780d" class=3D"outline-3">
<h3 id=3D"org882780d">Qifan Wang also replied</h3>
<div class=3D"outline-text-3" id=3D"text-org882780d">
<p>
I think Appel=E2=80=99s famous book <i>Compiling with Continuations</i> is =
still practically enough for compiling call by value
typed programs to assembly using CPS along.
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgb6cb282" class=3D"outline-2">
<h2 id=3D"3">OCaml 4.12.0 released (with 4.11.2 too)</h2>
<div class=3D"outline-text-2" id=3D"text-3">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ocaml-4-12-0-released-with-=
4-11-2-too/7358/2">https://discuss.ocaml.org/t/ocaml-4-12-0-released-with-4=
-11-2-too/7358/2</a>
</p>
</div>

<div id=3D"outline-container-org80fcfef" class=3D"outline-3">
<h3 id=3D"org80fcfef">octachron announced</h3>
<div class=3D"outline-text-3" id=3D"text-org80fcfef">
<p>
The OCaml team has the pleasure of celebrating the birthday of Jacques de V=
aucanson
by announcing the joint releases of OCaml version 4.12.0 and 4.11.2.
</p>

<p>
Some of the highlights in the 4.12.0 release are:
</p>

<ul class=3D"org-ul">
<li>Major progress in reducing the difference between the mainline and mult=
icore runtime</li>
<li>A new configuration option <code>ocaml-option-nnpchecker</code> which e=
mits an alarm
when the garbage collector finds out-of-heap pointers that could cause a cr=
ash
in the multicore runtime</li>
<li>Support for macOS/arm64</li>
<li>Mnemonic names for warnings</li>
<li>Many quality of life improvements</li>
<li>Many bug fixes</li>
</ul>

<p>
The 4.11.2 release is a collection of safe bug fixes, cherry-picked from th=
e 4.12.0 development
cycle. If you were using OCaml 4.11.1 and cannot yet upgrade to 4.12.0, thi=
s release is for you.
</p>

<p>
The full list of changes can be found in the changelogs below.
</p>

<p>
Those releases are available as OPAM switches, and as a source download her=
e:
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/archive/4.12.0.tar.gz">https:=
//github.com/ocaml/ocaml/archive/4.12.0.tar.gz</a></li>
<li><a href=3D"https://caml.inria.fr/pub/distrib/ocaml-4.12/">https://caml.=
inria.fr/pub/distrib/ocaml-4.12/</a></li>
</ul>

<p>
and there:
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/archive/4.11.2.tar.gz">https:=
//github.com/ocaml/ocaml/archive/4.11.2.tar.gz</a></li>
<li><a href=3D"https://caml.inria.fr/pub/distrib/ocaml-4.11/">https://caml.=
inria.fr/pub/distrib/ocaml-4.11/</a></li>
</ul>

<p>
Happy hacking,
</p>

<p>
&#x2013; Florian Angeletti for the OCaml team.
</p>
</div>

<div id=3D"outline-container-org57a5ed4" class=3D"outline-4">
<h4 id=3D"org57a5ed4">OCaml 4.11.2 (24 February 2021)</h4>
<div class=3D"outline-text-4" id=3D"text-org57a5ed4">
</div>
<div id=3D"outline-container-org4f5bdb2" class=3D"outline-5">
<h5 id=3D"org4f5bdb2">Build system:</h5>
<div class=3D"outline-text-5" id=3D"text-org4f5bdb2">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9938">9938</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9939">9939</a>: Define __USE_MIN=
GW_ANSI_STDIO=3D0 for the mingw-w64 ports to prevent their C99-compliant sn=
printf conflicting with ours. (David Allsopp, report by Michael Soegtrop, r=
eview by Xavier Leroy)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgaf8c843" class=3D"outline-5">
<h5 id=3D"orgaf8c843">Runtime system:</h5>
<div class=3D"outline-text-5" id=3D"text-orgaf8c843">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/10056">10056</a>: Memp=
rof: ensure young_trigger is within the bounds of the minor heap in caml_me=
mprof_renew_minor_sample (regression from <a href=3D"https://github.com/oca=
ml/ocaml/issues/8684">8684</a>) (David Allsopp, review by Guillaume Munch-M=
accagnoni and Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9654">9654</a>: More e=
fficient management of code fragments. (Xavier Leroy, review by Jacques-Hen=
ri Jourdan, Damien Doligez, and Stephen Dolan)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org9b7f4a4" class=3D"outline-5">
<h5 id=3D"org9b7f4a4">Tools:</h5>
<div class=3D"outline-text-5" id=3D"text-org9b7f4a4">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9606">9606</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9635">9635</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9637">9637</a>: fix performance regression=
 in the debugger (behaviors quadratic in the size of the debugged program) =
(Xavier Leroy, report by Jacques Garrigue and Virgile Prevosto, review by D=
avid Allsopp and Jacques-Henri Jourdan)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org1da0a93" class=3D"outline-5">
<h5 id=3D"org1da0a93">Code generation and optimizations:</h5>
<div class=3D"outline-text-5" id=3D"text-org1da0a93">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9969">9969</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9981">9981</a>: Added mergeable =
flag to ELF sections containing mergeable constants.  Fixes compatibility w=
ith the integrated assembler in clang 11.0.0. (Jacob Young, review by Nicol=
=C3=A1s Ojeda B=C3=A4r)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgafb6718" class=3D"outline-5">
<h5 id=3D"orgafb6718">Bug fixes:</h5>
<div class=3D"outline-text-5" id=3D"text-orgafb6718">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9970">9970</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/10010">10010</a>: fix the declar=
ation scope of extensible-datatype constructors. A regression that dates ba=
ck to 4.08 makes extensible-datatype constructors with inline records very =
fragile, for example: <code>type 'a t +=3D X of {x : 'a}</code> (Gabriel Sc=
herer, review by Thomas Refis and Leo White, report by Nicol=C3=A1s Ojeda B=
=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9096">9096</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/10096">10096</a>: fix a 4.11.0 p=
erformance regression in classes/objects declared within a function (Gabrie=
l Scherer, review by Leo White, report by Sacha Ayoun)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9326">9326</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/10125">10125</a>: Gc.set incorre=
ctly handles the three <code>custom_*</code> fields, causing a performance =
regression (report by Emilio Jes=C3=BAs Gallego Arias, analysis and fix by =
Stephen Dolan, code by Xavier Leroy, review by Hugo Heuzard and Gabriel Sch=
erer)</li>
</ul>
</div>
</div>
</div>

<div id=3D"outline-container-orgcd5b093" class=3D"outline-4">
<h4 id=3D"orgcd5b093">OCaml 4.12.0 (24 February 2021)</h4>
<div class=3D"outline-text-4" id=3D"text-orgcd5b093">
</div>
<div id=3D"outline-container-orgc0b2dbd" class=3D"outline-5">
<h5 id=3D"orgc0b2dbd">Supported platforms (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-orgc0b2dbd">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9699">9699</a>: add su=
pport for iOS and macOS on ARM 64 bits (Eduardo Rafael, review by Xavier Le=
roy, Nicol=C3=A1s Ojeda B=C3=A4r and Anil Madhavapeddy, additional testing =
by Michael Schmidt)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org2aba3cd" class=3D"outline-5">
<h5 id=3D"org2aba3cd">Standard library (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-org2aba3cd">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9797">9797</a>: Add Sy=
s.mkdir and Sys.rmdir. (David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4=
r, S=C3=A9bastien Hinderer and Xavier Leroy)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9765">9765</a>: add init functions to Bigarray. (Jeremy Yallop, review by =
Gabriel Scherer, Nicol=C3=A1s Ojeda B=C3=A4r, and Xavier Leroy)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9668">9668</a>: List.equal, List.compare (This could break code using "ope=
n List" by shadowing Stdlib.{equal,compare}.) (Gabriel Scherer, review by N=
icol=C3=A1s Ojeda B=C3=A4r, Daniel B=C3=BCnzli and Alain Frisch)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9066">9066</a>: a new =
Either module with <code>type 'a Either.t =3D Left of 'a | Right of 'b</cod=
e> (Gabriel Scherer, review by Daniel B=C3=BCnzli, Thomas Refis, Jeremy Yal=
lop)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9066">9066</a>: <code>=
List.partition_map : ('a -&gt; ('b, 'c) Either.t) -&gt; 'a list -&gt; 'b li=
st * 'c list</code> (Gabriel Scherer, review by Jeremy Yallop)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9865">9865</a>: add Fo=
rmat.pp_print_seq (Rapha=C3=ABl Proust, review by Nicol=C3=A1s Ojeda B=C3=
=A4r)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org8822aa7" class=3D"outline-5">
<h5 id=3D"org8822aa7">Compiler user-interface and warnings (highlights):</h=
5>
<div class=3D"outline-text-5" id=3D"text-org8822aa7">
<ul class=3D"org-ul">
<li><p>
<a href=3D"https://github.com/ocaml/ocaml/issues/9657">9657</a>: Warnings c=
an now be referred to by their mnemonic name. The names are displayed using=
 `-warn-help` and can be utilized anywhere where a warning list specificati=
on is expected.
</p>
<pre class=3D"example">
ocamlc -w +fragile-match
...[@@ocaml.warning "-fragile-match"]
</pre>
<p>
Note that only a single warning name at a time is supported for now:
"-w +foo-bar" does not work, you must use "-w +foo -w -bar".
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer, Florian Angeletti =
and
 Leo White)
</p></li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/8939">8939</a>: Comman=
d-line option to save Linear IR before emit.
(Greta Yorsh, review by Mark Shinwell, S=C3=A9bastien Hinderer and Fr=C3=A9=
d=C3=A9ric Bour)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9003">9003</a>: Start =
compilation from Emit when the input file is in Linear IR format. (Greta Yo=
rsh, review by J=C3=A9r=C3=A9mie Dimino, Gabriel Scherer and Fr=C3=A9d=C3=
=A9ric Bour)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgf3a7d16" class=3D"outline-5">
<h5 id=3D"orgf3a7d16">Language features (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-orgf3a7d16">
<ul class=3D"org-ul">
<li><p>
<b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues/950=
0">9500</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9727">9727</a=
>, <a href=3D"https://github.com/ocaml/ocaml/issues/9866">9866</a>, <a href=
=3D"https://github.com/ocaml/ocaml/issues/9870">9870</a>, <a href=3D"https:=
//github.com/ocaml/ocaml/issues/9873">9873</a>: Injectivity annotations One=
 can now mark type parameters as injective, which is useful for abstract ty=
pes:
</p>
<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><span style=3D"color: #000000; font-weight: bo=
ld;">module</span> <span style=3D"color: #228b22;">Vec</span> : <span style=
=3D"color: #000000; font-weight: bold;">sig</span> <span style=3D"color: #0=
00000; font-weight: bold;">type</span> <span style=3D"color: #a52a2a;">!</s=
pan>'a t <span style=3D"color: #000000; font-weight: bold;">end</span> =3D =
<span style=3D"color: #000000; font-weight: bold;">struct</span> <span styl=
e=3D"color: #000000; font-weight: bold;">type</span> <span style=3D"color: =
#228b22;">'a t</span> =3D 'a array <span style=3D"color: #000000; font-weig=
ht: bold;">end</span>
</pre>
</div>
<p>
On non-abstract types, this can be used to check the injectivity of
parameters. Since all parameters of record and sum types are by definition
injective, this only makes sense for type abbreviations:
</p>
<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><span style=3D"color: #000000; font-weight: bo=
ld;">type</span> <span style=3D"color: #a52a2a;">!</span>'a t =3D 'a list
</pre>
</div>
<p>
Note that this change required making the regularity check stricter.
(Jacques Garrigue, review by Jeremy Yallop and Leo White)
</p></li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgb2edb21" class=3D"outline-5">
<h5 id=3D"orgb2edb21">Runtime system (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-orgb2edb21">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9534">9534</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9947">9947</a>: Introduce a nake=
d pointers checker mode to the runtime (configure option &#x2013;enable-nak=
ed-pointers-checker).  Alarms are printed when the garbage collector finds =
out-of-heap pointers that could cause a crash in no-naked-pointers mode. (E=
nguerrand Decorne, KC Sivaramakrishnan, Xavier Leroy, Stephen Dolan, David =
Allsopp, Nicol=C3=A1s Ojeda B=C3=A4r review by Xavier Leroy, Nicol=C3=A1s O=
jeda B=C3=A4r)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/1128">1128</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/7503">750=
3</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9036">9036</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/9722">9722</a>, <a href=3D"ht=
tps://github.com/ocaml/ocaml/issues/10069">10069</a>: EINTR-based signal ha=
ndling. When a signal arrives, avoid running its OCaml handler in the middl=
e of a blocking section. Instead, allow control to return quickly to a poll=
ing point where the signal handler can safely run, ensuring that I/O locks =
are not held while it runs. A polling point was removed from caml_leave_blo=
cking_section, and one added to caml_raise. (Stephen Dolan, review by Goswi=
n von Brederlow, Xavier Leroy, Damien Doligez, Anil Madhavapeddy, Guillaume=
 Munch-Maccagnoni and Jacques- Henri Jourdan)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/5154">5154</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9569">956=
9</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9734">9734</a>: Add=
 <code>Val_none</code>, <code>Some_val</code>, <code>Is_none</code>, <code>=
Is_some</code>, <code>caml_alloc_some</code>, and <code>Tag_some</code>. As=
 these macros are sometimes defined by authors of C bindings, this change m=
ay cause warnings/errors in case of redefinition. (Nicol=C3=A1s Ojeda B=C3=
=A4r, review by Stephen Dolan, Gabriel Scherer, Mark Shinwell, and Xavier L=
eroy)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9674">9674</a>: Memprof: guarantee that an allocation callback is always r=
un in the same thread the allocation takes place (Jacques-Henri Jourdan, re=
view by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10025">10025</a>: Trac=
k custom blocks (e.g. Bigarray) with Memprof (Stephen Dolan, review by Leo =
White, Gabriel Scherer and Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9619">9619</a>: Change=
 representation of function closures so that code pointers can be easily di=
stinguished from environment variables (Xavier Leroy, review by Mark Shinwe=
ll and Damien Doligez)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9654">9654</a>: More e=
fficient management of code fragments. (Xavier Leroy, review by Jacques-Hen=
ri Jourdan, Damien Doligez, and Stephen Dolan)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org343a5d1" class=3D"outline-5">
<h5 id=3D"org343a5d1">Other libraries (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-org343a5d1">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9573">9573</a>: reimpl=
ement Unix.create_process and related functions without
Unix.fork, for better efficiency and compatibility with threads.
(Xavier Leroy, review by Gabriel Scherer and Anil Madhavapeddy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9575">9575</a>: Add Un=
ix.is_inet6_addr
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9930">9930</a>: new mo=
dule Semaphore in the thread library, implementing
counting semaphores and binary semaphores
(Xavier Leroy, review by Daniel B=C3=BCnzli and Damien Doligez,
 additional suggestions by Stephen Dolan and Craig Ferguson)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9206">9206</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9419">941=
9</a>: update documentation of the threads library;
deprecate Thread.kill, Thread.wait_read, Thread.wait_write,
and the whole ThreadUnix module.
(Xavier Leroy, review by Florian Angeletti, Guillaume Munch-Maccagnoni,
 and Gabriel Scherer)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org8a66462" class=3D"outline-5">
<h5 id=3D"org8a66462">Manual and documentation (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-org8a66462">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9755">9755</a>: Manual=
: post-processing the html generated by ocamldoc and
hevea. Improvements on design and navigation, including a mobile
version, and a quick-search functionality for the API.
(San V=C5=A9 Ng=E1=BB=8Dc, review by David Allsopp and Florian Angeletti)</=
li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9468">9468</a>: HACKIN=
G.adoc: using dune to get merlin support
(Thomas Refis, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9684">9684</a>: docume=
nt in address_class.h the runtime value model in
naked-pointers and no-naked-pointers mode
(Xavier Leroy and Gabriel Scherer)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org969341a" class=3D"outline-5">
<h5 id=3D"org969341a">Internal/compiler-libs changes (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-org969341a">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9464">9464</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9493">9493</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9520">9520</a>, <a href=3D"https://github.=
com/ocaml/ocaml/issues/9563">9563</a>, <a href=3D"https://github.com/ocaml/=
ocaml/issues/9599">9599</a>, <a href=3D"https://github.com/ocaml/ocaml/issu=
es/9608">9608</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9647">9=
647</a>: refactor the pattern-matching compiler
(Thomas Refis and Gabriel Scherer, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9696">9696</a>: ocamlt=
est now shows its log when a test fails. In addition, the log
contains the output of executed programs.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp, S=C3=A9bastien Hinde=
rer and Gabriel
Scherer)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org81aabce" class=3D"outline-5">
<h5 id=3D"org81aabce">Build system (highlights):</h5>
<div class=3D"outline-text-5" id=3D"text-org81aabce">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9824">9824</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9837">9837</a>: Honour the CFLAG=
S and CPPFLAGS variables. (S=C3=A9bastien Hinderer, review by David Allsopp=
)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10063">10063</a>: (Re-=
)enable building on illumos (SmartOS, OmniOS, &#x2026;) and
Oracle Solaris; x86_64/GCC and 64-bit SPARC/Sun PRO C compilers.
(partially revert <a href=3D"https://github.com/ocaml/ocaml/issues/2024">20=
24</a>).
(T=C3=B5ivo Leedj=C3=A4rv and Konstantin Romanov,
 review by Gabriel Scherer, S=C3=A9bastien Hinderer and Xavier Leroy)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org86b7613" class=3D"outline-5">
<h5 id=3D"org86b7613">Language features:</h5>
<div class=3D"outline-text-5" id=3D"text-org86b7613">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/1655">1655</a>: patter=
n aliases do not ignore type constraints
(Thomas Refis, review by Jacques Garrigue and Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9429">9429</a>: Add un=
ary operators containing <code>#</code> to the parser for use in ppx rewrit=
ers (Leo White, review by Damien Doligez)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgab1176b" class=3D"outline-5">
<h5 id=3D"orgab1176b">Runtime system:</h5>
<div class=3D"outline-text-5" id=3D"text-orgab1176b">
<ul class=3D"org-ul">
<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9697">9697</a>: Remove the Is_in_code_area macro and the registration of D=
LL code
areas in the page table, subsumed by the new code fragment management API
(Xavier Leroy, review by Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9756">9756</a>: garbag=
e collector colors change
removes the gray color from the major gc
(Sadiq Jaffer and Stephen Dolan reviewed by Xavier Leroy,
KC Sivaramakrishnan, Damien Doligez and Jacques-Henri Jourdan)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9513">9513</a>: Selectively initialise blocks in <code>Obj.new_block</code=
>. Reject <code>Custom_tag</code>
objects and zero-length <code>String_tag</code> objects.
(KC Sivaramakrishnan, review by David Allsopp, Xavier Leroy, Mark Shinwell
and Leo White)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9564">9564</a>: Add a =
macro to construct out-of-heap block header.
(KC Sivaramakrishnan, review by Stephen Dolan, Gabriel Scherer,
 and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9951">9951</a>: Ensure=
 that the mark stack push optimisation handles naked pointers
(KC Sivaramakrishnan, reported by Enguerrand Decorne, review by Gabriel
 Scherer, and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9678">9678</a>: Reimpl=
ement <code>Obj.reachable_words</code> using a hash table to
detect sharing, instead of temporary in-place modifications.  This
is a prerequisite for Multicore OCaml.
(Xavier Leroy, review by Jacques-Henri Jourdan and S=C3=A9bastien Hinderer)=
</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/1795">1795</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9543">9543</a>: modernize signal=
 handling on Linux i386, PowerPC, and s390x,
adding support for Musl ppc64le along the way.
(Xavier Leroy and Anil Madhavapeddy, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9648">9648</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9689">9689</a>: Update the gener=
ic hash function to take advantage
of the new representation for function closures
(Xavier Leroy, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9649">9649</a>: Update=
 the marshaler (output_value) to take advantage
of the new representation for function closures
(Xavier Leroy, review by Damien Doligez)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10050">10050</a>: upda=
te {PUSH,}OFFSETCLOSURE* bytecode instructions to match new
representation for closures
(Nathana=C3=ABl Courant, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9728">9728</a>: Take a=
dvantage of the new closure representation to simplify the
compaction algorithm and remove its dependence on the page table
(Damien Doligez, review by Jacques-Henri Jourdan and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/2195">2195</a>: Improv=
e error message in bytecode stack trace printing and load
debug information during bytecode startup if OCAMLRUNPARAM=3Db=3D2.
(David Allsopp, review by Gabriel Scherer and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9466">9466</a>: Mempro=
f: optimize random samples generation.
(Jacques-Henri Jourdan, review by Xavier Leroy and Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9628">9628</a>: Mempro=
f: disable sampling when memprof is suspended.
(Jacques-Henri Jourdan, review by Gabriel Scherer and Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10056">10056</a>: Memp=
rof: ensure young_trigger is within the bounds of the minor
heap in caml_memprof_renew_minor_sample (regression from <a href=3D"https:/=
/github.com/ocaml/ocaml/issues/8684">8684</a>)
(David Allsopp, review by Guillaume Munch-Maccagnoni and
Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9506">9506</a>: Remove=
 support for FreeBSD prior to 4.0R, that required explicit
floating-point initialization to behave like IEEE standard
(Hannes Mehnert, review by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/8807">8807</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9503">9503</a>: Use different sy=
mbols for do_local_roots on bytecode and native
(Stephen Dolan, review by David Allsopp and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9670">9670</a>: Report=
 full major collections in Gc stats.
(Leo White, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9675">9675</a>: Remove=
 the caml_static_{alloc,free,resize} primitives, now unused.
(Xavier Leroy, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9710">9710</a>: Drop "=
support" for an hypothetical JIT for OCaml bytecode
 which has never existed.
(Jacques-Henri Jourdan, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9742">9742</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9989">9989</a>: Ephemerons are n=
ow compatible with infix pointers occurring
when using mutually recursive functions.
(Jacques-Henri Jourdan, review by Fran=C3=A7ois Bobot)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9888">9888</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9890">9890</a>: Fixes a bug in t=
he <code>riscv</code> backend where register t0 was not
saved/restored when performing a GC. This could potentially lead to a
segfault.
(Nicol=C3=A1s Ojeda B=C3=A4r, report by Xavier Leroy, review by Xavier Lero=
y)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9907">9907</a>: Fix na=
tive toplevel on native Windows.
(David Allsopp, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9909">9909</a>: Remove=
 caml_code_area_start and caml_code_area_end globals (no longer
needed as the pagetable heads towards retirement).
(David Allsopp, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9949">9949</a>: Clarif=
y documentation of GC message 0x1 and make sure it is
displayed every time a major cycle is forcibly finished.
(Damien Doligez, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10062">10062</a>: set =
ARCH_INT64_PRINTF_FORMAT correctly for both modes of mingw-w64
(David Allsopp, review by Xavier Leroy)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org922f31d" class=3D"outline-5">
<h5 id=3D"org922f31d">Code generation and optimizations:</h5>
<div class=3D"outline-text-5" id=3D"text-org922f31d">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9551">9551</a>: ocamlc=
 no longer loads DLLs at link time to check that
external functions referenced from OCaml code are defined.
Instead, .so/.dll files are parsed directly by pure OCaml code.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BCnzli, Gabriel Scherer,
 Anil Madhavapeddy, and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9620">9620</a>: Limit =
the number of parameters for an uncurried or untupled
function.  Functions with more parameters than that are left
partially curried or tupled.
(Xavier Leroy, review by Mark Shinwell)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9752">9752</a>: Revise=
d handling of calling conventions for external C functions.
Provide a more precise description of the types of unboxed arguments,
so that the ARM64 iOS/macOS calling conventions can be honored.
(Xavier Leroy, review by Mark Shinwell and Eduardo Rafael)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9838">9838</a>: Ensure=
 that Cmm immediates are generated as Cconst_int where
possible, improving instruction selection.
(Stephen Dolan, review by Leo White and Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9864">9864</a>: Revise=
d recognition of immediate arguments to integer operations.
Fixes several issues that could have led to producing assembly code
that is rejected by the assembler.
(Xavier Leroy, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9969">9969</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9981">9981</a>: Added mergeable =
flag to ELF sections containing mergeable
constants.  Fixes compatibility with the integrated assembler in clang 11.0=
.0.
(Jacob Young, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgb6293fd" class=3D"outline-5">
<h5 id=3D"orgb6293fd">Standard library:</h5>
<div class=3D"outline-text-5" id=3D"text-orgb6293fd">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9781">9781</a>: add in=
jectivity annotations to parameterized abstract types
(Jeremy Yallop, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9554">9554</a>: add primitive <span class=3D"underline"><span class=3D"und=
erline">FUNCTION</span></span> that returns the name of the current method
or function, including any enclosing module or class.
(Nicol=C3=A1s Ojeda B=C3=A4r, Stephen Dolan, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9075">9075</a>: define=
 to_rev_seq in Set and Map modules.
(S=C3=A9bastien Briais, review by Gabriel Scherer and Nicol=C3=A1s Ojeda B=
=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9561">9561</a>: Unbox =
Unix.gettimeofday and Unix.time
(Stephen Dolan, review by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9570">9570</a>: Provid=
e an Atomic module with a trivial purely-sequential
implementation, to help write code that is compatible with Multicore
OCaml.
(Gabriel Scherer, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10035">10035</a>: Make=
 sure that flambda respects atomicity in the Atomic module.
(Guillaume Munch-Maccagnoni, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9571">9571</a>: Make a=
t_exit and Printexc.register_printer thread-safe.
(Guillaume Munch-Maccagnoni, review by Gabriel Scherer and Xavier Leroy)</l=
i>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9587">9587</a>: Arg: n=
ew Rest_all spec to get all rest arguments in a list
(this is similar to Rest, but makes it possible to detect when there
 are no arguments (an empty list) after the rest marker)
(Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r and David Allsopp)<=
/li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9655">9655</a>: Obj: i=
ntroduce type raw_data and functions raw_field, set_raw_field
to manipulate out-of-heap pointers in no-naked-pointer mode,
and more generally all other data that is not a well-formed OCaml value
(Xavier Leroy, review by Damien Doligez and Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9663">9663</a>: Extend=
 Printexc API for raw backtrace entries.
(Stephen Dolan, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel Scherer)<=
/li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9763">9763</a>: Add fu=
nction Hashtbl.rebuild to convert from old hash table
formats (that may have been saved to persistent storage) to the
current hash table format.  Remove leftover support for the hash
table format and generic hash function that were in use before OCaml 4.00.
(Xavier Leroy, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10070">10070</a>: Fix =
Float.Array.blit when source and destination arrays coincide.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Alain Frisch and Xavier Leroy)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgf7b2623" class=3D"outline-5">
<h5 id=3D"orgf7b2623">Other libraries:</h5>
<div class=3D"outline-text-5" id=3D"text-orgf7b2623">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/8796">8796</a>: On Win=
dows, make Unix.utimes use FILE_FLAG_BACKUP_SEMANTICS flag
to allow it to work with directories.
(Daniil Baturin, review by Damien Doligez)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9593">9593</a>: Use ne=
w flag for non-elevated symbolic links and test for Developer
Mode on Windows
(Manuel Hornung, review by David Allsopp and Nicol=C3=A1s Ojeda B=C3=A4r)</=
li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9601">9601</a>: Return EPERM for EUNKNOWN -1314 in win32unix (principally =
affects
error handling when Unix.symlink is unavailable)
(David Allsopp, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9338">9338</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9790">9790</a>: Dynlink: make su=
re *_units () functions report accurate
information before the first load.
(Daniel B=C3=BCnzli, review by Xavier Leroy and Nicol=C3=A1s Ojeda B=C3=A4r=
)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9757">9757</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9846">984=
6</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/10161">10161</a>: c=
heck proper ownership when operating over mutexes.
Now, unlocking a mutex held by another thread or not locked at all
reliably raises a Sys_error exception.  Before, it was undefined
behavior, but the documentation did not say so.
Likewise, locking a mutex already locked by the current thread
reliably raises a Sys_error exception.  Before, it could
deadlock or succeed (and do recursive locking), depending on the OS.
(Xavier Leroy, report by Guillaume Munch-Maccagnoni, review by
Guillaume Munch-Maccagnoni, David Allsopp, and Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9802">9802</a>: Ensure=
 signals are handled before Unix.kill returns
(Stephen Dolan, review by Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9869">9869</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/10073">10073</a>: Add Unix.SO_RE=
USEPORT
(Yishuai Li, review by Xavier Leroy, amended by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9906">9906</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9914">9914</a>: Add Unix._exit a=
s a way to exit the process immediately,
skipping any finalization action
(Ivan Gotovchits and Xavier Leroy, review by S=C3=A9bastien Hinderer and
 David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9958">9958</a>: Raise =
exception in case of error in Unix.setsid.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9971">9971</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9973">9973</a>: Make sure the pr=
ocess can terminate when the last thread
calls Thread.exit.
(Xavier Leroy, report by Jacques-Henri Jourdan, review by David Allsopp
and Jacques-Henri Jourdan).</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org743aae5" class=3D"outline-5">
<h5 id=3D"org743aae5">Tools:</h5>
<div class=3D"outline-text-5" id=3D"text-org743aae5">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9551">9551</a>: ocamlo=
bjinfo is now able to display information on .cmxs shared
libraries natively; it no longer requires libbfd to do so
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BCnzli, Gabriel Scherer,
 Anil Madhavapeddy, and Xavier Leroy)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9299">9299</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9795">979=
5</a>: ocamldep: do not process files during cli parsing. Fixes
various broken cli behaviours.
(Daniel B=C3=BCnzli, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org2d16012" class=3D"outline-5">
<h5 id=3D"org2d16012">Debugging and profiling:</h5>
<div class=3D"outline-text-5" id=3D"text-org2d16012">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9606">9606</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9635">9635</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9637">9637</a>: fix 4.10 performance regre=
ssion in the debugger
(behaviors quadratic in the size of the debugged program)
(Xavier Leroy, report by Jacques Garrigue and Virgile Prevosto,
review by David Allsopp and Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9948">9948</a>: Remove=
 Spacetime.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Stephen Dolan and Xavier Leroy)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org68ba094" class=3D"outline-5">
<h5 id=3D"org68ba094">Manual and documentation:</h5>
<div class=3D"outline-text-5" id=3D"text-org68ba094">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/10142">10142</a>, <a h=
ref=3D"https://github.com/ocaml/ocaml/issues/10154">10154</a>: improved ren=
dering and latex code for toplevel code examples.
(Florian Angeletti, report by John Whitington, review by Gabriel Scherer)</=
li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9745">9745</a>: Manual=
: Standard Library labeled and unlabeled documentation unified
(John Whitington, review by Nicol=C3=A1s Ojeda B=C3=A4r, David Allsopp,
 Thomas Refis, and Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9877">9877</a>: manual=
, warn that multi-index indexing operators should be defined in
conjunction of single-index ones.
(Florian Angeletti, review by Hezekiah M. Carty, Gabriel Scherer,
 and Marcello Seri)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10233">10233</a>: Docu=
ment <code>-save-ir-after scheduling</code> and update <code>-stop-after</c=
ode> options.
(Greta Yorsh, review by Gabriel Scherer and Florian Angeletti)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org3772ebb" class=3D"outline-5">
<h5 id=3D"org3772ebb">Compiler user-interface and warnings:</h5>
<div class=3D"outline-text-5" id=3D"text-org3772ebb">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/1931">1931</a>: rely o=
n levels to enforce principality in patterns
(Thomas Refis and Leo White, review by Jacques Garrigue)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/9011">9011</a>: Do not create .a/.lib files when creating a .cmxa with no =
modules. macOS ar doesn't support creating empty .a files (<a href=3D"https=
://github.com/ocaml/ocaml/issues/1094">1094</a>) and MSVC doesn't permit .l=
ib files to contain no objects. When linking with a .cmxa containing no mod=
ules, it is now not an error for there to be no .a/.lib file. (David Allsop=
p, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9560">9560</a>: Report=
 partial application warnings on type errors in applications.
(Stephen Dolan, report and testcase by whitequark, review by Gabriel Scherer
 and Thomas Refis)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9583">9583</a>: when b=
ytecode linking fails due to an unavailable module, the module
that requires it is now included in the error message.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Vincent Laviron)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9615">9615</a>: Attach=
 package type attributes to core_type.
When parsing constraints on a first class module, attributes found after the
module type were parsed but ignored. Now they are attached to the
corresponding core_type.
(Etienne Millon, review by Thomas Refis)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/6633">6633</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9673">9673</a>: Add hint when a =
module is used instead of a module type or
when a module type is used instead of a module or when a class type is used
instead of a class.
(Xavier Van de Woestyne, report by whitequark, review by Florian Angeletti
and Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9754">9754</a>: allow =
[@tailcall true] (equivalent to [@tailcall]) and
[@tailcall false] (warns if on a tailcall)
(Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9751">9751</a>: Add wa=
rning 68. Pattern-matching depending on mutable state
prevents the remaining arguments from being uncurried.
(Hugo Heuzard, review by Leo White)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9783">9783</a>: Widen =
warning 16 (Unerasable optional argument) to more cases.
(Leo White, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10008">10008</a>: Impr=
ove error message for aliases to the current compilation unit.
(Leo White, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10046">10046</a>: Link=
 all DLLs with -static-libgcc on mingw32 to prevent dependency
on libgcc_s_sjlj-1.dll with mingw-w64 runtime 8.0.0 (previously this was
only needed for dllunix.dll).
(David Allsopp, report by Andreas Hauptmann, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9634">9634</a>: Allow =
initial and repeated commas in <code>OCAMLRUNPARAM</code>.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org7039ce4" class=3D"outline-5">
<h5 id=3D"org7039ce4">Internal/compiler-libs changes:</h5>
<div class=3D"outline-text-5" id=3D"text-org7039ce4">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/8987">8987</a>: Make s=
ome locations more accurate
(Thomas Refis, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9216">9216</a>: add La=
mbda.duplicate which refreshes bound identifiers
(Gabriel Scherer, review by Pierre Chambart and Vincent Laviron)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9376">9376</a>: Remove=
 spurious Ptop_defs from #use
(Leo White, review by Damien Doligez)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9604">9604</a>: refact=
oring of the ocamltest codebase.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer and S=C3=A9bastien =
Hinderer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9498">9498</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9511">9511</a>: make the pattern=
-matching analyzer more robust to
or-pattern explosion, by stopping after the first counter-example to
exhaustivity
(Gabriel Scherer, review by Luc Maranget, Thomas Refis and Florian Angelett=
i,
 report by Alex Fedoseev through Hongbo Zhang)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9514">9514</a>: optimi=
ze pattern-matching exhaustivity analysis in the single-row case
(Gabriel Scherer, review by Stephen DOlan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9442">9442</a>: refact=
or the implementation of the [@tailcall] attribute
to allow for a structured attribute payload
(Gabriel Scherer, review by Vladimir Keleshev and Nicol=C3=A1s Ojeda B=C3=
=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9688">9688</a>: Expose=
 the main entrypoint in compilerlibs
(Stephen Dolan, review by Nicol=C3=A1s Ojeda B=C3=A4r, Greta Yorsh and Davi=
d Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9715">9715</a>: rechec=
k scope escapes after normalising paths
(Matthew Ryan, review by Gabriel Scherer and Thomas Refis)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9778">9778</a>: Fix pr=
inting for bindings where polymorphic type annotations and
attributes are present.
(Matthew Ryan, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9797">9797</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9849">9849</a>: Eliminate the ro=
utine use of external commands in ocamltest.
ocamltest no longer calls the mkdir, rm and ln external commands (at presen=
t,
the only external command ocamltest uses is diff).
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r, S=C3=A9bastien Hinde=
rer and
 Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9801">9801</a>: Don't =
ignore EOL-at-EOF differences in ocamltest.
(David Allsopp, review by Damien Doligez, much input and thought from
 Daniel B=C3=BCnzli, Damien Doligez, S=C3=A9bastien Hinderer, and Xavier Le=
roy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9889">9889</a>: more c=
aching when printing types with -short-path.
(Florian Angeletti, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9591">9591</a>: fix pp=
rint of polyvariants that start with a core_type, closed,
not low (Chet Murthy, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9590">9590</a>: fix pp=
rint of extension constructors (and exceptions) that rebind
(Chet Murthy, review by octachron@)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9963">9963</a>: Centra=
lized tracking of frontend's global state
(Fr=C3=A9d=C3=A9ric Bour and Thomas Refis, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9631">9631</a>: Named =
text sections for caml_system__code_begin/end symbols
(Greta Yorsh, review by Fr=C3=A9d=C3=A9ric Bour)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9896">9896</a>: Share =
the strings representing scopes, fixing some regression
on .cmo/.cma sizes
(Alain Frisch and Xavier Clerc, review by Gabriel Scherer)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-orgd9253a0" class=3D"outline-5">
<h5 id=3D"orgd9253a0">Build system:</h5>
<div class=3D"outline-text-5" id=3D"text-orgd9253a0">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/9332">9332</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9518">9518</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9529">9529</a>: Cease storing C dependenci=
es in the codebase. C
dependencies are generated on-the-fly in development mode. For incremental
compilation, the MSVC ports require GCC to be present.
(David Allsopp, review by S=C3=A9bastien Hinderer, YAML-fu by Stephen Dolan=
)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/7121">7121</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9558">9558</a>: Always have the =
autoconf-discovered ld in PACKLD, with
extra flags in new variable PACKLD_FLAGS. For
cross-compilation, this means the triplet-prefixed version will always be
used.
(David Allsopp, report by Adrian Nader, review by S=C3=A9bastien Hinderer)<=
/li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9527">9527</a>: stop i=
ncluding configuration when running 'clean' rules
to avoid C dependency recomputation.
(Gabriel Scherer, review by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9804">9804</a>: Build =
C stubs of libraries in otherlibs/ with debug info.
(Stephen Dolan, review by S=C3=A9bastien Hinderer and David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9938">9938</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9939">9939</a>: Define __USE_MIN=
GW_ANSI_STDIO=3D0 for the mingw-w64 ports to
prevent their C99-compliant snprintf conflicting with ours.
(David Allsopp, report by Michael Soegtrop, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9895">9895</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9523">9523</a>: Avoid conflict w=
ith C++20 by not installing VERSION to the OCaml
Standard Library directory.
(Bernhard Schommer, review by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10044">10044</a>: Alwa=
ys report the detected ARCH, MODEL and SYSTEM, even for bytecode-
only builds (fixes a "configuration regression" from 4.08 for the Windows
builds)
(David Allsopp, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10071">10071</a>: Fix =
bug in tests/misc/weaklifetime.ml that was reported in <a href=3D"https://g=
ithub.com/ocaml/ocaml/issues/10055">10055</a>
(Damien Doligez and Gabriel Scherer, report by David Allsopp)</li>
</ul>
</div>
</div>

<div id=3D"outline-container-org1394505" class=3D"outline-5">
<h5 id=3D"org1394505">Bug fixes:</h5>
<div class=3D"outline-text-5" id=3D"text-org1394505">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/7538">7538</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9669">9669</a>: Check for mispla=
ced attributes on module aliases
(Leo White, report by Thomas Leonard, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/7813">7813</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9955">9955</a>: make sure the ma=
jor GC cycle doesn't get stuck in Idle state
(Damien Doligez, report by Anders Fugmann, review by Jacques-Henri Jourdan)=
</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/7902">7902</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9556">9556</a>: Type-checker inf=
ers recursive type, even though -rectypes is
off.
(Jacques Garrigue, report by Francois Pottier, review by Leo White)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/8746">8746</a>: Hashtb=
l: Restore ongoing traversal status after filter_map_inplace
(Mehdi Bouaziz, review by Alain Frisch)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/8747">8747</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9709">9709</a>: incorrect princi=
pality warning on functional updates of records
(Jacques Garrigue, report and review by Thomas Refis)</li>

<li><b>breaking change</b> <a href=3D"https://github.com/ocaml/ocaml/issues=
/8907">8907</a>, <a href=3D"https://github.com/ocaml/ocaml/issues/9878">987=
8</a>: <code>Typemod.normalize_signature</code> uses wrong environment
(Jacques Garrigue, report and review by Leo White)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9421">9421</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9427">9427</a>: fix printing of =
<code>(::)</code> in ocamldoc
(Florian Angeletti, report by Yawar Amin, review by Damien Doligez)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9440">9440</a>: for a =
type extension constructor with parameterised arguments, REPL displayed &lt=
;poly&gt; for each as opposed to the concrete values used.
(Christian Quinn, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9433">9433</a>: Fix pa=
ckage constraints for module aliases
(Leo White, review by Jacques Garrigue)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9469">9469</a>: Better=
 backtraces for lazy values
(Leo White, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9521">9521</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9522">9522</a>: correctly fail w=
hen comparing functions
with Closure and Infix tags.
(Gabriel Scherer and Jeremy Yallop and Xavier Leroy,
 report by Twitter user @st_toHKR through Jun Furuse)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9611">9611</a>: mainta=
in order of load path entries in various situations: when passing
them to system linker, ppx contexts, etc.
(Nicol=C3=A1s Ojeda B=C3=A4r, review by J=C3=A9r=C3=A9mie Dimino and Gabrie=
l Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9633">9633</a>: ocamlt=
est: fix a bug when certain variables set in test scripts would
be ignored (eg <code>ocamlrunparam</code>).
(Nicol=C3=A1s Ojeda B=C3=A4r, review by S=C3=A9bastien Hinderer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9681">9681</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9690">9690</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9693">9693</a>: small runtime changes
for the new closure representation (<a href=3D"https://github.com/ocaml/oca=
ml/issues/9619">9619</a>)
(Xavier Leroy, Sadiq Jaffer, Gabriel Scherer,
 review by Xavier Leroy and Jacques-Henri Jourdan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9739">9739</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9747">9747</a>: Avoid calling ty=
pe variables, types that are not variables in
recursive occurrence error messages
(for instance, "Type variable int occurs inside int list")
(Florian Angeletti, report by Stephen Dolan, review by Arma=C3=ABl Gu=C3=A9=
neau)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9759">9759</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9767">9767</a>: Spurious GADT am=
biguity without -principal
(Jacques Garrigue, report by Thomas Refis,
 review by Thomas Refis and Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9799">9799</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9803">9803</a>: make pat_env poi=
nt to the correct environment
(Thomas Refis, report by Alex Fedoseev, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9825">9825</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9830">9830</a>: the C global var=
iable caml_fl_merge and the C function
caml_spacetime_my_profinfo (bytecode version) were declared and
defined with different types.  This is undefined behavior and
cancause link-time errors with link-time optimization (LTO).
(Xavier Leroy, report by Richard Jones, review by Nicol=C3=A1s Ojeda B=C3=
=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9753">9753</a>: fix bu=
ild for Android
(Eduardo Rafael, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9848">9848</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9855">9855</a>: Fix double free =
of bytecode in toplevel
(Stephen Dolan, report by Sampsa Kiiskinen, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9858">9858</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9861">9861</a>: Compiler fails w=
ith Ctype.Nondep_cannot_erase exception
(Thomas Refis, report by Philippe Veber, review by Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9860">9860</a>: wrong =
range constraint for subtract immediate on zSystems / s390x
(Xavier Leroy, review by Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9868">9868</a>, <a hre=
f=3D"https://github.com/ocaml/ocaml/issues/9872">9872</a>, <a href=3D"https=
://github.com/ocaml/ocaml/issues/9892">9892</a>: bugs in {in,out}_channel_l=
ength and seek_in
for files opened in text mode under Windows
(Xavier Leroy, report by Alain Frisch, review by Nicol=C3=A1s Ojeda B=C3=A4r
and Alain Frisch)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9925">9925</a>: Correc=
t passing -fdebug-prefix-map to flexlink on Cygwin by prefixing
it with -link.
(David Allsopp, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9927">9927</a>: Restor=
e Cygwin64 support.
(David Allsopp, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9940">9940</a>: Fix un=
boxing of allocated constants from other compilation units
(Vincent Laviron, report by Stephen Dolan, review by Xavier Leroy and
Stephen Dolan)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9991">9991</a>: Fix re=
producibility for <code>-no-alias-deps</code>
(Leo White, review by Gabriel Scherer and Florian Angeletti)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9998">9998</a>: Use Sy=
s.opaque_identity in CamlinternalLazy.force
This removes extra warning 59 messages when compiling afl-instrumented
code with flambda -O3.
(Vincent Laviron, report by Louis Gesbert, review by Gabriel Scherer and
 Pierre Chambart)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/9999">9999</a>: fix -d=
source printing of the pattern <code>(`A as x | (`B as x))</code>.
(Gabriel Scherer, report by Anton Bachin, review by Florian Angeletti)</li>

<li><p>
<a href=3D"https://github.com/ocaml/ocaml/issues/9970">9970</a>, <a href=3D=
"https://github.com/ocaml/ocaml/issues/10010">10010</a>: fix the declaratio=
n scope of extensible-datatype constructors.
A regression that dates back to 4.08 makes extensible-datatype constructors
with inline records very fragile, for example:
</p>
<div class=3D"org-src-container">
<pre class=3D"src src-ocaml"><span style=3D"color: #000000; font-weight: bo=
ld;">type</span> <span style=3D"color: #228b22;">'a t</span> +=3D <span sty=
le=3D"color: #000000; background-color: #ffffff;">X</span> <span style=3D"c=
olor: #a020f0;">of</span> {x : 'a}
</pre>
</div>
<p>
(Gabriel Scherer, review by Thomas Refis and Leo White,
 report by Nicol=C3=A1s Ojeda B=C3=A4r)
</p></li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10048">10048</a>: Fix =
bug with generalized local opens.
(Leo White, review by Thomas Refis)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/10106">10106</a>, <a h=
ref=3D"https://github.com/ocaml/ocaml/issues/10112">10112</a>: some expecte=
d-type explanations were forgotten
after some let-bindings
(Gabriel Scherer, review by Thomas Refis and Florian Angeletti,
 report by Daniil Baturin)</li>
</ul>
</div>
</div>
</div>
</div>


<div id=3D"outline-container-orge8e855f" class=3D"outline-3">
<h3 id=3D"orge8e855f">Anil Madhavapeddy then said</h3>
<div class=3D"outline-text-3" id=3D"text-orge8e855f">
<p>
And the <a href=3D"https://www.ocaml.org/manual/">4.12.0 manual is now live=
</a> on the website. Thank for you the excellent
improvement, @sanette!
</p>
</div>
</div>
</div>




<div id=3D"outline-container-orgd43763e" class=3D"outline-2">
<h2 id=3D"4">latest batteries release: v3.3.0</h2>
<div class=3D"outline-text-2" id=3D"text-4">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-latest-batteries-releas=
e-v3-3-0/7389/1">https://discuss.ocaml.org/t/ann-latest-batteries-release-v=
3-3-0/7389/1</a>
</p>
</div>

<div id=3D"outline-container-org7bbb1ef" class=3D"outline-3">
<h3 id=3D"org7bbb1ef">UnixJunkie announced</h3>
<div class=3D"outline-text-3" id=3D"text-org7bbb1ef">
<p>
The batteries maintainers are pleased to announce the latest minor release =
of OCaml batteries-included: v3.3.0.
Batteries is an open-source, community-maintained, extended standard librar=
y for OCaml.
The latest version is available in opam.
</p>

<p>
Many thanks to all the contributors for this release!
</p>

<p>
The change log follows:
</p>
</div>
<div id=3D"outline-container-org9e45cbc" class=3D"outline-4">
<h4 id=3D"org9e45cbc">v3.3.0 (minor release)</h4>
<div class=3D"outline-text-4" id=3D"text-org9e45cbc">
<ul class=3D"org-ul">
<li>Several fixes for OCaml-4.12
#994, #992,
(kit-ty-kate)</li>

<li>Support for ocaml-multicore in the Gc module
#991
(kit-ty-kate, review by Gabriel Scherer)</li>

<li>Significant work preparing switch to dune
#1025, #1024, #1023, #1022, #1021, #1020, #1019, #1017
(Gabriel Scherer, review by Francois Berenger)</li>

<li>Remove <code>-rectypes</code> from BatFingerTree and simpler implementa=
tion
#1012
(Gabriel Scherer)</li>

<li>new BatEither module; available in all OCaml versions supported by batt=
eries
#1027
The implementation comes from the stdlib and is due to Gabriel Scherer.
(Francois Berenger, review by Gabriel Scherer)</li>

<li>BatList.partition_map: <code>('a -&gt; ('b, 'c) BatEither.t) -&gt; 'a l=
ist -&gt; 'b list * 'c list</code>
#1028=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
(Francois Berenger, review by Gabriel Scherer)</li>

<li>BatSet: added several missing methods for compatibility with stdlib.=20=
=20=20=20=20=20=20=20=20=20
      The implementation of filter, map and filter_map was adapted from=20=
=20=20=20=20=20=20
      stdlib, authors of the original implementation are Xavier Leroy,=20=
=20=20=20=20=20=20=20
      Albin Coquereau and Gabriel Scherer=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
#1006, #1008=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
(Jakob Krainz, review by Gabriel Scherer)</li>

<li>BatSeq: compatibility with stdlib.Seq
#1005, #1007
(Jakob Krainz, review by Gabriel Scherer)</li>

<li>BatMap, BatSplay: find_first, find_first_opt, find_last, find_last_opt,
      to_rev_seq
      For compatibility with the stdlib.
      The implementation in BatMap was adapted from stdlib;
      authors of the original implementation are Albin Coquereau
      and Gabriel de Perthuis.
#1000, #1031
(Jakob Krainz, review by Gabriel Scherer)</li>

<li>BatArray.remove_at: <code>int -&gt; 'a array -&gt; 'a array</code>
#996
For compatibility with BatList
(Francois Berenger, review by Cedric Cellier)</li>

<li>BatDynArray: several new functions
BatDynArray now exposes almost the same functionalities as BatArray
#872
(andrepd, review by Florent Monnier and Francois Berenger)</li>

<li>BatDynArray: uniformization of exceptions and more documentation
#988
(Florent Monnier, review by Francois Berenger)</li>

<li>BatDynArray: user input checks in left, right, tail
#987
(Florent Monnier, review by Francois Berenger)</li>

<li>Fix stack overflow on Int32/64.pow with negative exponent (issue #989)
#990
(Cedric Cellier, review by Francois Berenger)</li>

<li>BatList.unfold_exn is an alias for unfold_exc.
BatRefList.find_exn is an alias for find_exc.
#978
(Cedric Cellier, review by Francois Berenger)</li>
</ul>
</div>
</div>
</div>
</div>




<div id=3D"outline-container-orgaa57ded" class=3D"outline-2">
<h2 id=3D"5">Other OCaml News</h2>
<div class=3D"outline-text-2" id=3D"text-5">
</div>
<div id=3D"outline-container-org3a86b2b" class=3D"outline-3">
<h3 id=3D"org3a86b2b">From the ocamlcore planet blog</h3>
<div class=3D"outline-text-3" id=3D"text-org3a86b2b">
<p>
Here are links from many OCaml blogs aggregated at <a href=3D"http://ocaml.=
org/community/planet/">OCaml Planet</a>.
</p>

<ul class=3D"org-ul">
<li><a href=3D"https://coq.inria.fr/news/coq-platform-2021.02.0-is-out.html=
">Coq Platform 2021.02.0 is out</a></li>
<li><a href=3D"https://coq.inria.fr/news/coq-8-13-1-is-out.html">Coq 8.13.1=
 is out</a></li>
<li><a href=3D"http://math.andrej.com/2021/02/22/burali-forti-in-hott-uf/">=
The Burali-Forti argument in HoTT/UF</a></li>
<li><a href=3D"https://tarides.com/blog/2021-02-15-partenering-for-more-div=
ersity-in-tech">Partenering for more diversity in Tech</a></li>
<li><a href=3D"https://www.ocamlpro.com/2021/02/09/opam-2-0-8-release/">opa=
m 2.0.8 release</a></li>
<li><a href=3D"https://rescript-lang.org/blog/release-9-0"> ReScript 9.0</a=
></li>
<li><a href=3D"https://opam.ocaml.org/blog/opam-2-0-8/">opam 2.0.8 release<=
/a></li>
<li><a href=3D"https://opam.ocaml.org/blog/opam-2-1-0-beta4/">opam 2.1.0~be=
ta4 released</a></li>
<li><a href=3D"http://math.andrej.com/2021/02/03/synthetic-mathematics-with=
-excursion-to-computability/">Synthetic mathematics with an excursion into =
computability theory</a></li>
<li><a href=3D"https://www.ocamlpro.com/2021/02/02/2020-at-ocamlpro/">2020 =
at OCamlPro</a></li>
</ul>
</div>
</div>
</div>




<div id=3D"outline-container-org64f2b54" class=3D"outline-2">
<h2 id=3D"org64f2b54">Old CWN</h2>
<div class=3D"outline-text-2" id=3D"text-org64f2b54">
<p>
If you happen to miss a CWN, you can <a href=3D"mailto:alan.schmitt at polytec=
hnique.org">send me a message</a> and I'll mail it to you, or go take a loo=
k at <a href=3D"https://alan.petitepomme.net/cwn/">the archive</a> or the <=
a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive=
s</a>.
</p>

<p>
If you also wish to receive it every week by mail, you may subscribe <a hre=
f=3D"http://lists.idyll.org/listinfo/caml-news-weekly/">online</a>.
</p>

<div class=3D"authorname">
<p>
<a href=3D"https://alan.petitepomme.net/">Alan Schmitt</a>
</p>

</div>
</div>
</div>
</div>
</body>
</html>


--=-=-=--



More information about the caml-news-weekly mailing list