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=M1z66hAs; 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=AxfsY5mI; 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]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 79FAE40016 for ; Fri, 25 Jul 2025 09:09:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:in-reply-to:references: mime-version:subject:reply-to:sender:list-id:list-help: list-subscribe:list-unsubscribe:list-post:list-owner: list-archive; bh=v39letgxZgjOxiTBM7xFHGovwN5/pu62MvkdO/r42o8=; b=M1z66hAsF78yegXC305nHXoqXBmIoinGBpktbFSEOA/jIjGNc0LEUIdj ln7yzBqXu28EwCQsTRpLFtOfNoin/lCJl4idhjfMPH1KlwD/mu4v9BxVj 6+zxxhcdAeY+op41ZPvy1kqgijfuKC6KoYoC5NKqrI94ZgJgTfV6Hj0SP c=; X-CSE-ConnectionGUID: eSeYZIMESA6iUqm523SD5A== X-CSE-MsgGUID: 9iibP0mDRuCzjrlt0tKGng== 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.16,339,1744063200"; d="scan'208,217";a="233093184" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 25 Jul 2025 11:09:16 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 99B82E0172; Fri, 25 Jul 2025 11:09:16 +0200 (CEST) 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 7D56BE0171 for ; Fri, 25 Jul 2025 11:09:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:in-reply-to:references:subject: mime-version; bh=v39letgxZgjOxiTBM7xFHGovwN5/pu62MvkdO/r42o8=; b=AxfsY5mIe88cXYzpX3MT9pDi9KMdYULAhCxtgb2RK60J3NYNB16FO9F0 whf1jkqOUY9Rsn2UCQ4tAGCJRCoDVBSRsi65ewCwwu5Ln90LTCxgEENvR toAKc7RPf8oZE70/hW616bm80laCZ1wJBYKseXRM7oqS55uMEy3swpKdG Q=; X-CSE-ConnectionGUID: 9yNZjG1cQUCx6r2gHXl7SQ== X-CSE-MsgGUID: CdOovtEMS7WbvG1ejAu5ug== X-ThreatScanner-Verdict: Negative X-IronPort-AV: E=Sophos;i="6.16,339,1744063200"; d="scan'208,217";a="233093157" X-MGA-submission: =?us-ascii?q?MDGP2/x1RDWJjczAw1P/XI9VXjkZ0sWnitWLyE?= =?us-ascii?q?7txauinVVRbq1Lhned3b+fDxEWI4+5fei8IKdhMObvqXb2uZ4BN/xKPf?= =?us-ascii?q?Dms/NjGtqDn1EtNk1eEY/Yamfowzy/a6DxOGzxncV3Y0Z3mSpoYJ6i/+?= =?us-ascii?q?jvyxJMQRx81l1k6xpx7ji0ig=3D=3D?= Received: from zcs2-store1.inria.fr ([128.93.142.3]) by mail2-relais-roc.national.inria.fr with ESMTP; 25 Jul 2025 11:09:11 +0200 Date: Fri, 25 Jul 2025 11:09:11 +0200 (CEST) From: Florian Angeletti To: caml-list Message-ID: <673781574.2852351.1753434551364.JavaMail.zimbra@inria.fr> In-Reply-To: <716758688.7335741.1748349511152.JavaMail.zimbra@inria.fr> References: <716758688.7335741.1748349511152.JavaMail.zimbra@inria.fr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_91b17e3e-540d-41fc-ba28-5207f684e733" X-Originating-IP: [128.93.64.106] X-Mailer: Zimbra 10.1.8_GA_4773 (ZimbraWebClient - FF140 (Linux)/10.1.9_GA_4780) Thread-Topic: First beta release of OCaml 5.4.0 Thread-Index: ckphl2OU0L0Mp9FLYPHEaF/zWCMI1kr7+VYB Subject: [Caml-list] First beta release of OCaml 5.4.0 Reply-To: Florian Angeletti X-Loop: caml-list@inria.fr X-Sequence: 19354 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: --=_91b17e3e-540d-41fc-ba28-5207f684e733 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Dear OCaml users,=20 Two months after the release of the first alpha for OCaml 5.4.0, the releas= e of=20 OCaml 5.4.0 is drawing near.=20 The internal API of the compiler libraries has been frozen, and most core= =20 developer tools support (or will support soon) the new version of the compi= ler.=20 We have thus released a first beta version of OCaml 5.4.0 to help you updat= e=20 your softwares and libraries ahead of the release (see below for the=20 installation instructions).=20 Compared to the first alpha release, this beta release brings two notable= =20 changes. First, this beta partially reverts the changes of symbol names in= =20 executable (in order to keep current version of `perf` working with OCaml= =20 executable). Second, this beta fixes a significant performance issue on App= le=20 Silicon macOS.=20 Beyond these two changes, this first beta release contains a dozen of=20 small bug fixes (from the runtime to the error messages) which is usual for= =20 the stage of the release. We are expecting the release candidate to follow= =20 this beta release soon in the beginning of August.=20 The progresses on stabilising the ecosystem are tracked on the opam readine= ss=20 for 5.4.0 meta-issue: https://github.com/ocaml/opam-repository/issues/27916= .=20 The full release is expected in the middle of August (see the new prospecti= ve=20 calendar at https://github.com/ocaml/ocaml/blob/trunk/release-info/calendar= .md)=20 for more information).=20 If you find any bugs, please report them on OCaml's issue=20 tracker: https://github.com/ocaml/ocaml/issues .=20 If you are interested in full list of features and bug fixes of the new OCa= ml=20 version, the updated change log for OCaml 5.4.0 is available at=20 https://github.com/ocaml/ocaml/blob/5.4/Changes.=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 on opam 2.1 and later:=20 opam update=20 opam switch create 5.4.0~beta1=20 The source code for the beta is also available at these addresses:=20 * GitHub: https://github.com/ocaml/ocaml/archive/5.4.0-beta1.tar.gz)=20 * OCaml archives at Inria: https://caml.inria.fr/pub/distrib/ocaml-5.4/ocam= l-5.4.0~beta1.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.4.0~beta1+options =20 where `option_list` is a space separated list of `ocaml-option-*` packages.= For instance, for a flambda and no-flat-float-array switch:=20 opam switch create 5.4.0~beta1+flambda+nffa ocaml-variants.5.4.0~beta1+opti= ons ocaml-option-flambda ocaml-option-no-flat-float-array=20 All available options can be listed with `opam search ocaml-option`.=20 Changes since the first alpha=20 -----------------------------=20 Code generation fixes=20 ---------------------=20 * (*breaking change*) #13050, #14104, +[#14143](https://github.com/ocaml/oc= aml/issues/14143): Use '$' instead of '.' to separate module names=20 in symbol names on macOS and Windows (including the Cygwin backend).=20 This changes mangling of OCaml identifiers on those operating systems from= =20 `camlModule.name_NNN` to `camlModule$name_NNN`. Additionally it=20 changes the encoding of special characters from $xx (two hex digits)=20 to $$xx (two dollar signs followed by two hex digits).=20 (Tim McGilchrist, with contributions from Xavier Leroy,=20 reviewed by Xavier Leroy, Miod Vallat, Gabriel Scherer,=20 Nick Barnes and Hugo Heuzard)=20 - [#14088](https://github.com/ocaml/ocaml/issues/14088), [#14091](https://g= ithub.com/ocaml/ocaml/issues/14091): fix non-deterministic code generation = in=20 matching.ml (backport of rescript-lang/rescript[#7557](https://github.com/o= caml/ocaml/issues/7557))=20 (Christiano Calgano, review by Gabriel Scherer and Vincent Laviron)=20 Performance fix=20 --------------=20 - [#13262](https://github.com/ocaml/ocaml/issues/13262), [#14074](https://g= ithub.com/ocaml/ocaml/issues/14074): fix performance issue on Apple Silicon= macOS by emitting=20 `stlr` instead of `dmb ishld; str`.=20 (KC Sivaramakrishnan, report by Fran=E7ois Pottier, analysis by Fr=E9d=E9ri= c Bour,=20 Xavier Leroy, Miod Vallat, Gabriel Scherer and Stephen Dolan, review by Mio= d=20 Vallat, Vincent Laviron and Xavier Leroy)=20 Standard library fix:=20 ---------------------=20 * (*breaking change*) [#14124](https://github.com/ocaml/ocaml/issues/14124)= : Do not raise Invalid_argument on negative List.{drop,take}.=20 (Daniel B=FCnzli, review by Gabriel Scherer, Nicol=E1s Ojeda B=E4r)=20 Runtime fixes=20 -------------=20 - [#14057](https://github.com/ocaml/ocaml/issues/14057): Don't update mempr= of too early at the end of a minor GC.=20 (Nick Barnes, review by Damien Doligez).=20 - [#13586](https://github.com/ocaml/ocaml/issues/13586), [#14093](https://g= ithub.com/ocaml/ocaml/issues/14093): Fix closing an out_channel during flus= h=20 (Stephen Dolan, report by Jan Midtgaard, investigation by Nick Roberts,=20 review by Antonin D=E9cimo and Miod Vallat)=20 Error message fixes=20 -------------------=20 - [#13956](https://github.com/ocaml/ocaml/issues/13956) Fix a regression in= troduced in [#13308](https://github.com/ocaml/ocaml/issues/13308) triggerin= g wrong unused warnings.=20 (Ulysse G=E9rard, review by Florian Angeletti)=20 - [#14070](https://github.com/ocaml/ocaml/issues/14070): also point to labe= l mismatches in error messages for labelled tuples=20 (Florian Angeletti, review by Gabriel Scherer)=20 - [#14135](https://github.com/ocaml/ocaml/issues/14135): Fix a rare interna= l typechecker error when combining recursive=20 modules, polymorphic fields or methods, and constrained type parameters.=20 (Florian Angeletti, review by Gabriel Scherer)=20 Compilerlibs fixes=20 ------------------=20 - [#14105](https://github.com/ocaml/ocaml/issues/14105): Fix a loop in Ppri= ntast that could result in a hang when printing=20 constructor `(::)` in isolation.=20 (Ulysse G=E9rard, review by Nicol=E1s Ojeda B=E4r and Florian Angeletti)=20 - [#14108](https://github.com/ocaml/ocaml/issues/14108): toplevel, fix a ty= po in directive type mismatch=20 (Florian Angeletti, review by Gabriel Scherer)=20 - [#14101](https://github.com/ocaml/ocaml/issues/14101), [#14139](https://g= ithub.com/ocaml/ocaml/issues/14139): define atomic helper types inside `cam= l/misc.h` to improve=20 header compatibility with C++=20 (Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)=20 OCamldoc fix=20 ------------=20 - [#13896](https://github.com/ocaml/ocaml/issues/13896), [#14098](https://g= ithub.com/ocaml/ocaml/issues/14098): ocamldoc, do not wrap module descripti= on in a paragraph tag=20 inside the table of modules=20 (Florian Angeletti, report by John Whitington, review by Gabriel Scherer)= =20 --=_91b17e3e-540d-41fc-ba28-5207f684e733 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Dear OCaml users,

