From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=Hy3U8oYS; dkim=fail reason="signature verification failed" (1024-bit key) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=vPRuKpJk; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 622A8417D0 for ; Wed, 8 Jan 2025 22:22:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=lTpcIhts5gQJ+9aiCW/wT6S1hJ2g0/NZdRg+RxCBfnw=; b=Hy3U8oYSa32GIZMeEtTspdD05P3uXWX58g79OR3w77vLS3ThPHvUQPcO gLM3GB7XWyahRMHp6bLYR9fQ0Z+LOdprDoU9dMjZYL4CxkUW/xN+RZkvQ sXHKIx4SRrpllruBQIMflaLdwXsNruBUAbjXWgYC36/aJDDtn9EjD1uxZ 0=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@inria.fr X-IronPort-AV: E=Sophos;i="6.12,299,1728943200"; d="scan'208,217";a="202138840" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 08 Jan 2025 23:22:50 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 4B3B2E0D5D; Wed, 8 Jan 2025 23:22:49 +0100 (CET) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id A33F2E0077; Wed, 8 Jan 2025 23:22:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:subject:mime-version; bh=lTpcIhts5gQJ+9aiCW/wT6S1hJ2g0/NZdRg+RxCBfnw=; b=vPRuKpJkrVzIHptwtAEoCIe1aBNJu/CKYmV/9X+DthQzgZ/K0OCkSBHS jSKnUX97yF25HKcGtvMvcC1SVX8E1URNoTC6iJ5Aqq1J6TDKGioBxJw+h lcrVi68OQZq6HHYy/pebasN2Pny+P0WArSL6b0g7SxZIrQzImG2Kb+mYg w=; X-IronPort-AV: E=Sophos;i="6.12,299,1728943200"; d="scan'208,217";a="202138640" X-URL-LookUp-ScanningError: 1 X-MGA-submission: =?us-ascii?q?MDGJsvCloeSaW51lei9KVYaviY6nRQhwiKv1Z7?= =?us-ascii?q?06juhRp/TAkPOxMRbkxvep0QcC2e8wloBHhqJJWVdPGkyZGYNiXRwTiU?= =?us-ascii?q?T5iTC6cPMYo7divbFNZtyQzzGXp64/uz9I5R9FcmlMujoL/es0ZG5dOZ?= =?us-ascii?q?TVZ3w2YbpFoFxb4/dej+3HOw=3D=3D?= Received: from zcs2-store1.inria.fr ([128.93.142.3]) by mail2-relais-roc.national.inria.fr with ESMTP; 08 Jan 2025 23:22:41 +0100 Date: Wed, 8 Jan 2025 23:22:41 +0100 (CET) From: Florian Angeletti To: caml-announce , caml-list Message-ID: <977221150.17843519.1736374961315.JavaMail.zimbra@inria.fr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_63434ef9-2b2b-4e9e-8402-8882eeed3419" X-Originating-IP: [88.164.1.134] X-Mailer: Zimbra 10.1.3_GA_4699 (ZimbraWebClient - FF133 (Linux)/10.1.3_GA_4703) Thread-Index: BLCDeRuslg7ThfoBhj4WvZrzyRTzug== Thread-Topic: OCaml 5.3.0 released Subject: [Caml-list] OCaml 5.3.0 released Reply-To: Florian Angeletti X-Loop: caml-list@inria.fr X-Sequence: 19248 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --=_63434ef9-2b2b-4e9e-8402-8882eeed3419 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Dear Ocaml users,=20 We have the pleasure of announcing the release of OCaml version 5.3.0. dedi= cated=20 to the memory of John William Mauchly and Paul Verlaine on the anniversary = of=20 their death,=20 De la musique avant toute chose,=20 Et pour cela pr=C3=A9f=C3=A8re l=E2=80=99Impair=20 (Music first and foremost of all!=20 Choose your measure of odd not even)=20 Some of the highlights in OCaml 5.3.0 are:=20 - Syntax for deep effect handlers=20 There is now a dedicated syntax for installing deep effect handler=20 match f () with=20 | x -> x=20 | effect Random_float, k -> Effect.Deep.continue k (Random.float 1.0)=20 This new syntax adds a new `effect` keyword, which may break existing code.= =20 To improve backward compatibility, this new keyword can be disabled with=20 the new `-keywords` flags if needed for backward compatibility.=20 - Restored MSVC port=20 It is now possible to use the MSVC toolchain on Windows, restoring the last= =20 missing port from OCaml 4 (except for the native compiler support for 32-bi= t=20 architectures which is not planned)=20 - Re-introduced statistical memory profiling (statmemprof)=20 The submodule `Gc.memprof` is restored with a slightly different API. This= =20 submodule can be used to monitor memory allocation statistics inside a=20 program. In OCaml 5, each domain can be monitored independently while child= =20 domains inherit the parent domain profiling profile (if there is one active= ).=20 - utf-8 encoded Unicode source files and modest support of Unicode identifi= ers=20 type saison =3D Hiver | =C3=89t=C3=A9 | Printemps | Automne=20 The OCaml lexer has been extended to support a modest subset of Unicode=20 characters in identifiers. This is mostly intended for pedagogical use. Thi= s=20 extended support requires source files to be utf-8 encoded Unicode text.=20 - More space-efficient implementation of Dynarray=20 The internal implementation of `Dynarray` now uses an unboxed representatio= n=20 which avoids the need of storing items wrapped in a `Some x` block and thus= =20 saves some space and indirections.=20 - Improved metadata on the pairs of declarations and definitions for merlin= .=20 The metadata stored inside cmt files has been improved to better distinguis= h=20 the provenance of identifiers (previous versions could confuse an interface= and=20 implementation identifier). Similarly, the metadata now tracks more precise= ly=20 the association between declarations and definitions. For instance, in=20 module X =3D struct let x =3D 0 end=20 module M: sig=20 val x: int=20 end =3D struct=20 let x =3D 1=20 include X=20 end=20 Merlin can now determine that the definition of the `M.x` value lies inside= the module `X`.=20 And a lot of incremental changes:=20 - Around 20 new functions in the standard library (in the `Domain`, `Dynarr= ay`=20 `Format`, `List`, `Queue`, `Sys`, and `Uchar` modules).=20 - Many fixes and improvements in the runtime=20 - Improved error messages for first-class modules, functors, labelled argum= ents,=20 and type clashes.=20 - Numerous bug fixes=20 Please report any unexpected behaviours on the OCaml issue tracker(https://= github.com/ocaml/ocaml/issues)=20 and post any questions or comments you might have on our discussion forums(= https://discuss.ocaml.org).=20 The full list of changes can be found in the changelog below.=20 Happy hacking,=20 Florian Angeletti for the OCaml team.=20 Installation Instructions=20 -------------------------=20 The base compiler can be installed as an opam switch with the following com= mands:=20 opam update=20 opam switch create 5.3.0=20 The source code for the release is also directly available on:=20 * GitHub: https://github.com/ocaml/ocaml/releases/download/5.3.0/ocaml-5.3.= 0.tar.gz=20 * OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.3/ocam= l-5.3.0.tar.gz=20 Fine-Tuned Compiler Configuration=20 ---------------------------------=20 If you want to tweak the configuration of the compiler, you can switch to t= he option variant with:=20 opam update=20 opam switch create ocaml-variants.5.3.0+options = =20 where `` is a space separated list of `ocaml-option-*` package= s. For instance, for a `flambda` and `no-flat-float-array` switch:=20 opam switch create 5.3.0+flambda+nffa ocaml-variants.5.3.0+options ocaml-op= tion-flambda ocaml-option-no-flat-float-array=20 Changelog=20 --------------=20 (Changes that can break existing programs are marked with a "*")=20 Restored backend:=20 -------------------------=20 - #12954(https://github.com/ocaml/ocaml/issues/12954): Restore the MSVC por= t=20 (David Allsopp, Antonin D=C3=A9cimo, Samuel Hym, and Miod Vallat, review by= Nicol=C3=A1s=20 Ojeda B=C3=A4r)=20 - #13093(https://github.com/ocaml/ocaml/issues/13093): Allow building the M= SVC port with clang-cl.=20 (Antonin D=C3=A9cimo, review by Nicol=C3=A1s Ojeda B=C3=A4r, Samuel Hym,=20 David Allsopp and S=C3=A9bastien Hinderer)=20 Language features:=20 --------------------------=20 - #12309(https://github.com/ocaml/ocaml/issues/12309), #13158(https://githu= b.com/ocaml/ocaml/issues/13158): Add syntax support for deep effect handler= s=20 (Leo White, Tom Kelly, Anil Madhavapeddy, KC Sivaramakrishnan, Xavier Leroy= =20 and Florian Angeletti, review by the same, Hugo Heuzard, and Ulysse G=C3=A9= rard)=20 - #11736(https://github.com/ocaml/ocaml/issues/11736), #12664(https://githu= b.com/ocaml/ocaml/issues/12664), #13628(https://github.com/ocaml/ocaml/issu= es/13628): Support utf-8 encoded source files and latin-9=20 compatible identifiers.=20 (Xavier Leroy and Florian Angeletti, review by Daniel B=C3=BCnzli and=20 Jules Aguillon)=20 - #12828(https://github.com/ocaml/ocaml/issues/12828), #13283(https://githu= b.com/ocaml/ocaml/issues/13283): Add short syntax for dependent functor typ= es `(X:A) -> ...`=20 (Jeremy Yallop, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel Scherer)= =20 Type system:=20 -----------------=20 - #11891(https://github.com/ocaml/ocaml/issues/11891), #12507(https://githu= b.com/ocaml/ocaml/issues/12507): Allow to name new locally abstract types i= n constructor type=20 annotations.=20 (Jacques Garrigue, report and review by Gabriel Scherer and Florian Angelet= ti)=20 Runtime system:=20 ----------------------=20 - #11911(https://github.com/ocaml/ocaml/issues/11911), #12923(https://githu= b.com/ocaml/ocaml/issues/12923): Multicore statistical memory profiling.=20 This restores a notable OCaml 4 feature that was missing=20 in OCaml 5.=20 (Nick Barnes, review by Stephen Dolan, Jacques-Henri Jourdan=20 and Guillaume Munch-Maccagnoni).=20 - #13419(https://github.com/ocaml/ocaml/issues/13419): Fix memory bugs in r= untime events system.=20 (B. Szilvasy and Nick Barnes, review by Miod Vallat, Nick Barnes,=20 Tim McGilchrist, and Gabriel Scherer)=20 - #13364(https://github.com/ocaml/ocaml/issues/13364): Emit major slice cou= nters in the runtime events.=20 (KC Sivaramakrishnan and Sadiq Jaffer, review by Gabriel Scherer)=20 - #13382(https://github.com/ocaml/ocaml/issues/13382): Add more documentati= on for Runtime_events types=20 (Sadiq Jaffer, review by Tim McGilchrist, Miod Vallat and KC Sivaramakrishn= an)=20 - #13370(https://github.com/ocaml/ocaml/issues/13370): Fix a low-probabilit= y crash when calling Gc.counters.=20 (Demi Marie Obenour, review by Gabriel Scherer)=20 - #13272(https://github.com/ocaml/ocaml/issues/13272): Allow maximum number= of domains to be specified as a OCAMLRUNPARAM=20 parameter.=20 (KC Sivaramakrishnan, review by Guillaume Munch-Maccagnoni, Miod Vallat,=20 Gabriel Scherer, David Allsopp, request by Zachary Yedidia).=20 - #12579(https://github.com/ocaml/ocaml/issues/12579): OS-based Synchronisa= tion for Stop-the-World Sections=20 (B. Szilvasy, review by Miod Vallat, Nick Barnes, Olivier Nicole,=20 Gabriel Scherer and Damien Doligez)=20 - #12789(https://github.com/ocaml/ocaml/issues/12789): Restore caml_unregis= ter_frametable from OCaml 4=20 (Fr=C3=A9d=C3=A9ric Recoules, review by Gabriel Scherer)=20 - #13003(https://github.com/ocaml/ocaml/issues/13003): new, more consistent= names for array-creation C functions=20 (Gabriel Scherer, review by Olivier Nicole)=20 - #13013(https://github.com/ocaml/ocaml/issues/13013): introduce a `caml_re= sult` type to supersede the=20 use of 'encoded exception values' in the FFI.=20 (Gabriel Scherer, review by Damien Doligez,=20 Guillaume Munch-Maccagnoni and Xavier Leroy,=20 suggested by Guillaume Munch-Maccagnoni)=20 - #12407(https://github.com/ocaml/ocaml/issues/12407), #13226(https://githu= b.com/ocaml/ocaml/issues/13226): Resource-handling improvements: add=20 exception-returning variants for all exception-raising functions in=20 `caml/fail.h`, for the purpose of cleaning-up state and resources=20 before raising.=20 (Guillaume Munch-Maccagnoni, review by Damien Doligez, Xavier Leroy=20 and Gabriel Scherer)=20 - #13086(https://github.com/ocaml/ocaml/issues/13086): Avoid spurious major= GC slices.=20 (Damien Doligez, report by Stephen Dolan, review by Gabriel Scherer=20 and Stephen Dolan)=20 - #11779(https://github.com/ocaml/ocaml/issues/11779), #13117(https://githu= b.com/ocaml/ocaml/issues/13117): Improve logic for fiber stack alignment.= =20 (Miod Vallat, report by Damien Doligez, review by Gabriel Scherer)=20 - #12839(https://github.com/ocaml/ocaml/issues/12839): Remove ATOMIC_UINTNA= T_INIT from camlatomic.h (as part of a larger=20 cleanup of camlatomic.h)=20 (David Allsopp, review by Antonin D=C3=A9cimo, S=C3=A9bastien Hinderer, Sam= uel Hym,=20 Guillaume Munch-Maccagnoni and Miod Vallat)=20 - #13163(https://github.com/ocaml/ocaml/issues/13163): Enable frame pointer= s on macOS x86_64=20 (Tim McGilchrist, review by S=C3=A9bastien Hinderer and Fabrice Buoro)=20 - #12951(https://github.com/ocaml/ocaml/issues/12951): Constify constructor= s and flags tables in C code (take 2).=20 Now these tables will go in the readonly segment, where they belong.=20 (Antonin D=C3=A9cimo, review by David Allsopp)=20 - #10696(https://github.com/ocaml/ocaml/issues/10696): Introduce __has_attr= ibute and __has_c_attributes in=20 to test the support of specific atributes in C=20 code. Introduce fallthrough as a wrapper around the fallthrough=20 attribute.=20 (Antonin D=C3=A9cimo, review by Nicol=C3=A1s Ojeda B=C3=A4r, Xavier Leroy, = and=20 Gabriel Scherer)=20 - #13083(https://github.com/ocaml/ocaml/issues/13083): Use macros from limi= ts.h to avoid signed-integer wrap-around.=20 Introduce CAML_{U,}INTNAT_{MIN,MAX} macros to expose {u,}intnat limits.=20 (Antonin D=C3=A9cimo, review by Nick Barnes, Xavier Leroy, Gabriel Scherer,= =20 and Miod Vallat)=20 - #13239(https://github.com/ocaml/ocaml/issues/13239): Check whether the co= mpiler supports the labels as values=20 extension to enable threaded code interpretation.=20 (Antonin D=C3=A9cimo, review by Miod Vallat)=20 - #13238(https://github.com/ocaml/ocaml/issues/13238): Enable software pref= etching on x86 and x86_64 when building=20 with MSVC or clang-cl.=20 (Antonin D=C3=A9cimo, review by Miod Vallat)=20 - #13241(https://github.com/ocaml/ocaml/issues/13241), #13261(https://githu= b.com/ocaml/ocaml/issues/13261), #13271(https://github.com/ocaml/ocaml/issu= es/13271): Add CFI_SIGNAL_FRAME to ARM64 and RiscV runtimes,=20 for the purpose of displaying backtraces correctly in GDB.=20 (Tim McGilchrist, review by Miod Vallat, Gabriel Scherer and=20 KC Sivaramakrishnan)=20 - #13139(https://github.com/ocaml/ocaml/issues/13139): Simplify CAMLalign t= o always use C23/C++11 alignas or C11=20 _Alignas. Ensures that stat data is always aligned to the best=20 boundary.=20 (Antonin D=C3=A9cimo, review by Miod Vallat and Xavier Leroy)=20 - #13280(https://github.com/ocaml/ocaml/issues/13280): Check for support of= compiler attributes. Allows using=20 compiler attributes with clang-cl.=20 (Antonin D=C3=A9cimo, review by Miod Vallat)=20 - #13243(https://github.com/ocaml/ocaml/issues/13243): Enable C compiler wa= rnings internally when building with=20 clang-cl or MSVC. Provide fixes too.=20 (Antonin D=C3=A9cimo, review by Miod Vallat and Xavier Leroy)=20 - #13242(https://github.com/ocaml/ocaml/issues/13242): Define and use unrea= chable and trap annotation, and clean-up some=20 runtime assertions.=20 (Antonin D=C3=A9cimo, review by Miod Vallat, Gabriel Scherer, and David All= sopp)=20 - #13402(https://github.com/ocaml/ocaml/issues/13402), #13512(https://githu= b.com/ocaml/ocaml/issues/13512), #13549(https://github.com/ocaml/ocaml/issu= es/13549), #13553(https://github.com/ocaml/ocaml/issues/13553): Revise byte= code implementation of callbacks=20 so that it no longer produces dangling registered bytecode fragments.=20 (Xavier Leroy, report by Jan Midtgaard, analysis by Stephen Dolan,=20 review by Miod Vallat)=20 - #13407(https://github.com/ocaml/ocaml/issues/13407): Add Runtime_events.E= V_EMPTY_MINOR=20 (Thomas Leonard)=20 - #13522(https://github.com/ocaml/ocaml/issues/13522): Confirm runtime even= ts ring is still active after callback.=20 (KC Sivaramakrishnan, review by Sadiq Jaffer and Miod Vallat)=20 - #13529(https://github.com/ocaml/ocaml/issues/13529): Do not write to even= t ring after going out of stw participant set.=20 (KC Sivaramakrishnan, review by Sadiq Jaffer)=20 ### Code generation and optimizations:=20 - #13014(https://github.com/ocaml/ocaml/issues/13014): Enable compile-time = option -function-sections on all previously=20 unsupported native backends (POWER, riscv64 and s390x)=20 (Miod Vallat, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #7241(https://github.com/ocaml/ocaml/issues/7241), #12555(https://github.= com/ocaml/ocaml/issues/12555), #13076(https://github.com/ocaml/ocaml/issues= /13076), #13138(https://github.com/ocaml/ocaml/issues/13138), #13338(https:= //github.com/ocaml/ocaml/issues/13338), #13152(https://github.com/ocaml/oca= ml/issues/13152), #13153(https://github.com/ocaml/ocaml/issues/13153), #131= 54(https://github.com/ocaml/ocaml/issues/13154):=20 fix a soundness bug in the pattern-matching compiler=20 when side-effects mutate the scrutinee during matching.=20 (Gabriel Scherer, review by Nick Roberts)=20 - #13341(https://github.com/ocaml/ocaml/issues/13341): a warning when the p= attern-matching compiler pessimizes code=20 because side-effects may mutate the scrutinee during=20 matching. (This warning is disabled by default, as this rarely=20 happens and its performance impact is typically not noticeable.)=20 (Gabriel Scherer, review by Nick Roberts, Florian Angeletti=20 and David Allsopp)=20 - #13179(https://github.com/ocaml/ocaml/issues/13179): Fix evaluation of to= plevel lets in classes containing=20 local opens=20 (Vincent Laviron, review by Hugo Heuzard, Nathana=C3=ABlle Courant=20 and Gabriel Scherer)=20 - #13543(https://github.com/ocaml/ocaml/issues/13543): Remove some String-B= ytes conversion from the stdlib to behave better=20 with js_of_ocaml=20 (Hugo Heuzard, review by Gabriel Scherer)=20 Standard library:=20 ----------------------=20 - #12885(https://github.com/ocaml/ocaml/issues/12885): move Dynarray to an = unboxed representation=20 (Gabriel Scherer, suggestions by Vincent Laviron,=20 review by Olivier Nicole and Simon Cruanes, Yann Leray, Alain Frisch)=20 - #12884(https://github.com/ocaml/ocaml/issues/12884): Add `Queue.drop`=20 (L=C3=A9o Andr=C3=A8s, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel Sc= herer)=20 - #13168(https://github.com/ocaml/ocaml/issues/13168): In Array.shuffle, cl= arify the code that validates the=20 result of the user-supplied function `rand`, and improve the=20 error message that is produced when this result is invalid.=20 (Fran=C3=A7ois Pottier, review by Florian Angeletti, Daniel B=C3=BCnzli=20 and Gabriel Scherer)=20 - #12133(https://github.com/ocaml/ocaml/issues/12133): Expose support for p= rinting substrings in Format=20 (Florian Angeletti, review by Daniel B=C3=BCnzli, Gabriel Scherer=20 and Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #12869(https://github.com/ocaml/ocaml/issues/12869): Add List.take, List.= drop, List.take_while and List.drop_while=20 (Kate Deplaix and Oscar Butler-Aldridge, review by Nicol=C3=A1s Ojeda B=C3= =A4r,=20 Craig Ferguson and Gabriel Scherer)=20 - #13047(https://github.com/ocaml/ocaml/issues/13047): Add Sys.poll_actions= to (only) run pending runtime actions.=20 (Nick Barnes, review by Gabriel Scherer, Guillaume Munch-Maccagnoni, and=20 Vincent Laviron)=20 - #13144(https://github.com/ocaml/ocaml/issues/13144): Dynarray.{equal, com= pare}=20 (Gabriel Scherer,=20 review by Jeremy Yallop, Daniel B=C3=BCnzli and Olivier Nicole,=20 request by Olivier Nicole)=20 - #13171(https://github.com/ocaml/ocaml/issues/13171): expose `Domain.self_= index : unit -> int` (a somewhat-dense=20 indexing of currently-running domains) for advanced use-cases of=20 domain-indexed concurrent data structures.=20 (Gabriel Scherer,=20 review by KC Sivaramakrishnan, Miod Vallat and Nicol=C3=A1s Ojeda B=C3=A4r,= =20 report by Vesa Karvonen)=20 - #13197(https://github.com/ocaml/ocaml/issues/13197): Dynarray.blit, which= allows to extend the destination=20 dynarray (0 <=3D dst_pos <=3D dst_length).=20 (Gabriel Scherer, report by Hazem Elmasry,=20 review by Olivier Nicole, Hazem Elmasry and Nicol=C3=A1s Ojeda B=C3=A4r)=20 * (*breaking change*) #13240(https://github.com/ocaml/ocaml/issues/13240): = Add Uchar.seeded_hash, Change Uchar.hash implementation.=20 Previously, Uchar.hash was aliased to Uchar.to_int. If you need that behavi= or,=20 change your module instantiation from eg `module HT =3D Hashtbl.Make(Uchar)= ` to=20 ```=20 module HT =3D Hashtbl.Make(struct=20 ...=20 let hash =3D Uchar.to_int=20 end)=20 ```=20 If the current implementation is desired, and you have a hashtable module `= HT`=20 (produced with the `Make` functor) in persistent storage, use `HT.rebuild` = to=20 ensure it doesn't break when reading from or writing to buckets.=20 (Hazem ElMasry, review by Gabriel Scherer and Nicol=C3=A1s Ojeda B=C3=A4r)= =20 - #13318(https://github.com/ocaml/ocaml/issues/13318): Fix regression in GC= alarms, and fix them for flambda.=20 (Guillaume Munch-Maccagnoni, report by Benjamin Monate, review by=20 Vincent Laviron and Gabriel Scherer)=20 - #13296(https://github.com/ocaml/ocaml/issues/13296): Add mem, memq, find_= opt, find_index, find_map and find_mapi=20 to Dynarray.=20 (Jake H, review by Gabriel Scherer and Florian Angeletti)=20 Other libraries:=20 --------------------=20 - #11996(https://github.com/ocaml/ocaml/issues/11996): release the dependen= cy of dynlink on compilerlibs.=20 (S=C3=A9bastien Hinderer and Stephen Dolan, review by Damien Doligez and=20 Hugo Heuzard)=20 - #13326(https://github.com/ocaml/ocaml/issues/13326): Implement Unix.O_APP= END on windows.=20 (Romain Beauxis, review by Miod Vallat, Gabriel Scherer and Antonin D=C3=A9= cimo)=20 Tools:=20 --------=20 - #11716(https://github.com/ocaml/ocaml/issues/11716): ocamllex: mismatched= parentheses and curly brackets are now caught=20 by ocamllex, instead of causing invalid OCaml code to be generated.=20 (Demi Marie Obenour, review by Damien Doligez and Xavier Leroy)=20 - #12904(https://github.com/ocaml/ocaml/issues/12904): Run the testsuite wi= th ThreadSanitizer on a PR when label=20 `run-thread-sanitizer` is added=20 (Olivier Nicole, suggested by S=C3=A9bastien Hinderer and David Allsopp, re= view by=20 Gabriel Scherer)=20 * (*breaking change*) #13114(https://github.com/ocaml/ocaml/issues/13114): = Support ocamldebug remote debugging over IPv6 on all=20 platforms, and over Unix domain sockets on Windows.=20 (Antonin D=C3=A9cimo, review by Gabriel Scherer and Miod Vallat)=20 - #13136(https://github.com/ocaml/ocaml/issues/13136): Rewrite GDB extensio= ns and macros in debugger-agnostic Python, and add=20 LLDB support for them.=20 (Nick Barnes, review by Tim McGilchrist and Gabriel Scherer)=20 Toplevel:=20 ---------=20 - #12891(https://github.com/ocaml/ocaml/issues/12891): Improved styling for= initial prompt=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #13053(https://github.com/ocaml/ocaml/issues/13053): Improved display of = builtin types such as `_ list` when aliased.=20 (Samuel Vivien, review by Florian Angeletti)=20 Manual and documentation:=20 -------------------------------------=20 - #13370(https://github.com/ocaml/ocaml/issues/13370): Document that that t= emporary variables holding GCd pointers must=20 not be live across a GC.=20 (Demi Marie Obenour)=20 - #12298(https://github.com/ocaml/ocaml/issues/12298): Manual: emphasize th= at Bigarray.int refers to an OCaml integer,=20 which does not match the C int type.=20 (Edwin T=C3=B6r=C3=B6k, review by Florian Angeletti)=20 - #12868(https://github.com/ocaml/ocaml/issues/12868): Manual: simplify sty= le colours of the post-processed manual and API=20 HTML pages, and fix the search button icon=20 (Yawar Amin, review by Simon Grondin, Gabriel Scherer, and Florian Angelett= i)=20 - #12949(https://github.com/ocaml/ocaml/issues/12949): document OCaml relea= se cycles and version strings in=20 `release-info/introduction.md`.=20 (Florian Angeletti, review by Fabrice Buoro, Kate Deplaix, Damien Doligez, = and=20 Gabriel Scherer)=20 - #12976(https://github.com/ocaml/ocaml/issues/12976): Manual: use webman/<= version>/*.html and=20 webman//api/ for OCaml.org HTML manual generation=20 (Shakthi Kannan, review by Hannes Mehnert, and Florian Angeletti)=20 - #13045(https://github.com/ocaml/ocaml/issues/13045): Emphasize caution ab= out behaviour of custom block finalizers.=20 (Nick Barnes)=20 - #13216(https://github.com/ocaml/ocaml/issues/13216): document the new `ca= ml_result` type in the FFI chapter of the manual.=20 (Gabriel Scherer, review by Miod Vallat, Daniel B=C3=BCnzli, Nick Barnes,= =20 Guillaume Munch-Maccagnoni and Antonin D=C3=A9cimo)=20 - #13287(https://github.com/ocaml/ocaml/issues/13287): stdlib/sys.mli: Upda= te documentation on Sys.opaque_identity=20 following #9412(https://github.com/ocaml/ocaml/issues/9412).=20 (Matt Walker, review by Guillaume Munch-Maccagnoni and Vincent Laviron)=20 - #13295(https://github.com/ocaml/ocaml/issues/13295): Use syntax for deep = effect handlers in the effect handlers manual=20 page.=20 (KC Sivaramakrishnan, review by Anil Madhavapeddy, Florian Angeletti and Mi= od=20 Vallat)=20 - #13424(https://github.com/ocaml/ocaml/issues/13424): Fix `Gc.quick_stat` = documentation to clarify that returned fields=20 `live_words`, `live_blocks`, `free_words`, and `fragments` are not zero.=20 (Jan Midtgaard, review by Damien Doligez and KC Sivaramakrishnan)=20 - #13440(https://github.com/ocaml/ocaml/issues/13440): Update documentation= of `Gc.{control,get,set}` to reflect fields=20 not currently supported on OCaml 5.=20 (Jan Midtgaard, review by Gabriel Scherer)=20 - #13469(https://github.com/ocaml/ocaml/issues/13469), #13474(https://githu= b.com/ocaml/ocaml/issues/13474), #13535(https://github.com/ocaml/ocaml/issu= es/13535): Document that [Hashtbl.create n] creates a hash table=20 with a default minimal size, even if [n] is very small or negative.=20 (Antonin D=C3=A9cimo, Nick Bares, report by Nikolaus Huber and Jan Midtgaar= d,=20 review by Florian Angeletti, Anil Madhavapeddy, Gabriel Scherer,=20 and Miod Vallat)=20 - #13666(https://github.com/ocaml/ocaml/issues/13666): Rewrite parts of the= example code around nested lists in Chapter 6=20 (Polymorphism and its limitations -> Polymorphic recursion) giving the=20 "depth" function [in the non-polymorphically-recursive part of the example]= =20 a much more sensible behavior; also fix a typo and some formatting.=20 (Frank Steffahn, review by Florian Angeletti)=20 - #13668(https://github.com/ocaml/ocaml/issues/13668): Document the basic s= upport for unicode identifiers and the switch to=20 UTF-8 encoded Unicode text for OCaml source file=20 (Florian Angeletti, review by Nicol=C3=A1s Ojeda B=C3=A4r and Daniel B=C3= =BCnzli)=20 Compiler user-interface and warnings:=20 --------------------------------------------------=20 * (*breaking change*) #12084(https://github.com/ocaml/ocaml/issues/12084), = #13669(https://github.com/ocaml/ocaml/issues/13669), #13673(https://github.= com/ocaml/ocaml/issues/13673): Check link order when creating archive and w= hen using=20 ocamlopt.=20 (Hugo Heuzard, review by Stefan Muenzel and S=C3=A9bastien Hinderer)=20 - #12980(https://github.com/ocaml/ocaml/issues/12980): Explain type mismatc= h involving first-class modules by including=20 the module level error message=20 (Florian Angeletti, review by Vincent Laviron)=20 - #12985(https://github.com/ocaml/ocaml/issues/12985), #12988(https://githu= b.com/ocaml/ocaml/issues/12988): Better error messages for partially applie= d functors.=20 (Florian Angeletti, report by Arthur Wendling, review by Gabriel Scherer)= =20 - #13034(https://github.com/ocaml/ocaml/issues/13034), #13260(https://githu= b.com/ocaml/ocaml/issues/13260): Better error messages for mismatched funct= ion labels=20 (Florian Angeletti, report by Daniel B=C3=BCnzli, review by Gabriel Scherer= and=20 Samuel Vivien)=20 - #13051(https://github.com/ocaml/ocaml/issues/13051): Add a "Syntax error"= to error messages for invalid package signatures.=20 (Samuel Vivien, review by Gabriel Scherer)=20 - #13099(https://github.com/ocaml/ocaml/issues/13099): Fix erroneous loadin= g of cmis for some module type errors.=20 (Nick Roberts, review by Florian Angeletti)=20 - #13151(https://github.com/ocaml/ocaml/issues/13151), name conflicts expla= nation as a footnote=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #13228(https://github.com/ocaml/ocaml/issues/13228): Re-export Cmt2annot.= {iterator,binary_part} which had become hidden=20 since #11288(https://github.com/ocaml/ocaml/issues/11288) and broke ocamlbr= owser.=20 (David Allsopp, report by Jacques Garrigue, review by S=C3=A9bastien Hinder= er)=20 - #13251(https://github.com/ocaml/ocaml/issues/13251): Register printer for= errors in Emitaux=20 (Vincent Laviron, review by Miod Vallat and Florian Angeletti)=20 - #13255(https://github.com/ocaml/ocaml/issues/13255): Re-enable warning 34= for unused locally abstract types=20 (Nick Roberts, review by Chris Casinghino and Florian Angeletti)=20 - #12182(https://github.com/ocaml/ocaml/issues/12182): Improve the type cla= sh error message.=20 For example, this message:=20 This expression has type ...=20 is changed into:=20 The constant "42" has type ...=20 (Jules Aguillon, review by Gabriel Scherer and Florian Angeletti)=20 - #13471(https://github.com/ocaml/ocaml/issues/13471): add `-keywords ` flag to define the list of keywords=20 recognized by the lexer, for instance `-keywords 5.2` disable the `effect`= =20 keyword.=20 (Florian Angeletti, review by Gabriel Scherer)=20 Internal/compiler-libs changes:=20 ----------------------------------------=20 - #13286(https://github.com/ocaml/ocaml/issues/13286): Distinguish unique i= dentifiers `Shape.Uid.t` according to their=20 provenance: either an implementation or an interface.=20 (Ulysse G=C3=A9rard, review by Florian Angeletti and Leo White)=20 - #13308(https://github.com/ocaml/ocaml/issues/13308): keep track of relati= ons between declaration in the cmt files. This is=20 useful information for external tools for navigation and analysis purposis.= =20 (Ulysse G=C3=A9rard, Florian Angeletti, review by Florian Angeletti and Gab= riel=20 Scherer)=20 - #11129(https://github.com/ocaml/ocaml/issues/11129), #11148(https://githu= b.com/ocaml/ocaml/issues/11148): enforce that ppxs do not produce `parsetre= e`s with=20 an empty list of universally quantified type variables=20 (`. int -> int` instead of `'a . int -> int'`)=20 (Florian Angeletti, report by Simmo Saan, review by Gabriel Scherer)=20 - #12534(https://github.com/ocaml/ocaml/issues/12534): document and refacto= r Matching.mk_failaction_pos=20 (Gabriel Scherer, review by Vincent Laviron and Nick Roberts)=20 - #13076(https://github.com/ocaml/ocaml/issues/13076): change the handling = of Match_failure exits in the pattern-matching=20 compiler, to prepare for a complete fix for #7241(https://github.com/ocaml/= ocaml/issues/7241)=20 (Gabriel Scherer, review by Thomas Refis and Nick Roberts)=20 - #12896(https://github.com/ocaml/ocaml/issues/12896): Simplify the compila= tion of custom bytecode runtimes by explicitly=20 compiling the primitives file before calling the linker. Tidy-up both the= =20 generating code and the output itself for C code being generated by the=20 bytecode linker in `-custom` and `-output-*` modes.=20 (David Allsopp, Antonin D=C3=A9cimo and Samuel Hym, review by Vincent Lavir= on)=20 - #12932(https://github.com/ocaml/ocaml/issues/12932): Remove useless code = in Typecore.type_label_exp (was a fix for #4862(https://github.com/ocaml/oc= aml/issues/4862))=20 (Jacques Garrigue, review by Gabriel Scherer)=20 - #12943(https://github.com/ocaml/ocaml/issues/12943): Make transient_expr.= scope a bitfield, and use it to store marks.=20 Marks are automatically allocated, and removed when leaving their scope.=20 Falls back to using TransientTypeSet when marks are exhausted.=20 (Jacques Garrigue and Takafumi Saikawa, review by Basile Cl=C3=A9ment)=20 - #12946(https://github.com/ocaml/ocaml/issues/12946): Make generalization = automatic when leaving scope.=20 As a result, the `Ctype.generalize*` and `Ctype.correct_levels` functions= =20 were removed. The latter is now called `Ctype.duplicate_type`.=20 (Jacques Garrigue and Takafumi Saikawa, review by Richard Eisenberg)=20 - #12968(https://github.com/ocaml/ocaml/issues/12968): Attach location to c= onstants in the parsetree=20 (Jules Aguillon, review by Gabriel Scherer)=20 - #12959(https://github.com/ocaml/ocaml/issues/12959), #13055(https://githu= b.com/ocaml/ocaml/issues/13055): Avoid an internal error on recursive modul= e type inconsistency=20 (Florian Angeletti, review by Jacques Garrigue and Gabriel Scherer)=20 - #13049(https://github.com/ocaml/ocaml/issues/13049): graphical debugging = printer for types=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #13074(https://github.com/ocaml/ocaml/issues/13074), #13082(https://githu= b.com/ocaml/ocaml/issues/13082), #13084(https://github.com/ocaml/ocaml/issu= es/13084): refactoring in the pattern-matching compiler=20 (Gabriel Scherer, review by Thomas Refis, Vincent Laviron and Nick Roberts)= =20 - #13067(https://github.com/ocaml/ocaml/issues/13067): rework volatile memo= ry access rules under TSan to consider properly=20 aligned smaller-than-register read operations as atomic, which gets rid of= =20 false positives on s390x=20 (Miod Vallat, review by Fabien Buoro)=20 - #13162(https://github.com/ocaml/ocaml/issues/13162): Use quoted strings t= o clarify code being generated.=20 (Antonin D=C3=A9cimo, review by Miod Vallat and Gabriel Scherer)=20 - #13015(https://github.com/ocaml/ocaml/issues/13015): Emit floating-point = literals in .rodata section on ELF arm64=20 platforms (Linux, *BSD).=20 (Miod Vallat, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #13169(https://github.com/ocaml/ocaml/issues/13169), #13311(https://githu= b.com/ocaml/ocaml/issues/13311): Introduce a document data type for compile= r messages=20 rather than relying on `Format.formatter -> unit` closures.=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #13193(https://github.com/ocaml/ocaml/issues/13193): Remove the unused en= v_init field from class blocks=20 (Vincent Laviron, review by Jacques Garrigue)=20 - #13257(https://github.com/ocaml/ocaml/issues/13257): integrate MetaOCaml = in the Menhir grammar to ease MetaOCaml=20 maintenance. This is a purely internal change: there is no support=20 in the lexer, so no change to the surface OCaml grammar.=20 (Oleg Kiselyov, Gabriel Scherer and Florian Angeletti,=20 review by Jeremy Yallop)=20 - #13289(https://github.com/ocaml/ocaml/issues/13289): Use C99 for loop to = reduce the scope of the for loop iterator.=20 (Antonin D=C3=A9cimo, review by Miod Vallat and Gabriel Scherer)=20 - #13336(https://github.com/ocaml/ocaml/issues/13336): compiler-libs, split= the `Printtyp` in three to only keep=20 "user-friendly" functions in the `Printtyp` module.=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #13361(https://github.com/ocaml/ocaml/issues/13361): split runtime/array.= c functions to consistently expose=20 uniform_array and floatarray versions, use floatarray versions=20 in Float.Array.=20 (Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #13507(https://github.com/ocaml/ocaml/issues/13507): A small refactoring = to [free_vars] to make it a bit faster=20 by not allocating a list when the list is not necessary.=20 (Richard Eisenberg, review by Jacques Garrigue)=20 Build system:=20 ------------------=20 - #12909(https://github.com/ocaml/ocaml/issues/12909): Reorganise how MKEXE= _VIA_CC is built to make it correct for MSVC by=20 grouping all the linker flags at the end of the C compiler commandline=20 (David Allsopp and Samuel Hym, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #12992(https://github.com/ocaml/ocaml/issues/12992), #13009(https://githu= b.com/ocaml/ocaml/issues/13009): Check that flexlink can be executed only w= hen building in a=20 native windows environment.=20 (Romain Beauxis, review by David Allsopp and S=C3=A9bastien Hinderer)=20 - #12996(https://github.com/ocaml/ocaml/issues/12996): Only link with -lgcc= _eh when available.=20 (Romain Beauxis, review by David Allsopp and Miod Vallat)=20 * (*breaking change*) #13200(https://github.com/ocaml/ocaml/issues/13200): = Do not use CFLAGS for linking.=20 (S=C3=A9bastien Hinderer, review by Gabriel Scherer, Antonin D=C3=A9cimo,= =20 Miod Vallat and Samuel Hym)=20 - #13201(https://github.com/ocaml/ocaml/issues/13201), #13244(https://githu= b.com/ocaml/ocaml/issues/13244): Fix and speedup builds with TSan.=20 (S=C3=A9bastien Hinderer, review by Miod Vallat, Gabriel Scherer and=20 Olivier Nicole)=20 * (*breaking change*) #12578(https://github.com/ocaml/ocaml/issues/12578), = #12589(https://github.com/ocaml/ocaml/issues/12589), #13322(https://github.= com/ocaml/ocaml/issues/13322), #13519(https://github.com/ocaml/ocaml/issues= /13519): Use configured CFLAGS and CPPFLAGS *only*=20 during the build of the compiler itself. Do not use them when=20 compiling third-party C sources through the compiler. Flags for=20 compiling third-party C sources can still be specified at configure=20 time in the COMPILER_{BYTECODE,NATIVE}_{CFLAGS,CPPFLAGS}=20 configuration variables.=20 (S=C3=A9bastien Hinderer, report by William Hu, review by David Allsopp)=20 - #13285(https://github.com/ocaml/ocaml/issues/13285): continue the merge o= f the sub-makefiles into the root=20 Makefile started with #11243(https://github.com/ocaml/ocaml/issues/11243), = #11248(https://github.com/ocaml/ocaml/issues/11248), #11268(https://github.= com/ocaml/ocaml/issues/11268), #11420(https://github.com/ocaml/ocaml/issues= /11420), #11675(https://github.com/ocaml/ocaml/issues/11675),=20 #12198(https://github.com/ocaml/ocaml/issues/12198), #12321(https://github.= com/ocaml/ocaml/issues/12321), #12586(https://github.com/ocaml/ocaml/issues= /12586), #12616(https://github.com/ocaml/ocaml/issues/12616), #12706(https:= //github.com/ocaml/ocaml/issues/12706) and #13048(https://github.com/ocaml/= ocaml/issues/13048).=20 (S=C3=A9bastien Hinderer, review by David Allsopp and Florian Angeletti)=20 Bug fixes:=20 -------------=20 - #12854(https://github.com/ocaml/ocaml/issues/12854): Add a test in the re= gression suite that flags the bug #12825(https://github.com/ocaml/ocaml/iss= ues/12825).=20 (Luc Maranget)=20 - #12888(https://github.com/ocaml/ocaml/issues/12888): fix printing of unca= ught exceptions in `.cmo` files passed on the=20 command-line of the toplevel.=20 (Nicol=C3=A1s Ojeda B=C3=A4r, review by Florian Angeletti, report by Daniel= B=C3=BCnzli)=20 - #12910(https://github.com/ocaml/ocaml/issues/12910), #12920(https://githu= b.com/ocaml/ocaml/issues/12920): Fix an unsound interaction between first-c= lass modules=20 and polymorphic records by saving and restoring univar_pairs.=20 (Stephen Dolan, review by Gabriel Scherer, report by Jeremy Yallop)=20 - #12994(https://github.com/ocaml/ocaml/issues/12994): Remove un-used and u= nsafe caml_drop_continuation=20 (Tim McGilchrist, reviewed by Gabriel Scherer and Miod Vallat)=20 - #12963(https://github.com/ocaml/ocaml/issues/12963): Restore caml_runtime= _parameters implementation. This primitive allows=20 programs to query the runtime parameters supplied to an OCaml program.=20 Implementation missing since OCaml 5.0.=20 (Tim McGilchrist, reviewed by David Allsopp and Miod Vallat)=20 - #13012(https://github.com/ocaml/ocaml/issues/13012): parsing: Fix dropped= attributes after a '-' or '+'=20 The syntax '-(1 [@foo])' was incorrectly parsed as '-1'.=20 (Jules Aguillon, reviewed by Gabriel Scherer, report by Gabriel Scherer)=20 * (*breaking change*) #13070(https://github.com/ocaml/ocaml/issues/13070): = On Windows, when configured with bootstrapped flexdll, don't add=20 +flexdll to the search path when -nostdlib is specified (which then means= =20 -L no longer gets passed to the system linker).=20 (David Allsopp, review by Florian Angeletti)=20 - #13089(https://github.com/ocaml/ocaml/issues/13089): Fix bug in `runtime_= events` library which could result in garbled=20 output under Windows.=20 (B. Szilvasy, review by Nicol=C3=A1s Ojeda B=C3=A4r and Miod Vallat)=20 - #13088(https://github.com/ocaml/ocaml/issues/13088): A few type-checker b= ehaviors look at a type to see if there are=20 any labeled arguments in it. This sometimes required expansion, which=20 could, in obscure scenarios, result in superfluous type errors.=20 (Richard Eisenberg, review by Gabriel Scherer and Jacques Garrigue)=20 - #13103(https://github.com/ocaml/ocaml/issues/13103): FreeBSD/amd64: prope= rly annotate .o files with non-executable stack=20 notes (Konstantin Belousov, review by Nicol=C3=A1s Ojeda B=C3=A4r)=20 - #13150(https://github.com/ocaml/ocaml/issues/13150): improve a transitive= -closure computation algorithm in the flambda=20 middle-end to avoid a compilation time blowup on Menhir-generated code=20 (Florian Weimer, review by Gabriel Scherer and Pierre Chambart,=20 report by Richard Jones)=20 - #13166(https://github.com/ocaml/ocaml/issues/13166): Fix a MinGW/MSVC Sys= .rename regression on renaming a parent directory=20 to an empty child directory.=20 (Jan Midtgaard, review by Antonin D=C3=A9cimo, S=C3=A9bastien Hinderer, and= =20 David Allsopp)=20 - #13185(https://github.com/ocaml/ocaml/issues/13185), #13192(https://githu= b.com/ocaml/ocaml/issues/13192): Reject type-level module aliases on functo= r parameter=20 inside signatures.=20 (Jacques Garrigue, report by Richard Eisenberg, review by Florian Angeletti= )=20 - #13170(https://github.com/ocaml/ocaml/issues/13170): Fix a bug that would= result in some floating alerts `[@@@alert ...]`=20 incorrectly triggering Warning 53.=20 (Nicol=C3=A1s Ojeda B=C3=A4r, review by Chris Casinghino and Florian Angele= tti)=20 - #13203(https://github.com/ocaml/ocaml/issues/13203): Do not issue warning= 53 if the compiler is stopping before attributes=20 have been accurately marked.=20 (Chris Casinghino, review by Florian Angeletti)=20 - #13207(https://github.com/ocaml/ocaml/issues/13207): Be sure to reload th= e register caching the exception handler in=20 caml_c_call and caml_c_call_stack_args, as its value may have been changed= =20 if the OCaml stack is expanded during a callback.=20 (Miod Vallat, report by Vesa Karvonen, review by Gabriel Scherer and=20 Xavier Leroy)=20 - #13209(https://github.com/ocaml/ocaml/issues/13209): Fix configure test t= hat checks whether `ar` supports `@FILE`=20 arguments.=20 (Nicol=C3=A1s Ojeda B=C3=A4r, report by Boris D.)=20 - #13221(https://github.com/ocaml/ocaml/issues/13221): Compute more accurat= e instruction sizes for branch relocation on=20 POWER.=20 (Miod Vallat, review by Gabriel Scherer)=20 - #13252(https://github.com/ocaml/ocaml/issues/13252): Rework register assi= gnment in the interpreter code on m68k on Linux,=20 due to the %a5 register being used by Glibc.=20 (Miod Vallat, report by St=C3=A9phane Glondu, review by Gabriel Scherer and= =20 Xavier Leroy)=20 - #13247(https://github.com/ocaml/ocaml/issues/13247): Disable lib_unix/kil= l test for MacOS AMD64 with TSan, linking=20 to llvm bug report causing infinite signal loops.=20 (Tim McGilchrist, review by Olivier Nicole, Miod Vallat, S=C3=A9bastien Hin= derer=20 and Gabriel Scherer)=20 - #13234(https://github.com/ocaml/ocaml/issues/13234), #13267(https://githu= b.com/ocaml/ocaml/issues/13267): Open runtime events file in read-write mod= e on armel=20 (armv5) systems due to atomic operations limitations on that=20 platform.=20 (St=C3=A9phane Glondu, review by Miod Vallat and Vincent Laviron)=20 - #13273(https://github.com/ocaml/ocaml/issues/13273): Fix a call to test i= n configure.ac that was causing errors when=20 LDFLAGS contains several words.=20 (St=C3=A9phane Glondu, review by Miod Vallat)=20 - #13290(https://github.com/ocaml/ocaml/issues/13290): Fix uninitialized an= d out of bounds reads in runtime_events_consumer.c=20 (Edwin T=C3=B6r=C3=B6k, review by Miod Vallat and Antonin D=C3=A9cimo)=20 - #13306(https://github.com/ocaml/ocaml/issues/13306): An algorithm in the = type-checker that checks two types for equality=20 could sometimes, in theory, return the wrong answer. This patch fixes the= =20 oversight. No known program triggers the bug.=20 (Richard Eisenberg, review by Florian Angeletti)=20 - #13400(https://github.com/ocaml/ocaml/issues/13400): Initialize th->signa= l_stack to avoid free of uninitialized data=20 if the user calls caml_c_thread_unregister on the main thread.=20 (Richard W.M. Jones, review by Guillaume Munch-Maccagnoni and=20 Gabriel Scherer)=20 - #13140(https://github.com/ocaml/ocaml/issues/13140): POWER back-end: fix = issue with call to `caml_call_realloc_stack`=20 from a DLL=20 (Xavier Leroy, review by Miod Vallat)=20 - #13263(https://github.com/ocaml/ocaml/issues/13263), #13560(https://githu= b.com/ocaml/ocaml/issues/13560): fix printing true and false in toplevel an= d error=20 messages (no more unexpected \#true)=20 (Florian Angeletti, report by Samuel Vivien, review by Gabriel Scherer)=20 - #13388(https://github.com/ocaml/ocaml/issues/13388), #13540(https://githu= b.com/ocaml/ocaml/issues/13540): raises an error message (and not an intern= al compiler error)=20 when two local substitutions are incompatible (for instance `module type=20 S:=3Dsig end type t:=3D(module S)`)=20 (Florian Angeletti, report by Nailen Matschke, review by Gabriel Scherer, a= nd=20 Leo White)=20 - #13408(https://github.com/ocaml/ocaml/issues/13408): Fix misplaced debug = runtime assertion triggerable by a race=20 between domain exit and backup thread=20 (Miod Vallat and Gabriel Scherer, report by Jan Midtgaard)=20 - #13417(https://github.com/ocaml/ocaml/issues/13417): `Filename.quote_comm= and`: fix handling of forward slashes in program=20 path under Win32.=20 (Nicol=C3=A1s Ojeda B=C3=A4r, review by David Allsopp and Damien Doligez)= =20 - #13501(https://github.com/ocaml/ocaml/issues/13501): Regression on mutual= ly recursive types caused by #12180(https://github.com/ocaml/ocaml/issues/1= 2180).=20 Resuscitate Typedecl.update_type.=20 (Jacques Garrigue and Takafumi Saikawa, review by Florian Angeletti, Richar= d=20 Eisenberg and Gabriel Scherer)=20 - #13502(https://github.com/ocaml/ocaml/issues/13502): Fix misindexing rela= ted to `Gc.finalise_last` that could prevent=20 finalisers from being run.=20 (Nick Roberts, review by Mark Shinwell)=20 - #13495(https://github.com/ocaml/ocaml/issues/13495), #13514(https://githu= b.com/ocaml/ocaml/issues/13514): Fix typechecker crash while typing objects= =20 (Jacques Garrigue, report by Nicol=C3=A1s Ojeda B=C3=A4r, review by=20 Nicolas Ojeda B=C3=A4r, Gabriel Scherer, Stephen Dolan, Florian Angeletti)= =20 - #13391(https://github.com/ocaml/ocaml/issues/13391), #13551(https://githu= b.com/ocaml/ocaml/issues/13551): fix a printing bug with `-dsource` when us= ing=20 raw literal inside a locally abstract type constraint=20 (i.e. `let f: type \#for. ... `)=20 (Florian Angeletti, report by Nick Roberts, review by Richard Eisenberg)=20 - #13520(https://github.com/ocaml/ocaml/issues/13520): Fix compilation of n= ative-code version of systhreads. Bytecode fields=20 were being included in the thread descriptors.=20 (David Allsopp, review by S=C3=A9bastien Hinderer and Miod Vallat)=20 - #13541(https://github.com/ocaml/ocaml/issues/13541), #13591(https://githu= b.com/ocaml/ocaml/issues/13591): Fix headers for C++ inclusion.=20 (Antonin D=C3=A9cimo, review by Nick Barnes, report by Kate Deplaix)=20 - #13579(https://github.com/ocaml/ocaml/issues/13579), #13583(https://githu= b.com/ocaml/ocaml/issues/13583): Unsoundness involving non-injective types = + gadts=20 (Jacques Garrigue, report by @v-gb,=20 review by Richard Eisenberg and Florian Angeletti)=20 - #13598(https://github.com/ocaml/ocaml/issues/13598): Falsely triggered wa= rning 56 [unreachable-case]=20 This was caused by unproper protection of the retyping function.=20 (Jacques Garrigue, report by T=C3=B5ivo Leedj=C3=A4rv, review by Florian An= geletti)=20 - #13603(https://github.com/ocaml/ocaml/issues/13603), #13604(https://githu= b.com/ocaml/ocaml/issues/13604): fix source printing in the presence of the= escaped raw=20 identifier `\#mod`.=20 (Florian Angeletti, report by Chris Casinghino, review by Gabriel Scherer)= =20 --=_63434ef9-2b2b-4e9e-8402-8882eeed3419 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Dear Ocaml users,

