From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id A85A35D5 for ; Tue, 18 Aug 2020 07:26:13 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.76,326,1592863200"; d="scan'208,217";a="463793476" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 18 Aug 2020 09:26:07 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id C7970E000F; Tue, 18 Aug 2020 09:26:07 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id B05CBE000F for ; Tue, 18 Aug 2020 09:26:01 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=bxsj=B4=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?9a23=3AzKID7Rewjel3ioYBHtwKV48IlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxc27YR2N2/xhgRfzUJnB7Loc0qyK6v6mADRdqs/Y6zgrS99lb1c9k8?= =?us-ascii?q?IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBo?= =?us-ascii?q?KevrB4Xck9q41/yo+53Ufg5EmCexbal9IRmrrAjdrNQajZdiJ6o+1xfFv3VFcP?= =?us-ascii?q?lKyG11Il6egwzy7dqq8p559CRQtfMh98peXqj/Yq81U79WAik4Pm4s/MHkugXN?= =?us-ascii?q?QgWJ5nsHT2UZiQFIDBTf7BH7RZj+rC33vfdg1SaAPM32Sbc0WSm+76puVRTlhj?= =?us-ascii?q?sLOyI//WrKisB+j6RboAygpxxkwo7be4WVO+RjdaLTetMaX3dOXt1MXCBFDI6w?= =?us-ascii?q?c44DAuwcNuhasob9vUMDoxugCwexCu3hyTBHiWPt0KIgz+gsCxvL0BA8E98Mtn?= =?us-ascii?q?nfsdX7NL0VUeCw1KTF0THDYOlQ2Tzg9YbHbhAhofSNXbJsbcra1E4iGBnBjlqK?= =?us-ascii?q?r4zpJSiV2fgNs2ie7upgSf6vhnU/qwF2pjiuxtsshZfViYIVzFDE9Dx5wJsrKt?= =?us-ascii?q?GiT057e9GkHYJWuiqHOIR4XtksTHt0uCYm1LIGo5i7cTAXxJg7yRDSduKKf5SV?= =?us-ascii?q?7hzjW+ucICp1iG57db+imhu8/0itx+78WMWqzVtHqihIn9nQu3wQ1BHf99aKRu?= =?us-ascii?q?Zz8Eqv3zuEyg7d6uZBIU8ulKrbLYYswqYumZoPsETDAjH5mF3xjK+Tc0Ur5PKk?= =?us-ascii?q?6+L5bbX6vpOcMJN7hRv7MqQqgMC/Bv44MgcWU2iU+OS8yL3j/VDiT7lQkvI2la?= =?us-ascii?q?zZvIjbJcsGpq+5BwtV3pwk6xalADer1skTk3ofLF9dZR6LkYzkN0vTLPzkAvqz?= =?us-ascii?q?mVqhnCtxy/3IMbDtGojBI3benLv7Y7pw60FRxBAuwdxD/Z5YF7MMLO71V0Tsrt?= =?us-ascii?q?LXFAU5PBaxw+v/CNVyyIceWWWXD6+cP6LerEWE5vooI+mIZI4VpCjyJOQl5/7o?= =?us-ascii?q?jH85gEIdcrez0ZsQcnC4EexqI0SfYXXyntcMCXoGshQ6QeDwlVGOTTFea2y8Uq?= =?us-ascii?q?4g/D02Bo2rAZ/GRo+3gbyB2Cm7HodRZmBDEl2CDGvmeZiYV/oUcy2TLdRhkj4c?= =?us-ascii?q?WLW8RIIszQmutAj+y7tnMurb5DEXtZLl1Nh0/u3TiA89+SZzD8SH3GGAV3t7nm?= =?us-ascii?q?cSSD8wxqx/ulByyleG0ah5n/xYCcde6OhOUgcnM57T0/J1C8voVgLEcdqIR0yq?= =?us-ascii?q?QtK8ATE+Vt4x2cMBY15hG9W+iRDOxzalDKUQl7yPHZA09qPc32PtJ8tm0HbH1K?= =?us-ascii?q?whj0E8TcdVNG2mgLR/9wnJCILTnUWZjfXiSaNJlirS8i3LmW6RumlcTwg2V6jZ?= =?us-ascii?q?CzRXLEDJq56xrhfJULmGDbU8LhAHyMKTLq8Mbcfm2xEOT/7mPJHaYnmts2a2Hx?= =?us-ascii?q?eBgL2WKMLhfGAF9CHcE1Qf1QcJ93eaPAwwATfnrn+NIiZpEAfGZ0rqudJ1qHa6?= =?us-ascii?q?UlN8mwiOZksnzLG1/x8JmdSETPcCwr8PuCEgsih5WlGn0ISFWJK7uwN9cfAEMp?= =?us-ascii?q?sG61Bd2DeC71UgbKzlFLhrgxslSyoyv07q0E8sWIBQyI4yq3c70Ad5KaSZyU5M?= =?us-ascii?q?MTSC0sKpY+GFGizJ5BmqLpXu9BTGyt/Pq/UX7/Apt1jovAeoD1cvtXJ93IsMii?= =?us-ascii?q?rO1tDxFAMXFKnJfAMy/hl+qavdZ3BitYnTyHtnPLLyt2PSndUzC7l8xw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B7AgAdgjtffSIeaIFfHgEBCxIMgy1YQ?= =?us-ascii?q?AFeVTIsg3dAiQGLM4U/jVmFdwEDAQwYAQoJAQIEAQGETAKCPQIdBgEFMxMCEAE?= =?us-ascii?q?BBQEBAQIBAwMEARMBAQsUCIYMDII3DBmDHQEKFwplIwMUBwMCEQEXARQKFwESF?= =?us-ascii?q?AYBgwyCfAUKlAubeoEyhDsBhHaBQA0CE4EWhUNLgwEIg2AmD4FNP4NsB2yCRQw?= =?us-ascii?q?LAQEBAQGBNAYBAQ5IgmGCYASPbiYBkwSSbCoHgmWBCQQLhkuBAIZMhCmGaYMAg?= =?us-ascii?q?SOIOZNFIZIZgWyFegeCVoYAilWET4FAKoFnDAczGjCDLAlgDYgfhVcBgU0BCIJ?= =?us-ascii?q?DhFk7hUQ/MwIBATMCBgEJAQEDCXUBAQUTCwGNdIJFAQE?= X-IPAS-Result: =?us-ascii?q?A0B7AgAdgjtffSIeaIFfHgEBCxIMgy1YQAFeVTIsg3dAiQG?= =?us-ascii?q?LM4U/jVmFdwEDAQwYAQoJAQIEAQGETAKCPQIdBgEFMxMCEAEBBQEBAQIBAwMEA?= =?us-ascii?q?RMBAQsUCIYMDII3DBmDHQEKFwplIwMUBwMCEQEXARQKFwESFAYBgwyCfAUKlAu?= =?us-ascii?q?beoEyhDsBhHaBQA0CE4EWhUNLgwEIg2AmD4FNP4NsB2yCRQwLAQEBAQGBNAYBA?= =?us-ascii?q?Q5IgmGCYASPbiYBkwSSbCoHgmWBCQQLhkuBAIZMhCmGaYMAgSOIOZNFIZIZgWy?= =?us-ascii?q?FegeCVoYAilWET4FAKoFnDAczGjCDLAlgDYgfhVcBgU0BCIJDhFk7hUQ/MwIBA?= =?us-ascii?q?TMCBgEJAQEDCXUBAQUTCwGNdIJFAQE?= X-IronPort-AV: E=Sophos;i="5.76,326,1592863200"; d="scan'208,217";a="356749250" X-MGA-submission: =?us-ascii?q?MDHUwjKu5RXZcFCS6PGqg7G52huSZQoCbNK/tN?= =?us-ascii?q?ZoouGNCSlpGEas3r7/QAkZUA44uegvL33h2JjGUy4p+8i4s8n2cn0Kd5?= =?us-ascii?q?1sV/Sf8olq8wOZ2ZzRl680X2MHiBcWdNjuivjqxjho1TZaVaRjClSBju?= =?us-ascii?q?BlMXUUwUAaXhxqXteQRJHfKQ=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Aug 2020 09:25:29 +0200 Received: from set (set.irisa.fr [131.254.10.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 520E9564E82; Tue, 18 Aug 2020 09:25:27 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr, comp@lists.orbitalfox.eu Date: Tue, 18 Aug 2020 09:25:27 +0200 Message-ID: <87eeo4mn4o.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 18 09:25:27 2020 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000273, queueID=9A816564E84 X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 18219 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: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of August 11 to 18, 2020. Table of Contents =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Ppx: omp 2.0.0 and next steps Old CWN Ppx: omp 2.0.0 and next steps =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: J=C3=A9r=C3=A9mie Dimino announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 quick summary: =E2=80=A2 ocaml-migrate-parsetree 2.0.0 release =E2=80=A2 you should add a upper bound in your dev repos =E2=80=A2 ppxlib compatible version coming soon =E2=80=A2 ppxlib is now the official ppx library supported by the OCaml platform Hi everyone, As [previously announced], we are [releasing the version 2.0.0 of ocaml-migrate-parsetree]. At the moment nothing is compatible with the new version and we will soon release a version of ppxlib that is compatible with it. If your project depends on ocaml-migrate-parsetree, you should add a upper bound to your development repository. If you plan to use ocaml-migrate-parsetree 2.0.0 directly, please note however that this is a transitory package. The technology implemented by ocaml-migrate-parsetree will live on and hopefully find a new home in the compiler repository proper. However, ocaml-migrate-parsetree as a standalone project will eventually stop being maintained. I am also taking the opportunity to announce that *ppxlib is the first ppx library officially supported by the OCaml platform*, and the one we recommend all ppx authors to use. It is the library that we plan to maintain for the long term. Other libraries such as `ppx_tools' or `ppx_tools_versioned' may continue to be maintained by open source contributors, however they will not be maintained by the OCaml platform and will not receive updates from the platform when new compilers are released. Only ppxlib will receive updates from the platform. If you would like to port your project to use ppxlib and are experiencing difficulties or have any question, please get in touch by replying to this post or opening a ticket on . The overall plan described in this post is the result of various discussions and/or collaborative effort between the following people: @avsm, @ceastlund, @Drup, @gasche, @jeremiedimino, @kit-ty-kate, @let-def, @NathanReb and @pitag. [previously announced] [releasing the version 2.0.0 of ocaml-migrate-parsetree] Next steps =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C As soon as the new version of ppxlib is released, we will work towards our next milestone. As a reminder, our current goal is to setup a ppx ecosystem that is continously compatible with the trunk of OCaml. To achieve that goal, we plan to add a stable API called "Astlib" on top of the compiler libraries. To keep things sustainable on the compiler side and increase flexibility, Astlib will be minimal and will be targeted at ppxlib only rather than be a general API aimed at ppx authors. The difficulty of this API is that it must expose a stable interface to the OCaml AST, which is composed of a large collection of data types. To make it work, we plan to use the technology developed in ocaml-migrate-parsetree; i.e. whole AST migration functions. While we eventually want Astlib to live in the compiler repository, we will initially develop it inside the ppxlib repository. Once it is ready, we will submit it for inclusion in the compiler. Although, we will keep a copy inside ppxlib for older versions of the compiler. We also plan to setup a smooth workflow for compiler developers to update Astlib when they change the development AST. Once this is all done, we will be in a situation where the ppx ecosystem is compatible with the trunk of OCaml at all time. And as a result, new releases of the compiler will no longer break ppx packages as long as they limit themselves to the ppxlib API. Future =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C While this work will make the ecosystem compatible with the trunk of OCaml at all times, it will essentially move the backward compatibility issue from the compiler to ppxlib.[1] This will already give us a lot more flexibility as for instance a single version of ppxlib can be compatible with a wide range of OCaml versions. However, we recognise that it is not usual to ask a community to rely on an unstable API. We made this choice as a trade-off between sustainability and complexity. Indeed, we want to maintain Astlib and Ppxlib over the long term and the best way to make things sustainable is to use simple and clear designs. While we do have solutions in our sleeves that would provide a fully stable ppx API, these are much more complicated to maintain and work with. To mitigate this, we are setting up a Dune based workflow to upgrade all ppx rewriters at once. So once the system is rolling and if your ppx rewriters are up to date and using Dune, you should expect to receive pull requests as we update ppxlib. This last part will take some time to be fully rolling, so please bear with us :) In any case, about a year after this new world is fully setup, we will review the situation and decide whether it is sustainable or whether we need to go all the way and mint a fully stable ppx API. Timeline =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 today: ocaml-migrate-parsetree 2.0.0 is being released =E2=80=A2 next week: a ppxlib compatible version is released =E2=80=A2 December 2020: astlib is ready inside the ppxlib repository =E2=80=A2 next OCaml release after that: astlib lives in the compiler =E2=80=A2 September 2021: we review the situation and decide what to do n= ext [1]: At any given time the API of ppxlib refer to a single version of the OCaml AST. In order to allow OCaml users to enjoy both ppx rewriters and new language features, the version of the AST selected by ppxlib needs to be bumped after each release of the compiler, which is a breaking change that has the potential to break several ppx packages. As a result, ppx packages will still need to be regularly updated in order to stay compatible with the latest version of ppxlib. Old CWN =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 If you happen to miss a CWN, you can [send me a message] and I'll mail it to you, or go take a look at [the archive] or the [RSS feed of the archives]. If you also wish to receive it every week by mail, you may subscribe [online]. [Alan Schmitt] [send me a message] [the archive] [RSS feed of the archives] [online] [Alan Schmitt] --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of August 11 to 18, 2020.

