caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alan Schmitt <>
To: "lwn" <>, "cwn"  <>,,
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 18 Aug 2020 09:25:27 +0200	[thread overview]
Message-ID: <> (raw)

[-- Attachment #1: Type: text/plain, Size: 7186 bytes --]


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

Table of Contents

Ppx: omp 2.0.0 and next steps

Ppx: omp 2.0.0 and next steps


Jérémie 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

  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

  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

  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.


  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.


  • 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 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.


  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

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

  [Alan Schmitt]

[send me a message] <>

[the archive] <>

[RSS feed of the archives] <>

[online] <>

[Alan Schmitt] <>

[-- Attachment #2: Type: text/html, Size: 18147 bytes --]

             reply	other threads:[~2020-08-18  7:26 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-18  7:25 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-26 17:54 Alan Schmitt
2022-07-19  8:58 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-02-04  8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).