We have the pleasu= re of announcing the release of OCaml version 5.3.0. dedicated
to the me= mory of John William Mauchly and Paul Verlaine on the anniversary of
the= ir death,

  De la musique avant toute chose,
  Et pour = cela pr=C3=A9f=C3=A8re l=E2=80=99Impair
(Music first and foremost of all= !
 Choose your measure of odd not even)

Some of the highligh= ts in OCaml 5.3.0 are:

- Syntax for deep effect handlers

&nbs= p; There is now a dedicated syntax for installing deep effect handler
    match f () with
    | x -> x
&= nbsp;   | effect Random_float, k -> Effect.Deep.continue k (Ra= ndom.float 1.0)

  This new syntax adds a new `effect` keyword, = which may break existing code.
  To improve backward compatibility,= this new keyword can be disabled with
  the new `-keywords` flags = if needed for backward compatibility.

- Restored MSVC port

&n= bsp; It is now possible to use the MSVC toolchain on Windows, restoring the= last
  missing port from OCaml 4 (except for the native compiler s= upport for 32-bit
  architectures which is not planned)

- Re= -introduced statistical memory profiling (statmemprof)

  The su= bmodule `Gc.memprof` is restored with a slightly different API. This
&nb= sp; submodule can be used to monitor memory allocation statistics inside a<= br>  program. In OCaml 5, each domain can be monitored independently w= hile child
  domains inherit the parent domain profiling profile (i= f there is one active).