Two months after t= he release of the first alpha for OCaml 5.4.0, the release of
OCaml 5.4.= 0 is drawing near.

The internal API of the compiler libraries has be= en frozen, and most core
developer tools support (or will support soon) = the new version of the compiler.

We have thus released a first beta = version of OCaml 5.4.0 to help you update
your softwares and libraries a= head of the release (see below for the
installation instructions).
Compared to the first alpha release, this beta release brings two notable=
changes. First, this beta partially reverts the changes of symbol names= in
executable (in order to keep current version of `perf` working with = OCaml
executable). Second, this beta fixes a significant performance iss= ue on Apple
Silicon macOS.

Beyond these two changes, this first b= eta release contains a dozen of
small bug fixes (from the runtime to the= error messages) which is usual for
the stage of the release. We are exp= ecting the release candidate to follow
this beta release soon in the beg= inning of August.

The progresses on stabilising the ecosystem are tr= acked on the opam readiness
for 5.4.0 meta-issue: https://github.com/oca= ml/opam-repository/issues/27916.

The full release is expected in the= middle of August (see the new prospective
calendar at https://github.co= m/ocaml/ocaml/blob/trunk/release-info/calendar.md)
for more information)= .

If you find any bugs, please report them on OCaml's issue
track= er: https://github.com/ocaml/ocaml/issues .