Ppx: omp 2.0.0 and next steps

J=C3=A9r=C3=A9mie Dimino announced

quick summary:

  • ocaml-migrate-parsetree 2.0.0 release
  • you should add a upper bound in your dev repos
  • ppxlib compatible version coming soon
  • ppxlib is now the official ppx library supported by the OCaml platform<= /li>

Hi everyone,

As previously announced, we are releasing the version 2.0.0 of ocaml-migrate-parsetree. At the moment nothing is compatible with the n= ew version and we will soon release a version of ppxlib that is compatible with it. If your projec= t depends on ocaml-migrate-parsetree, you should add a upper bound to your development r= epository.

If you plan to use ocaml-migrate-parsetree 2.0.0 directly, please note howe= ver that this is a transitory package. The technology implemented by ocaml-migrate-parsetree w= ill live on and hopefully find a new home in the compiler repository proper. However, ocaml-migrate-p= arsetree as a standalone project will eventually stop being maintained.

I am also taking the opportunity to announce that ppxlib is the first pp= x library officially supported by the OCaml platform, and the one we recommend all ppx autho= rs to use. It is the library that we plan to maintain for the long term.

Other libraries such as ppx_tools or ppx_tools_versioned= may continue to be maintained by open source contributors, however they will not be maintained by the OCaml platf= orm and will not receive updates from the platform when new compilers are released. Only ppxlib will= receive updates from the platform.