- utf-8 encoded Unicode source files and mod= est support of Unicode identifiers

    type saison = =3D Hiver | =C3=89t=C3=A9 | Printemps | Automne

  The OCaml lex= er has been extended to support a modest subset of Unicode
  charac= ters in identifiers. This is mostly intended for pedagogical use. This
&= nbsp; extended support requires source files to be utf-8 encoded Unicode te= xt.

- More space-efficient implementation of Dynarray

  = The internal implementation of `Dynarray` now uses an unboxed representatio= n
  which avoids the need of storing items wrapped in a `Some x` bl= ock and thus
  saves some space and indirections.

- Improved= metadata on the pairs of declarations and definitions for merlin.

&= nbsp; The metadata stored inside cmt files has been improved to better dist= inguish
  the provenance of identifiers (previous versions could co= nfuse an interface and
  implementation identifier). Similarly, the= metadata now tracks more precisely
  the association between decla= rations and definitions. For instance, in

    module = X =3D struct let x =3D 0 end
    module M: sig
 &= nbsp;    val x: int
    end =3D struct
=       let x =3D 1
     = ; include X
    end

  Merlin can now determin= e that the definition of the `M.x` value lies inside the module `X`.
And a lot of incremental changes:

- Around 20 new functions in the = standard library (in the `Domain`, `Dynarray`
`Format`, `List`, `Queue`,= `Sys`, and `Uchar` modules).
- Many fixes and improvements in the runti= me
- Improved error messages for first-class modules, functors, labelled= arguments,
  and type clashes.