If you are interested in= full list of features and bug fixes of the new OCaml
version, the updat= ed change log for OCaml 5.4.0 is available at
https://github.com/ocaml/o= caml/blob/5.4/Changes.

Happy hacking,
Florian Angeletti for the O= Caml team

Installation Instructions
------------------------
<= br>The base compiler can be installed as an opam switch with the following = commands
on opam 2.1 and later:

   opam update
 = ;  opam switch create 5.4.0~beta1

The source code for the beta = is also available at these addresses:

* GitHub: https://github.com/o= caml/ocaml/archive/5.4.0-beta1.tar.gz)
* OCaml archives at Inria: https:= //caml.inria.fr/pub/distrib/ocaml-5.4/ocaml-5.4.0~beta1.tar.gz

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

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


   opam update
   o= pam switch create <switch_name> ocaml-variants.5.4.0~beta1+options &l= t;option_list>

where `option_list` is a space separated list of `= ocaml-option-*` packages. For instance, for a flambda and no-flat-float-arr= ay switch:

      opam switch create 5.4.0~beta1+flamb= da+nffa ocaml-variants.5.4.0~beta1+options ocaml-option-flambda ocaml-optio= n-no-flat-float-array

All available options can be listed with `opam= search ocaml-option`.


Changes since the first alpha
--------= ---------------------