If you would like to port your project to use ppxlib and are experiencing d= ifficulties or have any question, please get in touch by replying to this post or opening a ticket = on https://github.com/ocaml-pp= x/ppxlib.

The overall plan described in this post is the result of various discussion= s and/or collaborative effort between the following people: @avsm, @ceastlund, @Drup, @gasche, @je= remiedimino, @kit-ty-kate, @let-def, @NathanReb and @pitag.

Next steps

As soon as the new version of ppxlib is released, we will work towards our = next milestone. As a reminder, our current goal is to setup a ppx ecosystem that is continously = compatible with the trunk of OCaml. To achieve that goal, we plan to add a stable API called "Astlib" on= top of the compiler libraries. To keep things sustainable on the compiler side and increase fle= xibility, Astlib will be minimal and will be targeted at ppxlib only rather than be a general API ai= med at ppx authors.

The difficulty of this API is that it must expose a stable interface to the= OCaml AST, which is composed of a large collection of data types. To make it work, we plan to u= se the technology developed in ocaml-migrate-parsetree; i.e. whole AST migration functions.

While we eventually want Astlib to live in the compiler repository, we will= initially develop it inside the ppxlib repository. Once it is ready, we will submit it for inclusion in= the compiler. Although, we will keep a copy inside ppxlib for older versions of the compiler.