- Numerous bug fixes

Plea= se report any unexpected behaviours on the OCaml issue tracker(https://gith= ub.com/ocaml/ocaml/issues)
and post any questions or comments you might = have on our discussion forums(https://discuss.ocaml.org).


The fu= ll list of changes can be found in the changelog below.

Happy hackin= g,
Florian Angeletti for the OCaml team.


Installation Instruc= tions
-------------------------

The base compiler can be installe= d as an opam switch with the following commands:

    = opam update
    opam switch create 5.3.0

The sourc= e code for the release is also directly available on:

* GitHub: http= s://github.com/ocaml/ocaml/releases/download/5.3.0/ocaml-5.3.0.tar.gz
* = OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.3/ocaml-= 5.3.0.tar.gz

Fine-Tuned Compiler Configuration
------------------= ---------------

If you want to tweak the configuration of the compil= er, you can switch to the option variant with:

    op= am update
    opam switch create <switch_name> ocam= l-variants.5.3.0+options <option_list>

where `<option_list&= gt;` is a space separated list of `ocaml-option-*` packages. For instance, = for a `flambda` and `no-flat-float-array` switch:

   = opam switch create 5.3.0+flambda+nffa ocaml-variants.5.3.0+options ocaml-o= ption-flambda ocaml-option-no-flat-float-array


Changelog
----= ----------

  (Changes that can break existing programs are mark= ed with a "*")

Restored backend:
-------------------------
- #12954(https://github.com/ocaml/ocaml/issues/12954): Restore the MSVC po= rt
  (David Allsopp, Antonin D=C3=A9cimo, Samuel Hym, and Miod Vall= at, review by Nicol=C3=A1s
   Ojeda B=C3=A4r)

- #13093(= https://github.com/ocaml/ocaml/issues/13093): Allow building the MSVC port = with clang-cl.
  (Antonin D=C3=A9cimo, review by Nicol=C3=A1s Ojeda= B=C3=A4r, Samuel Hym,
   David Allsopp and S=C3=A9bastien Hin= derer)

Language features:
--------------------------

- #12= 309(https://github.com/ocaml/ocaml/issues/12309), #13158(https://github.com= /ocaml/ocaml/issues/13158): Add syntax support for deep effect handlers
=   (Leo White, Tom Kelly, Anil Madhavapeddy, KC Sivaramakrishnan, Xavie= r Leroy
   and Florian Angeletti, review by the same, Hugo Heu= zard, and Ulysse G=C3=A9rard)

- #11736(https://github.com/ocaml/ocam= l/issues/11736), #12664(https://github.com/ocaml/ocaml/issues/12664), #1362= 8(https://github.com/ocaml/ocaml/issues/13628): Support utf-8 encoded sourc= e files and latin-9
  compatible identifiers.
  (Xavier Ler= oy and Florian Angeletti, review by Daniel B=C3=BCnzli and
   = Jules Aguillon)


- #12828(https://github.com/ocaml/ocaml/issues/1= 2828), #13283(https://github.com/ocaml/ocaml/issues/13283): Add short synta= x for dependent functor types `(X:A) -> ...`
  (Jeremy Yallop, r= eview by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel Scherer)

Type syste= m:
-----------------

- #11891(https://github.com/ocaml/ocaml/issu= es/11891), #12507(https://github.com/ocaml/ocaml/issues/12507): Allow to na= me new locally abstract types in constructor type
  annotations.  (Jacques Garrigue, report and review by Gabriel Scherer and Florian= Angeletti)

Runtime system:
----------------------

- #1191= 1(https://github.com/ocaml/ocaml/issues/11911), #12923(https://github.com/o= caml/ocaml/issues/12923): Multicore statistical memory profiling.
 = This restores a notable OCaml 4 feature that was missing
  in OCam= l 5.
  (Nick Barnes, review by Stephen Dolan, Jacques-Henri Jourdan=
   and Guillaume Munch-Maccagnoni).


- #13419(https= ://github.com/ocaml/ocaml/issues/13419): Fix memory bugs in runtime events = system.
  (B. Szilvasy and Nick Barnes, review by Miod Vallat, Nick= Barnes,
   Tim McGilchrist, and Gabriel Scherer)

- #13= 364(https://github.com/ocaml/ocaml/issues/13364): Emit major slice counters= in the runtime events.
  (KC Sivaramakrishnan and Sadiq Jaffer, re= view by Gabriel Scherer)

- #13382(https://github.com/ocaml/ocaml/iss= ues/13382): Add more documentation for Runtime_events types
  (Sadi= q Jaffer, review by Tim McGilchrist, Miod Vallat and KC Sivaramakrishnan)
- #13370(https://github.com/ocaml/ocaml/issues/13370): Fix a low-prob= ability crash when calling Gc.counters.
  (Demi Marie Obenour, revi= ew by Gabriel Scherer)

- #13272(https://github.com/ocaml/ocaml/issue= s/13272): Allow maximum number of domains to be specified as a OCAMLRUNPARA= M
  parameter.
  (KC Sivaramakrishnan, review by Guillaume = Munch-Maccagnoni, Miod Vallat,
   Gabriel Scherer, David Allso= pp, request by Zachary Yedidia).

- #12579(https://github.com/ocaml/o= caml/issues/12579): OS-based Synchronisation for Stop-the-World Sections  (B. Szilvasy, review by Miod Vallat, Nick Barnes, Olivier Nicole,   Gabriel Scherer and Damien Doligez)

- #12789(https://= github.com/ocaml/ocaml/issues/12789): Restore caml_unregister_frametable fr= om OCaml 4
  (Fr=C3=A9d=C3=A9ric Recoules, review by Gabriel Schere= r)

- #13003(https://github.com/ocaml/ocaml/issues/13003): new, more = consistent names for array-creation C functions
  (Gabriel Scherer,= review by Olivier Nicole)

- #13013(https://github.com/ocaml/ocaml/i= ssues/13013): introduce a `caml_result` type to supersede the
  use= of 'encoded exception values' in the FFI.
  (Gabriel Scherer, revi= ew by Damien Doligez,
   Guillaume Munch-Maccagnoni and Xavier= Leroy,
   suggested by Guillaume Munch-Maccagnoni)

- #= 12407(https://github.com/ocaml/ocaml/issues/12407), #13226(https://github.c= om/ocaml/ocaml/issues/13226): Resource-handling improvements: add
 = exception-returning variants for all exception-raising functions in
&nb= sp; `caml/fail.h`, for the purpose of cleaning-up state and resources
&n= bsp; before raising.
  (Guillaume Munch-Maccagnoni, review by Damie= n Doligez, Xavier Leroy
   and Gabriel Scherer)

- #1308= 6(https://github.com/ocaml/ocaml/issues/13086): Avoid spurious major GC sli= ces.
  (Damien Doligez, report by Stephen Dolan, review by Gabriel = Scherer
   and Stephen Dolan)

- #11779(https://github.c= om/ocaml/ocaml/issues/11779), #13117(https://github.com/ocaml/ocaml/issues/= 13117): Improve logic for fiber stack alignment.
  (Miod Vallat, re= port by Damien Doligez, review by Gabriel Scherer)

- #12839(https://= github.com/ocaml/ocaml/issues/12839): Remove ATOMIC_UINTNAT_INIT from camla= tomic.h (as part of a larger
  cleanup of camlatomic.h)
  (= David Allsopp, review by Antonin D=C3=A9cimo, S=C3=A9bastien Hinderer, Samu= el Hym,
   Guillaume Munch-Maccagnoni and Miod Vallat)

= - #13163(https://github.com/ocaml/ocaml/issues/13163): Enable frame pointer= s on macOS x86_64
  (Tim McGilchrist, review by S=C3=A9bastien Hind= erer and Fabrice Buoro)

- #12951(https://github.com/ocaml/ocaml/issu= es/12951): Constify constructors and flags tables in C code (take 2).
&n= bsp; Now these tables will go in the readonly segment, where they belong.  (Antonin D=C3=A9cimo, review by David Allsopp)

- #10696(htt= ps://github.com/ocaml/ocaml/issues/10696): Introduce __has_attribute and __= has_c_attributes in
  <caml/misc.h> to test the support of sp= ecific atributes in C
  code. Introduce fallthrough as a wrapper ar= ound the fallthrough
  attribute.
  (Antonin D=C3=A9cimo, r= eview by Nicol=C3=A1s Ojeda B=C3=A4r, Xavier Leroy, and
   Gab= riel Scherer)

- #13083(https://github.com/ocaml/ocaml/issues/13083):= Use macros from limits.h to avoid signed-integer wrap-around.
  In= troduce CAML_{U,}INTNAT_{MIN,MAX} macros to expose {u,}intnat limits.
&n= bsp; (Antonin D=C3=A9cimo, review by Nick Barnes, Xavier Leroy, Gabriel Sch= erer,
   and Miod Vallat)

- #13239(https://github.com/o= caml/ocaml/issues/13239): Check whether the compiler supports the labels as= values
  extension to enable threaded code interpretation.
&nbs= p; (Antonin D=C3=A9cimo, review by Miod Vallat)

- #13238(https://git= hub.com/ocaml/ocaml/issues/13238): Enable software prefetching on x86 and x= 86_64 when building
  with MSVC or clang-cl.
  (Antonin D= =C3=A9cimo, review by Miod Vallat)

- #13241(https://github.com/ocaml= /ocaml/issues/13241), #13261(https://github.com/ocaml/ocaml/issues/13261), = #13271(https://github.com/ocaml/ocaml/issues/13271): Add CFI_SIGNAL_FRAME t= o ARM64 and RiscV runtimes,
  for the purpose of displaying backtra= ces correctly in GDB.
  (Tim McGilchrist, review by Miod Vallat, Ga= briel Scherer and
   KC Sivaramakrishnan)

- #13139(http= s://github.com/ocaml/ocaml/issues/13139): Simplify CAMLalign to always use = C23/C++11 alignas or C11
  _Alignas. Ensures that stat data is alwa= ys aligned to the best
  boundary.
  (Antonin D=C3=A9cimo, = review by Miod Vallat and Xavier Leroy)

- #13280(https://github.com/= ocaml/ocaml/issues/13280): Check for support of compiler attributes. Allows= using
  compiler attributes with clang-cl.
  (Antonin D=C3= =A9cimo, review by Miod Vallat)

- #13243(https://github.com/ocaml/oc= aml/issues/13243): Enable C compiler warnings internally when building with=
  clang-cl or MSVC. Provide fixes too.
  (Antonin D=C3=A9c= imo, review by Miod Vallat and Xavier Leroy)

- #13242(https://github= .com/ocaml/ocaml/issues/13242): Define and use unreachable and trap annotat= ion, and clean-up some
  runtime assertions.
  (Antonin D= =C3=A9cimo, review by Miod Vallat, Gabriel Scherer, and David Allsopp)
<= br>- #13402(https://github.com/ocaml/ocaml/issues/13402), #13512(https://gi= thub.com/ocaml/ocaml/issues/13512), #13549(https://github.com/ocaml/ocaml/i= ssues/13549), #13553(https://github.com/ocaml/ocaml/issues/13553): Revise b= ytecode implementation of callbacks
  so that it no longer produces= dangling registered bytecode fragments.
  (Xavier Leroy, report by= Jan Midtgaard, analysis by Stephen Dolan,
   review by Miod V= allat)

- #13407(https://github.com/ocaml/ocaml/issues/13407): Add Ru= ntime_events.EV_EMPTY_MINOR
  (Thomas Leonard)

- #13522(http= s://github.com/ocaml/ocaml/issues/13522): Confirm runtime events ring is st= ill active after callback.
  (KC Sivaramakrishnan, review by Sadiq = Jaffer and Miod Vallat)

- #13529(https://github.com/ocaml/ocaml/issu= es/13529): Do not write to event ring after going out of stw participant se= t.
  (KC Sivaramakrishnan, review by Sadiq Jaffer)

### Code = generation and optimizations:

- #13014(https://github.com/ocaml/ocam= l/issues/13014): Enable compile-time option -function-sections on all previ= ously
  unsupported native backends (POWER, riscv64 and s390x)
&= nbsp; (Miod Vallat, review by Nicol=C3=A1s Ojeda B=C3=A4r)

- #7241(h= ttps://github.com/ocaml/ocaml/issues/7241), #12555(https://github.com/ocaml= /ocaml/issues/12555), #13076(https://github.com/ocaml/ocaml/issues/13076), = #13138(https://github.com/ocaml/ocaml/issues/13138), #13338(https://github.= com/ocaml/ocaml/issues/13338), #13152(https://github.com/ocaml/ocaml/issues= /13152), #13153(https://github.com/ocaml/ocaml/issues/13153), #13154(https:= //github.com/ocaml/ocaml/issues/13154):
  fix a soundness bug in th= e pattern-matching compiler
  when side-effects mutate the scrutine= e during matching.
  (Gabriel Scherer, review by Nick Roberts)
<= br>- #13341(https://github.com/ocaml/ocaml/issues/13341): a warning when th= e pattern-matching compiler pessimizes code
  because side-effects = may mutate the scrutinee during
  matching. (This warning is disabl= ed by default, as this rarely
  happens and its performance impact = is typically not noticeable.)
  (Gabriel Scherer, review by Nick Ro= berts, Florian Angeletti
   and David Allsopp)

- #13179= (https://github.com/ocaml/ocaml/issues/13179): Fix evaluation of toplevel l= ets in classes containing
  local opens
  (Vincent Laviron,= review by Hugo Heuzard, Nathana=C3=ABlle Courant
   and Gabri= el Scherer)

- #13543(https://github.com/ocaml/ocaml/issues/13543): R= emove some String-Bytes conversion from the stdlib to behave better
&nbs= p; with js_of_ocaml
  (Hugo Heuzard, review by Gabriel Scherer)
=
Standard library:
----------------------

- #12885(https://git= hub.com/ocaml/ocaml/issues/12885): move Dynarray to an unboxed representati= on
  (Gabriel Scherer, suggestions by Vincent Laviron,
 &nb= sp; review by Olivier Nicole and Simon Cruanes, Yann Leray, Alain Frisch)

- #12884(https://github.com/ocaml/ocaml/issues/12884): Add `Queue= .drop`
  (L=C3=A9o Andr=C3=A8s, review by Nicol=C3=A1s Ojeda B=C3= =A4r and Gabriel Scherer)

- #13168(https://github.com/ocaml/ocaml/is= sues/13168): In Array.shuffle, clarify the code that validates the
 = ; result of the user-supplied function `rand`, and improve the
  er= ror message that is produced when this result is invalid.
  (Fran= =C3=A7ois Pottier, review by Florian Angeletti, Daniel B=C3=BCnzli
 = ;  and Gabriel Scherer)

- #12133(https://github.com/ocaml/ocaml= /issues/12133): Expose support for printing substrings in Format
  = (Florian Angeletti, review by Daniel B=C3=BCnzli, Gabriel Scherer
 =   and Nicol=C3=A1s Ojeda B=C3=A4r)

- #12869(https://github.com/= ocaml/ocaml/issues/12869): Add List.take, List.drop, List.take_while and Li= st.drop_while
  (Kate Deplaix and Oscar Butler-Aldridge, review by = Nicol=C3=A1s Ojeda B=C3=A4r,
   Craig Ferguson and Gabriel Sch= erer)

- #13047(https://github.com/ocaml/ocaml/issues/13047): Add Sys= .poll_actions to (only) run pending runtime actions.
  (Nick Barnes= , review by Gabriel Scherer, Guillaume Munch-Maccagnoni, and
  Vinc= ent Laviron)

- #13144(https://github.com/ocaml/ocaml/issues/13144): = Dynarray.{equal, compare}
  (Gabriel Scherer,
   revie= w by Jeremy Yallop, Daniel B=C3=BCnzli and Olivier Nicole,
   = request by Olivier Nicole)

- #13171(https://github.com/ocaml/ocaml/i= ssues/13171): expose `Domain.self_index : unit -> int` (a somewhat-dense=
  indexing of currently-running domains) for advanced use-cases of=
  domain-indexed concurrent data structures.
  (Gabriel Sc= herer,
   review by KC Sivaramakrishnan, Miod Vallat and Nicol= =C3=A1s Ojeda B=C3=A4r,
   report by Vesa Karvonen)