Code generation fixes
---------------------=

* (*breaking change*) #13050, #14104, +[#14143](https://github.com/= ocaml/ocaml/issues/14143): Use '$' instead of '.' to separate module names<= br>  in symbol names on macOS and Windows (including the Cygwin backen= d).
  This changes mangling of OCaml identifiers on those operating= systems from
   `camlModule.name_NNN` to `camlModule$name_NNN= `. Additionally it
   changes the encoding of special characte= rs from $xx (two hex digits)
   to $$xx (two dollar signs foll= owed by two hex digits).
   (Tim McGilchrist, with contributio= ns from Xavier Leroy,
    reviewed by Xavier Leroy, Miod Valla= t, Gabriel Scherer,
    Nick Barnes and Hugo Heuzard)

-= [#14088](https://github.com/ocaml/ocaml/issues/14088), [#14091](https://gi= thub.com/ocaml/ocaml/issues/14091): fix non-deterministic code generation i= n
  matching.ml (backport of rescript-lang/rescript[#7557](https://= github.com/ocaml/ocaml/issues/7557))
  (Christiano Calgano, review = by Gabriel Scherer and Vincent Laviron)

Performance fix
---------= -----

- [#13262](https://github.com/ocaml/ocaml/issues/13262), [#140= 74](https://github.com/ocaml/ocaml/issues/14074): fix performance issue on = Apple Silicon macOS by emitting
  `stlr` instead of `dmb ishld; str= `.
  (KC Sivaramakrishnan, report by Fran=E7ois Pottier, analysis b= y Fr=E9d=E9ric Bour,
  Xavier Leroy, Miod Vallat, Gabriel Scherer a= nd Stephen Dolan, review by Miod
  Vallat, Vincent Laviron and Xavi= er Leroy)

Standard library fix:
---------------------

* (*= breaking change*) [#14124](https://github.com/ocaml/ocaml/issues/14124): Do= not raise Invalid_argument on negative List.{drop,take}.
  (Daniel= B=FCnzli, review by Gabriel Scherer, Nicol=E1s Ojeda B=E4r)

Runtime= fixes
-------------

- [#14057](https://github.com/ocaml/ocaml/is= sues/14057): Don't update memprof too early at the end of a minor GC.
&n= bsp; (Nick Barnes, review by Damien Doligez).

- [#13586](https://git= hub.com/ocaml/ocaml/issues/13586), [#14093](https://github.com/ocaml/ocaml/= issues/14093): Fix closing an out_channel during flush
  (Stephen D= olan, report by Jan Midtgaard, investigation by Nick Roberts,
  &nb= sp;review by Antonin D=E9cimo and Miod Vallat)

Error message fixes-------------------

- [#13956](https://github.com/ocaml/ocaml/issu= es/13956) Fix a regression introduced in [#13308](https://github.com/ocaml/= ocaml/issues/13308) triggering wrong unused warnings.
  (Ulysse G= =E9rard, review by Florian Angeletti)

- [#14070](https://github.com/= ocaml/ocaml/issues/14070): also point to label mismatches in error messages= for labelled tuples
  (Florian Angeletti, review by Gabriel Schere= r)

- [#14135](https://github.com/ocaml/ocaml/issues/14135): Fix a ra= re internal typechecker error when combining recursive
  modules, p= olymorphic fields or methods, and constrained type parameters.
  (F= lorian Angeletti, review by Gabriel Scherer)

Compilerlibs fixes
-= -----------------

- [#14105](https://github.com/ocaml/ocaml/issues/1= 4105): Fix a loop in Pprintast that could result in a hang when printing  constructor `(::)` in isolation.
  (Ulysse G=E9rard, review= by Nicol=E1s Ojeda B=E4r and Florian Angeletti)

- [#14108](https://= github.com/ocaml/ocaml/issues/14108): toplevel, fix a typo in directive typ= e mismatch
  (Florian Angeletti, review by Gabriel Scherer)

= - [#14101](https://github.com/ocaml/ocaml/issues/14101), [#14139](https://g= ithub.com/ocaml/ocaml/issues/14139): define atomic helper types inside `cam= l/misc.h` to improve
  header compatibility with C++
  (Flo= rian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)

O= Camldoc fix
------------

- [#13896](https://github.com/ocaml/ocam= l/issues/13896), [#14098](https://github.com/ocaml/ocaml/issues/14098): oca= mldoc, do not wrap module description in a paragraph tag
  inside t= he table of modules
  (Florian Angeletti, report by John Whitington= , review by Gabriel Scherer)

--=_91b17e3e-540d-41fc-ba28-5207f684e733--