We also plan to setup a smooth workflow for compiler developers to update A= stlib when they change the development AST.

Once this is all done, we will be in a situation where the ppx ecosystem is= compatible with the trunk of OCaml at all time. And as a result, new releases of the compiler will no= longer break ppx packages as long as they limit themselves to the ppxlib API.

Future

While this work will make the ecosystem compatible with the trunk of OCaml = at all times, it will essentially move the backward compatibility issue from the compiler to ppxl= ib.[1] This will already give us a lot more flexibility as for instance a single version of ppxlib c= an be compatible with a wide range of OCaml versions. However, we recognise that it is not usual to ask = a community to rely on an unstable API.

We made this choice as a trade-off between sustainability and complexity. I= ndeed, we want to maintain Astlib and Ppxlib over the long term and the best way to make things sustai= nable is to use simple and clear designs. While we do have solutions in our sleeves that would provide= a fully stable ppx API, these are much more complicated to maintain and work with.

To mitigate this, we are setting up a Dune based workflow to upgrade all pp= x rewriters at once. So once the system is rolling and if your ppx rewriters are up to date and using Du= ne, you should expect to receive pull requests as we update ppxlib. This last part will take some ti= me to be fully rolling, so please bear with us :)

In any case, about a year after this new world is fully setup, we will revi= ew the situation and decide whether it is sustainable or whether we need to go all the way and mint a f= ully stable ppx API.

Timeline

  • today: ocaml-migrate-parsetree 2.0.0 is being released
  • next week: a ppxlib compatible version is released
  • December 2020: astlib is ready inside the ppxlib repository
  • next OCaml release after that: astlib lives in the compiler
  • September 2021: we review the situation and decide what to do next

[1]: At any given time the API of ppxlib refer to a single version of the O= Caml AST. In order to allow OCaml users to enjoy both ppx rewriters and new language features, the vers= ion of the AST selected by ppxlib needs to be bumped after each release of the compiler, which is a br= eaking change that has the potential to break several ppx packages. As a result, ppx packages will st= ill need to be regularly updated in order to stay compatible with the latest version of ppxlib.

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the RSS feed of the archives<= /a>.

If you also wish to receive it every week by mail, you may subscribe online.

--=-=-=--