- #= 13197(https://github.com/ocaml/ocaml/issues/13197): Dynarray.blit, which al= lows to extend the destination
  dynarray (0 <=3D dst_pos <= =3D dst_length).
  (Gabriel Scherer, report by Hazem Elmasry,
&n= bsp;  review by Olivier Nicole, Hazem Elmasry and Nicol=C3=A1s Ojeda B= =C3=A4r)

* (*breaking change*) #13240(https://github.com/ocaml/ocaml= /issues/13240): Add Uchar.seeded_hash, Change Uchar.hash implementation.  Previously, Uchar.hash was aliased to Uchar.to_int. If you need tha= t behavior,
  change your module instantiation from eg `module HT = =3D Hashtbl.Make(Uchar)` to
  ```
    module HT = =3D Hashtbl.Make(struct
      ...
 &nbs= p;    let hash =3D Uchar.to_int
    end)  ```
  If the current implementation is desired, and you ha= ve a hashtable module `HT`
  (produced with the `Make` functor) in = persistent storage, use `HT.rebuild` to
  ensure it doesn't break w= hen reading from or writing to buckets.
  (Hazem ElMasry, review by= Gabriel Scherer and Nicol=C3=A1s Ojeda B=C3=A4r)

- #13318(https://g= ithub.com/ocaml/ocaml/issues/13318): Fix regression in GC alarms, and fix t= hem for flambda.
  (Guillaume Munch-Maccagnoni, report by Benjamin = Monate, review by
   Vincent Laviron and Gabriel Scherer)
<= br>- #13296(https://github.com/ocaml/ocaml/issues/13296): Add mem, memq, fi= nd_opt, find_index, find_map and find_mapi
  to Dynarray.
 = (Jake H, review by Gabriel Scherer and Florian Angeletti)

Other lib= raries:
--------------------

- #11996(https://github.com/ocaml/oc= aml/issues/11996): release the dependency of dynlink on compilerlibs.
&n= bsp; (S=C3=A9bastien Hinderer and Stephen Dolan, review by Damien Doligez a= nd
  Hugo Heuzard)

- #13326(https://github.com/ocaml/ocaml/i= ssues/13326): Implement Unix.O_APPEND on windows.
  (Romain Beauxis= , review by Miod Vallat, Gabriel Scherer and Antonin D=C3=A9cimo)

To= ols:
--------

- #11716(https://github.com/ocaml/ocaml/issues/1171= 6): ocamllex: mismatched parentheses and curly brackets are now caught
&= nbsp; by ocamllex, instead of causing invalid OCaml code to be generated.  (Demi Marie Obenour, review by Damien Doligez and Xavier Leroy)
- #12904(https://github.com/ocaml/ocaml/issues/12904): Run the testsui= te with ThreadSanitizer on a PR when label
  `run-thread-sanitizer`= is added
  (Olivier Nicole, suggested by S=C3=A9bastien Hinderer a= nd David Allsopp, review by
   Gabriel Scherer)

* (*bre= aking change*) #13114(https://github.com/ocaml/ocaml/issues/13114): Support= ocamldebug remote debugging over IPv6 on all
  platforms, and over= Unix domain sockets on Windows.
  (Antonin D=C3=A9cimo, review by = Gabriel Scherer and Miod Vallat)

- #13136(https://github.com/ocaml/o= caml/issues/13136): Rewrite GDB extensions and macros in debugger-agnostic = Python, and add
  LLDB support for them.
  (Nick Barnes, re= view by Tim McGilchrist and Gabriel Scherer)

Toplevel:
---------<= br>
- #12891(https://github.com/ocaml/ocaml/issues/12891): Improved styl= ing for initial prompt
  (Florian Angeletti, review by Gabriel Sche= rer)

- #13053(https://github.com/ocaml/ocaml/issues/13053): Improved= display of builtin types such as `_ list` when aliased.
  (Samuel = Vivien, review by Florian Angeletti)

Manual and documentation:
--= -----------------------------------

- #13370(https://github.com/ocam= l/ocaml/issues/13370): Document that that temporary variables holding GCd p= ointers must
  not be live across a GC.
  (Demi Marie Obeno= ur)

- #12298(https://github.com/ocaml/ocaml/issues/12298): Manual: e= mphasize that Bigarray.int refers to an OCaml integer,
  which does= not match the C int type.
  (Edwin T=C3=B6r=C3=B6k, review by Flor= ian Angeletti)

- #12868(https://github.com/ocaml/ocaml/issues/12868)= : Manual: simplify style colours of the post-processed manual and API
&n= bsp; HTML pages, and fix the search button icon
  (Yawar Amin, revi= ew by Simon Grondin, Gabriel Scherer, and Florian Angeletti)

- #1294= 9(https://github.com/ocaml/ocaml/issues/12949): document OCaml release cycl= es and version strings in
   `release-info/introduction.md`.  (Florian Angeletti, review by Fabrice Buoro, Kate Deplaix, Damien = Doligez, and
   Gabriel Scherer)

- #12976(https://githu= b.com/ocaml/ocaml/issues/12976): Manual: use webman/<version>/*.html = and
  webman/<version>/api/ for OCaml.org HTML manual generat= ion
  (Shakthi Kannan, review by Hannes Mehnert, and Florian Angele= tti)

- #13045(https://github.com/ocaml/ocaml/issues/13045): Emphasiz= e caution about behaviour of custom block finalizers.
  (Nick Barne= s)

- #13216(https://github.com/ocaml/ocaml/issues/13216): document t= he new `caml_result` type in the FFI chapter of the manual.
  (Gabr= iel Scherer, review by Miod Vallat, Daniel B=C3=BCnzli, Nick Barnes,
&nb= sp;  Guillaume Munch-Maccagnoni and Antonin D=C3=A9cimo)

- #132= 87(https://github.com/ocaml/ocaml/issues/13287): stdlib/sys.mli: Update doc= umentation on Sys.opaque_identity
  following #9412(https://github.= com/ocaml/ocaml/issues/9412).
  (Matt Walker, review by Guillaume M= unch-Maccagnoni and Vincent Laviron)

- #13295(https://github.com/oca= ml/ocaml/issues/13295): Use syntax for deep effect handlers in the effect h= andlers manual
  page.
  (KC Sivaramakrishnan, review by An= il Madhavapeddy, Florian Angeletti and Miod
   Vallat)

= - #13424(https://github.com/ocaml/ocaml/issues/13424): Fix `Gc.quick_stat` = documentation to clarify that returned fields
  `live_words`, `live= _blocks`, `free_words`, and `fragments` are not zero.
  (Jan Midtga= ard, review by Damien Doligez and KC Sivaramakrishnan)

- #13440(http= s://github.com/ocaml/ocaml/issues/13440): Update documentation of `Gc.{cont= rol,get,set}` to reflect fields
  not currently supported on OCaml = 5.
  (Jan Midtgaard, review by Gabriel Scherer)

- #13469(htt= ps://github.com/ocaml/ocaml/issues/13469), #13474(https://github.com/ocaml/= ocaml/issues/13474), #13535(https://github.com/ocaml/ocaml/issues/13535): D= ocument that [Hashtbl.create n] creates a hash table
  with a defau= lt minimal size, even if [n] is very small or negative.
  (Antonin = D=C3=A9cimo, Nick Bares, report by Nikolaus Huber and Jan Midtgaard,
&nb= sp;  review by Florian Angeletti, Anil Madhavapeddy, Gabriel Scherer,<= br>   and Miod Vallat)

- #13666(https://github.com/ocaml/o= caml/issues/13666): Rewrite parts of the example code around nested lists i= n Chapter 6
  (Polymorphism and its limitations -> Polymorphic r= ecursion) giving the
  "depth" function [in the non-polymorphically= -recursive part of the example]
  a much more sensible behavior; al= so fix a typo and some formatting.
  (Frank Steffahn, review by Flo= rian Angeletti)

- #13668(https://github.com/ocaml/ocaml/issues/13668= ): Document the basic support for unicode identifiers and the switch to
=    UTF-8 encoded Unicode text for OCaml source file
  (Fl= orian Angeletti, review by Nicol=C3=A1s Ojeda B=C3=A4r and Daniel B=C3=BCnz= li)

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

* (*breaking change*) #12084(https://git= hub.com/ocaml/ocaml/issues/12084), #13669(https://github.com/ocaml/ocaml/is= sues/13669), #13673(https://github.com/ocaml/ocaml/issues/13673): Check lin= k order when creating archive and when using
   ocamlopt.
&= nbsp; (Hugo Heuzard, review by Stefan Muenzel and S=C3=A9bastien Hinderer)<= br>
- #12980(https://github.com/ocaml/ocaml/issues/12980): Explain type = mismatch involving first-class modules by including
  the module le= vel error message
  (Florian Angeletti, review by Vincent Laviron)<= br>
- #12985(https://github.com/ocaml/ocaml/issues/12985), #12988(https:= //github.com/ocaml/ocaml/issues/12988): Better error messages for partially= applied functors.
  (Florian Angeletti, report by Arthur Wendling,= review by Gabriel Scherer)

- #13034(https://github.com/ocaml/ocaml/= issues/13034), #13260(https://github.com/ocaml/ocaml/issues/13260): Better = error messages for mismatched function labels
  (Florian Angeletti,= report by Daniel B=C3=BCnzli, review by Gabriel Scherer and
  = ; Samuel Vivien)

- #13051(https://github.com/ocaml/ocaml/issues/1305= 1): Add a "Syntax error" to error messages for invalid package signatures.<= br>  (Samuel Vivien, review by Gabriel Scherer)

- #13099(https:= //github.com/ocaml/ocaml/issues/13099): Fix erroneous loading of cmis for s= ome module type errors.
  (Nick Roberts, review by Florian Angelett= i)

- #13151(https://github.com/ocaml/ocaml/issues/13151), name confl= icts explanation as a footnote
  (Florian Angeletti, review by Gabr= iel Scherer)

- #13228(https://github.com/ocaml/ocaml/issues/13228): = Re-export Cmt2annot.{iterator,binary_part} which had become hidden
 = ; since #11288(https://github.com/ocaml/ocaml/issues/11288) and broke ocaml= browser.
  (David Allsopp, report by Jacques Garrigue, review by S= =C3=A9bastien Hinderer)

- #13251(https://github.com/ocaml/ocaml/issu= es/13251): Register printer for errors in Emitaux
  (Vincent Laviro= n, review by Miod Vallat and Florian Angeletti)

- #13255(https://git= hub.com/ocaml/ocaml/issues/13255): Re-enable warning 34 for unused locally = abstract types
  (Nick Roberts, review by Chris Casinghino and Flor= ian Angeletti)

- #12182(https://github.com/ocaml/ocaml/issues/12182)= : Improve the type clash error message.
  For example, this message= :
    This expression has type ...
  is changed i= nto:
    The constant "42" has type ...
  (Jules = Aguillon, review by Gabriel Scherer and Florian Angeletti)

- #13471(= https://github.com/ocaml/ocaml/issues/13471): add `-keywords <version?+l= ist>` flag to define the list of keywords
  recognized by the le= xer, for instance `-keywords 5.2` disable the `effect`
  keyword.  (Florian Angeletti, review by Gabriel Scherer)

Internal/com= piler-libs changes:
----------------------------------------

- #1= 3286(https://github.com/ocaml/ocaml/issues/13286): Distinguish unique ident= ifiers `Shape.Uid.t` according to their
  provenance: either an imp= lementation or an interface.
  (Ulysse G=C3=A9rard, review by Flori= an Angeletti and Leo White)

- #13308(https://github.com/ocaml/ocaml/= issues/13308): keep track of relations between declaration in the cmt files= . This is
  useful information for external tools for navigation an= d analysis purposis.
  (Ulysse G=C3=A9rard, Florian Angeletti, revi= ew by Florian Angeletti and Gabriel
  Scherer)


- #11129(= https://github.com/ocaml/ocaml/issues/11129), #11148(https://github.com/oca= ml/ocaml/issues/11148): enforce that ppxs do not produce `parsetree`s with<= br>  an empty list of universally quantified type variables
  = (`. int -> int` instead of `'a . int -> int'`)
  (Florian Ang= eletti, report by Simmo Saan, review by Gabriel Scherer)

- #12534(ht= tps://github.com/ocaml/ocaml/issues/12534): document and refactor Matching.= mk_failaction_pos
  (Gabriel Scherer, review by Vincent Laviron and= Nick Roberts)

- #13076(https://github.com/ocaml/ocaml/issues/13076)= : change the handling of Match_failure exits in the pattern-matching
&nb= sp; compiler, to prepare for a complete fix for #7241(https://github.com/oc= aml/ocaml/issues/7241)
  (Gabriel Scherer, review by Thomas Refis a= nd Nick Roberts)

- #12896(https://github.com/ocaml/ocaml/issues/1289= 6): Simplify the compilation of custom bytecode runtimes by explicitly
&= nbsp; compiling the primitives file before calling the linker. Tidy-up both= the
  generating code and the output itself for C code being gener= ated by the
  bytecode linker in `-custom` and `-output-*` modes.  (David Allsopp, Antonin D=C3=A9cimo and Samuel Hym, review by Vinc= ent Laviron)

- #12932(https://github.com/ocaml/ocaml/issues/12932): = Remove useless code in Typecore.type_label_exp (was a fix for #4862(https:/= /github.com/ocaml/ocaml/issues/4862))
  (Jacques Garrigue, review b= y Gabriel Scherer)

- #12943(https://github.com/ocaml/ocaml/issues/12= 943): Make transient_expr.scope a bitfield, and use it to store marks.
&= nbsp; Marks are automatically allocated, and removed when leaving their sco= pe.
  Falls back to using TransientTypeSet when marks are exhausted= .
  (Jacques Garrigue and Takafumi Saikawa, review by Basile Cl=C3= =A9ment)

- #12946(https://github.com/ocaml/ocaml/issues/12946): Make= generalization automatic when leaving scope.
  As a result, the `C= type.generalize*` and `Ctype.correct_levels` functions
  were remov= ed. The latter is now called `Ctype.duplicate_type`.
  (Jacques Gar= rigue and Takafumi Saikawa, review by Richard Eisenberg)

- #12968(ht= tps://github.com/ocaml/ocaml/issues/12968): Attach location to constants in= the parsetree
  (Jules Aguillon, review by Gabriel Scherer)
- #12959(https://github.com/ocaml/ocaml/issues/12959), #13055(https://gith= ub.com/ocaml/ocaml/issues/13055): Avoid an internal error on recursive modu= le type inconsistency
  (Florian Angeletti, review by Jacques Garri= gue and Gabriel Scherer)

- #13049(https://github.com/ocaml/ocaml/iss= ues/13049): graphical debugging printer for types
  (Florian Angele= tti, review by Gabriel Scherer)

- #13074(https://github.com/ocaml/oc= aml/issues/13074), #13082(https://github.com/ocaml/ocaml/issues/13082), #13= 084(https://github.com/ocaml/ocaml/issues/13084): refactoring in the patter= n-matching compiler
  (Gabriel Scherer, review by Thomas Refis, Vin= cent Laviron and Nick Roberts)

- #13067(https://github.com/ocaml/oca= ml/issues/13067): rework volatile memory access rules under TSan to conside= r properly
  aligned smaller-than-register read operations as atomi= c, which gets rid of
  false positives on s390x
  (Miod Val= lat, review by Fabien Buoro)

- #13162(https://github.com/ocaml/ocaml= /issues/13162): Use quoted strings to clarify code being generated.
&nbs= p; (Antonin D=C3=A9cimo, review by Miod Vallat and Gabriel Scherer)

= - #13015(https://github.com/ocaml/ocaml/issues/13015): Emit floating-point = literals in .rodata section on ELF arm64
  platforms (Linux, *BSD).=
  (Miod Vallat, review by Nicol=C3=A1s Ojeda B=C3=A4r)

- #1= 3169(https://github.com/ocaml/ocaml/issues/13169), #13311(https://github.co= m/ocaml/ocaml/issues/13311): Introduce a document data type for compiler me= ssages
  rather than relying on `Format.formatter -> unit` closu= res.
  (Florian Angeletti, review by Gabriel Scherer)

- #131= 93(https://github.com/ocaml/ocaml/issues/13193): Remove the unused env_init= field from class blocks
  (Vincent Laviron, review by Jacques Garr= igue)

- #13257(https://github.com/ocaml/ocaml/issues/13257): integra= te MetaOCaml in the Menhir grammar to ease MetaOCaml
  maintenance.= This is a purely internal change: there is no support
  in the lex= er, so no change to the surface OCaml grammar.
  (Oleg Kiselyov, Ga= briel Scherer and Florian Angeletti,
   review by Jeremy Yallo= p)

- #13289(https://github.com/ocaml/ocaml/issues/13289): Use C99 fo= r loop to reduce the scope of the for loop iterator.
  (Antonin D= =C3=A9cimo, review by Miod Vallat and Gabriel Scherer)

- #13336(http= s://github.com/ocaml/ocaml/issues/13336): compiler-libs, split the `Printty= p` in three to only keep
  "user-friendly" functions in the `Printt= yp` module.
  (Florian Angeletti, review by Gabriel Scherer)
- #13361(https://github.com/ocaml/ocaml/issues/13361): split runtime/array= .c functions to consistently expose
  uniform_array and floatarray = versions, use floatarray versions
  in Float.Array.
  (Gabr= iel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r)

- #13507(https:/= /github.com/ocaml/ocaml/issues/13507): A small refactoring to [free_vars] t= o make it a bit faster
  by not allocating a list when the list is = not necessary.
  (Richard Eisenberg, review by Jacques Garrigue)
Build system:
------------------

- #12909(https://github.com= /ocaml/ocaml/issues/12909): Reorganise how MKEXE_VIA_CC is built to make it= correct for MSVC by
  grouping all the linker flags at the end of = the C compiler commandline
  (David Allsopp and Samuel Hym, review = by Nicol=C3=A1s Ojeda B=C3=A4r)

- #12992(https://github.com/ocaml/oc= aml/issues/12992), #13009(https://github.com/ocaml/ocaml/issues/13009): Che= ck that flexlink can be executed only when building in a
  native w= indows environment.
  (Romain Beauxis, review by David Allsopp and = S=C3=A9bastien Hinderer)

- #12996(https://github.com/ocaml/ocaml/iss= ues/12996): Only link with -lgcc_eh when available.
  (Romain Beaux= is, review by David Allsopp and Miod Vallat)

* (*breaking change*) #= 13200(https://github.com/ocaml/ocaml/issues/13200): Do not use CFLAGS for l= inking.
  (S=C3=A9bastien Hinderer, review by Gabriel Scherer, Anto= nin D=C3=A9cimo,
  Miod Vallat and Samuel Hym)

- #13201(http= s://github.com/ocaml/ocaml/issues/13201), #13244(https://github.com/ocaml/o= caml/issues/13244): Fix and speedup builds with TSan.
  (S=C3=A9bas= tien Hinderer, review by Miod Vallat, Gabriel Scherer and
  Olivier= Nicole)

* (*breaking change*) #12578(https://github.com/ocaml/ocaml= /issues/12578), #12589(https://github.com/ocaml/ocaml/issues/12589), #13322= (https://github.com/ocaml/ocaml/issues/13322), #13519(https://github.com/oc= aml/ocaml/issues/13519): Use configured CFLAGS and CPPFLAGS *only*
 = ; during the build of the compiler itself. Do not use them when
  c= ompiling third-party C sources through the compiler. Flags for
  co= mpiling third-party C sources can still be specified at configure
 = time in the COMPILER_{BYTECODE,NATIVE}_{CFLAGS,CPPFLAGS}
  configu= ration variables.
  (S=C3=A9bastien Hinderer, report by William Hu,= review by David Allsopp)

- #13285(https://github.com/ocaml/ocaml/is= sues/13285): continue the merge of the sub-makefiles into the root
 = ; Makefile started with #11243(https://github.com/ocaml/ocaml/issues/11243)= , #11248(https://github.com/ocaml/ocaml/issues/11248), #11268(https://githu= b.com/ocaml/ocaml/issues/11268), #11420(https://github.com/ocaml/ocaml/issu= es/11420), #11675(https://github.com/ocaml/ocaml/issues/11675),
  #= 12198(https://github.com/ocaml/ocaml/issues/12198), #12321(https://github.c= om/ocaml/ocaml/issues/12321), #12586(https://github.com/ocaml/ocaml/issues/= 12586), #12616(https://github.com/ocaml/ocaml/issues/12616), #12706(https:/= /github.com/ocaml/ocaml/issues/12706) and #13048(https://github.com/ocaml/o= caml/issues/13048).
  (S=C3=A9bastien Hinderer, review by David All= sopp and Florian Angeletti)

Bug fixes:
-------------

- #12= 854(https://github.com/ocaml/ocaml/issues/12854): Add a test in the regress= ion suite that flags the bug #12825(https://github.com/ocaml/ocaml/issues/1= 2825).
  (Luc Maranget)

- #12888(https://github.com/ocaml/oc= aml/issues/12888): fix printing of uncaught exceptions in `.cmo` files pass= ed on the
  command-line of the toplevel.
  (Nicol=C3=A1s O= jeda B=C3=A4r, review by Florian Angeletti, report by Daniel B=C3=BCnzli)
- #12910(https://github.com/ocaml/ocaml/issues/12910), #12920(https:/= /github.com/ocaml/ocaml/issues/12920): Fix an unsound interaction between f= irst-class modules
  and polymorphic records by saving and restorin= g univar_pairs.
  (Stephen Dolan, review by Gabriel Scherer, report= by Jeremy Yallop)

- #12994(https://github.com/ocaml/ocaml/issues/12= 994): Remove un-used and unsafe caml_drop_continuation
  (Tim McGil= christ, reviewed by Gabriel Scherer and Miod Vallat)

- #12963(https:= //github.com/ocaml/ocaml/issues/12963): Restore caml_runtime_parameters imp= lementation. This primitive allows
  programs to query the runtime = parameters supplied to an OCaml program.
  Implementation missing s= ince OCaml 5.0.
  (Tim McGilchrist, reviewed by David Allsopp and M= iod Vallat)

- #13012(https://github.com/ocaml/ocaml/issues/13012): p= arsing: Fix dropped attributes after a '-' or '+'
  The syntax '-(1= [@foo])' was incorrectly parsed as '-1'.
  (Jules Aguillon, review= ed by Gabriel Scherer, report by Gabriel Scherer)

* (*breaking chang= e*) #13070(https://github.com/ocaml/ocaml/issues/13070): On Windows, when c= onfigured with bootstrapped flexdll, don't add
  +flexdll to the se= arch path when -nostdlib is specified (which then means
  -L <pa= th-to-flexdll> no longer gets passed to the system linker).
  (D= avid Allsopp, review by Florian Angeletti)

- #13089(https://github.c= om/ocaml/ocaml/issues/13089): Fix bug in `runtime_events` library which cou= ld result in garbled
  output under Windows.
  (B. Szilvasy= , review by Nicol=C3=A1s Ojeda B=C3=A4r and Miod Vallat)

- #13088(ht= tps://github.com/ocaml/ocaml/issues/13088): A few type-checker behaviors lo= ok at a type to see if there are
  any labeled arguments in it. Thi= s sometimes required expansion, which
  could, in obscure scenarios= , result in superfluous type errors.
  (Richard Eisenberg, review b= y Gabriel Scherer and Jacques Garrigue)

- #13103(https://github.com/= ocaml/ocaml/issues/13103): FreeBSD/amd64: properly annotate .o files with n= on-executable stack
  notes (Konstantin Belousov, review by Nicol= =C3=A1s Ojeda B=C3=A4r)

- #13150(https://github.com/ocaml/ocaml/issu= es/13150): improve a transitive-closure computation algorithm in the flambd= a
  middle-end to avoid a compilation time blowup on Menhir-generat= ed code
  (Florian Weimer, review by Gabriel Scherer and Pierre Cha= mbart,
   report by Richard Jones)

- #13166(https://git= hub.com/ocaml/ocaml/issues/13166): Fix a MinGW/MSVC Sys.rename regression o= n renaming a parent directory
  to an empty child directory.
&nb= sp; (Jan Midtgaard, review by Antonin D=C3=A9cimo, S=C3=A9bastien Hinderer,= and
   David Allsopp)

- #13185(https://github.com/ocam= l/ocaml/issues/13185), #13192(https://github.com/ocaml/ocaml/issues/13192):= Reject type-level module aliases on functor parameter
  inside sig= natures.
  (Jacques Garrigue, report by Richard Eisenberg, review b= y Florian Angeletti)

- #13170(https://github.com/ocaml/ocaml/issues/= 13170): Fix a bug that would result in some floating alerts `[@@@alert ...]= `
  incorrectly triggering Warning 53.
  (Nicol=C3=A1s Ojed= a B=C3=A4r, review by Chris Casinghino and Florian Angeletti)

- #132= 03(https://github.com/ocaml/ocaml/issues/13203): Do not issue warning 53 if= the compiler is stopping before attributes
  have been accurately = marked.
  (Chris Casinghino, review by Florian Angeletti)

- = #13207(https://github.com/ocaml/ocaml/issues/13207): Be sure to reload the = register caching the exception handler in
  caml_c_call and caml_c_= call_stack_args, as its value may have been changed
  if the OCaml = stack is expanded during a callback.
  (Miod Vallat, report by Vesa= Karvonen, review by Gabriel Scherer and
   Xavier Leroy)
<= br>- #13209(https://github.com/ocaml/ocaml/issues/13209): Fix configure tes= t that checks whether `ar` supports `@FILE`
  arguments.
  = (Nicol=C3=A1s Ojeda B=C3=A4r, report by Boris D.)

- #13221(https://g= ithub.com/ocaml/ocaml/issues/13221): Compute more accurate instruction size= s for branch relocation on
  POWER.
  (Miod Vallat, review = by Gabriel Scherer)

- #13252(https://github.com/ocaml/ocaml/issues/1= 3252): Rework register assignment in the interpreter code on m68k on Linux,=
  due to the %a5 register being used by Glibc.
  (Miod Val= lat, report by St=C3=A9phane Glondu, review by Gabriel Scherer and
 = ;  Xavier Leroy)

- #13247(https://github.com/ocaml/ocaml/issues= /13247): Disable lib_unix/kill test for MacOS AMD64 with TSan, linking
&= nbsp; to llvm bug report causing infinite signal loops.
  (Tim McGi= lchrist, review by Olivier Nicole, Miod Vallat, S=C3=A9bastien Hinderer
=   and Gabriel Scherer)

- #13234(https://github.com/ocaml/ocaml/= issues/13234), #13267(https://github.com/ocaml/ocaml/issues/13267): Open ru= ntime events file in read-write mode on armel
  (armv5) systems due= to atomic operations limitations on that
  platform.
  (St= =C3=A9phane Glondu, review by Miod Vallat and Vincent Laviron)

- #13= 273(https://github.com/ocaml/ocaml/issues/13273): Fix a call to test in con= figure.ac that was causing errors when
  LDFLAGS contains several w= ords.
  (St=C3=A9phane Glondu, review by Miod Vallat)

- #132= 90(https://github.com/ocaml/ocaml/issues/13290): Fix uninitialized and out = of bounds reads in runtime_events_consumer.c
  (Edwin T=C3=B6r=C3= =B6k, review by Miod Vallat and Antonin D=C3=A9cimo)

- #13306(https:= //github.com/ocaml/ocaml/issues/13306): An algorithm in the type-checker th= at checks two types for equality
  could sometimes, in theory, retu= rn the wrong answer. This patch fixes the
  oversight. No known pro= gram triggers the bug.
  (Richard Eisenberg, review by Florian Ange= letti)

- #13400(https://github.com/ocaml/ocaml/issues/13400): Initia= lize th->signal_stack to avoid free of uninitialized data
  if t= he user calls caml_c_thread_unregister on the main thread.
  (Richa= rd W.M. Jones, review by Guillaume Munch-Maccagnoni and
  Gabriel S= cherer)

- #13140(https://github.com/ocaml/ocaml/issues/13140): POWER= back-end: fix issue with call to `caml_call_realloc_stack`
  from = a DLL
  (Xavier Leroy, review by Miod Vallat)

- #13263(https= ://github.com/ocaml/ocaml/issues/13263), #13560(https://github.com/ocaml/oc= aml/issues/13560): fix printing true and false in toplevel and error
&nb= sp; messages (no more unexpected \#true)
  (Florian Angeletti, repo= rt by Samuel Vivien, review by Gabriel Scherer)

- #13388(https://git= hub.com/ocaml/ocaml/issues/13388), #13540(https://github.com/ocaml/ocaml/is= sues/13540): raises an error message (and not an internal compiler error)  when two local substitutions are incompatible (for instance `modul= e type
  S:=3Dsig end type t:=3D(module S)`)
  (Florian Ang= eletti, report by Nailen Matschke, review by Gabriel Scherer, and
 = Leo White)

- #13408(https://github.com/ocaml/ocaml/issues/13408): F= ix misplaced debug runtime assertion triggerable by a race
  betwee= n domain exit and backup thread
  (Miod Vallat and Gabriel Scherer,= report by Jan Midtgaard)

- #13417(https://github.com/ocaml/ocaml/is= sues/13417): `Filename.quote_command`: fix handling of forward slashes in p= rogram
  path under Win32.
  (Nicol=C3=A1s Ojeda B=C3=A4r, = review by David Allsopp and Damien Doligez)

- #13501(https://github.= com/ocaml/ocaml/issues/13501): Regression on mutually recursive types cause= d by #12180(https://github.com/ocaml/ocaml/issues/12180).
  Resusci= tate Typedecl.update_type.
  (Jacques Garrigue and Takafumi Saikawa= , review by Florian Angeletti, Richard
  Eisenberg and Gabriel Sche= rer)

- #13502(https://github.com/ocaml/ocaml/issues/13502): Fix misi= ndexing related to `Gc.finalise_last` that could prevent
  finalise= rs from being run.
  (Nick Roberts, review by Mark Shinwell)
- #13495(https://github.com/ocaml/ocaml/issues/13495), #13514(https://gith= ub.com/ocaml/ocaml/issues/13514): Fix typechecker crash while typing object= s
  (Jacques Garrigue, report by Nicol=C3=A1s Ojeda B=C3=A4r, revie= w by
   Nicolas Ojeda B=C3=A4r, Gabriel Scherer, Stephen Dolan= , Florian Angeletti)

- #13391(https://github.com/ocaml/ocaml/issues/= 13391), #13551(https://github.com/ocaml/ocaml/issues/13551): fix a printing= bug with `-dsource` when using
  raw literal inside a locally abst= ract type constraint
  (i.e. `let f: type \#for. ... `)
  (= Florian Angeletti, report by Nick Roberts, review by Richard Eisenberg)
=
- #13520(https://github.com/ocaml/ocaml/issues/13520): Fix compilation = of native-code version of systhreads. Bytecode fields
  were being = included in the thread descriptors.
  (David Allsopp, review by S= =C3=A9bastien Hinderer and Miod Vallat)

- #13541(https://github.com/= ocaml/ocaml/issues/13541), #13591(https://github.com/ocaml/ocaml/issues/135= 91): Fix headers for C++ inclusion.
  (Antonin D=C3=A9cimo, review = by Nick Barnes, report by Kate Deplaix)

- #13579(https://github.com/= ocaml/ocaml/issues/13579), #13583(https://github.com/ocaml/ocaml/issues/135= 83): Unsoundness involving non-injective types + gadts
  (Jacques G= arrigue, report by @v-gb,
   review by Richard Eisenberg and F= lorian Angeletti)

- #13598(https://github.com/ocaml/ocaml/issues/135= 98): Falsely triggered warning 56 [unreachable-case]
  This was cau= sed by unproper protection of the retyping function.
  (Jacques Gar= rigue, report by T=C3=B5ivo Leedj=C3=A4rv, review by Florian Angeletti)
=
- #13603(https://github.com/ocaml/ocaml/issues/13603), #13604(https://g= ithub.com/ocaml/ocaml/issues/13604): fix source printing in the presence of= the escaped raw
  identifier `\#mod`.
  (Florian Angeletti= , report by Chris Casinghino, review by Gabriel Scherer)

--=_63434ef9-2b2b-4e9e-8402-8882eeed3419--