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 ESMTP id 688635D4 for ; Tue, 14 Apr 2020 07:28:27 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.72,381,1580770800"; d="scan'208,217";a="445007135" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 14 Apr 2020 09:28:22 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 5F8637F485; Tue, 14 Apr 2020 09:28:22 +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 584CA7F42C for ; Tue, 14 Apr 2020 09:28:15 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=+s2f=56=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?9a23=3A5rVvJxx8bcwYX53XCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?0ewQIJqq85mqBkHD//Il1AaPBtqLra8cw8Pt8IneGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2K3zUvHyp7DQWF13gMhB5?= =?us-ascii?q?Pay1QdaT3IyL0LX4/4LVKU0cgCW7SbdtKlOwoBmH8oFcipRkYO55nhDWpFNMev?= =?us-ascii?q?9K3iVpKUOXm1D7/MjmuNZo+iFU/vYg7NJoUKPgfq1+Q6YcRD8hNngd4MzwqQKF?= =?us-ascii?q?ShGF52cVVmsRglxFHlvr9hb/C771uy2yjeF93SiGIYWiRLQ9X3K55KduSQP0oD?= =?us-ascii?q?8AMy8l/WrXjM1pka8dpwiu8U8si7XIaZ2YYaItNpjWeskXEDEZB5oDZ2l6Goq5?= =?us-ascii?q?KrA3Ia8ZJ+8B/tvloF8fsRa1BQ+tHf7ijDhSiS2vhPBo46EaCQjDmTcYMZcOvX?= =?us-ascii?q?DT9o6nMbdLF/iyyLjUwD7DafJPxDq775LHIEl48KO8GIloeM+U8nEBUgbMj1Ge?= =?us-ascii?q?s4vgZmzH3OMQtWOW9KxlCfLpjHQo+Vh8?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AhAwBcZZVehyIeaIFmHAEBAQEBBwEBE?= =?us-ascii?q?QEEBAEBgXuBJYFwVTIqhByJAoV8hR+FKpEtgRADXgEDAQwYAQ4FAQIEAQGGVx0?= =?us-ascii?q?GAQUzEwIQAQEFAQEBAgECAwQBEwEBAQoLCQgphV0MgjsFAwQZC4MNASEEBmUjA?= =?us-ascii?q?xQHAwIRARcBFAoXARIagwwBgnwEAQqRYZpPgSp/M4Q4AQMDgQ+DN4FADQITfxe?= =?us-ascii?q?FJIZrJg+BTD+DI1Bsgk4OCwEBAQEBgSMdAQERgyEXgkcEjh4kAgGIf4gWkQJ7B?= =?us-ascii?q?4JFfQSGC3KJXYYSglOBBYdBjDSEXCGPMocYghqFRIplgxeBPyqBeTMaMIMsCV8?= =?us-ascii?q?NmhsXg1CEWTuFQz8zAgEBgR4BAQUTCwGLY1qBaQEB?= X-IPAS-Result: =?us-ascii?q?A0AhAwBcZZVehyIeaIFmHAEBAQEBBwEBEQEEBAEBgXuBJYF?= =?us-ascii?q?wVTIqhByJAoV8hR+FKpEtgRADXgEDAQwYAQ4FAQIEAQGGVx0GAQUzEwIQAQEFA?= =?us-ascii?q?QEBAgECAwQBEwEBAQoLCQgphV0MgjsFAwQZC4MNASEEBmUjAxQHAwIRARcBFAo?= =?us-ascii?q?XARIagwwBgnwEAQqRYZpPgSp/M4Q4AQMDgQ+DN4FADQITfxeFJIZrJg+BTD+DI?= =?us-ascii?q?1Bsgk4OCwEBAQEBgSMdAQERgyEXgkcEjh4kAgGIf4gWkQJ7B4JFfQSGC3KJXYY?= =?us-ascii?q?SglOBBYdBjDSEXCGPMocYghqFRIplgxeBPyqBeTMaMIMsCV8NmhsXg1CEWTuFQ?= =?us-ascii?q?z8zAgEBgR4BAQUTCwGLY1qBaQEB?= X-IronPort-AV: E=Sophos;i="5.72,381,1580770800"; d="scan'208,217";a="345807389" X-MGA-submission: =?us-ascii?q?MDEmKVFyW0oPtUgeaDEs1RRSgXBAjrJTUYZ7Rq?= =?us-ascii?q?nyN5bFIVodZS+5vKmdFT+NbHHz6lJC75JAAcLdfT2fCX8HALt3FxUtGq?= =?us-ascii?q?08iLISvPpOSAyez44IatpF/8I757h95R4NKbGmvj/ETLWiw0a01iVeo7?= =?us-ascii?q?Cacj1ie1UjSLWXdR6XdlN5gg=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; 14 Apr 2020 09:28:13 +0200 Received: from set (cbg35-2-78-242-14-140.fbx.proxad.net [78.242.14.140]) (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 5E44556492E; Tue, 14 Apr 2020 09:28:11 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr, comp@lists.orbitalfox.eu Date: Tue, 14 Apr 2020 09:28:10 +0200 Message-ID: <878siy1q7p.fsf@polytechnique.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Apr 14 09:28:11 2020 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000000, queueID=D4F6E56492F 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: 18100 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of April 07 to 14, 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 Announcing dune-deps: produces a project-centric dependency graph OCamlformat 0.14.0 Dune 2.5.0 Old CWN Announcing dune-deps: produces a project-centric dependency graph =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=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=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Martin Jambon 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 Since the original announcement, I received some good feedback from users working on large projects. Thank you! The latest version released today is 1.2.0. It is already available on opam-repository (thank you @kit-ty-kate). The changes since the original release, besides bug fixes, include: =E2=80=A2 Ability to select or ignore dune files and folders to scan. For example, `dune-deps foo bar -x bar/test' uses all the dune files found in folders `foo' and `bar' but will ignore `bar/test'. This is useful for ignoring uninteresting parts of the project and for ignoring parse errors (see bug [#4]). =E2=80=A2 Executable name disambiguation. For example, private executable= s of the same name like `foo/main' and `bar/baz/main' are now rendered as `main' and `main' respectively instead of just `main'. =E2=80=A2 Optional exclusion of all executables or all external libraries= with `--no-exe' and `--no-ext'. =E2=80=A2 Ability to show only the dependencies and/or the reverse dependencies of selected libraries. See below. Whole-project graphs for large projects tend to be unreadable. To deal with that, I added support for an "hourglass view" (=E2=8C=9B) option for showing only the dependencies and reverse dependencies of a component of interest. The following is obtained with `-h opam-client' on the opam project: Please [let us know] if this works for your favorite projects! The source code of dune-deps makes it somewhat easier now to experiment with new strategies for eliminating nodes. See the `Filter' and `Filterable' modules. Check out `dune-deps --help' for detailed documentation on the options. [#4] [let us know] Sean Grove said and Martin Jambon replied =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=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 That=E2=80=99s a nice idea - it=E2=80=99d be great to have this ava= ilable as a GitHub action so anyone could do this with just a click or two! So, I made a [generic yaml workflow] that people can stick into their git/github project. This will automatically maintain the dependency graph `.deps/deps.png' which can be included in a readme. [generic yaml workflow] OCamlformat 0.14.0 =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: Etienne Millon 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 As described in this thread, ocamlformat 0.14.0 introduced a new algorithm to determine how documentation comments are placed. We underestimated the impact of making this the default, and this means that many unwanted diffs were present for 0.13.0 -> 0.14.0 upgrades. We are going to prepare a 0.14.1 release next week reverting this behavior back to the 0.13.0 defaults. Users still on 0.13.0 are encouraged to wait for this and upgrade directly to 0.14.1. Sorry for the inconvenience, and thanks for the feedback! Dune 2.5.0 =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: Rudi Grinberg 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 The dune team is pleased to announce the release of dune 2.5.0. This release has been brewing for a while and contains a few interesting features. I'll highlight some of the bigger ones: =E2=80=A2 The coq support has been thoroughly extended. There's now suppo= rt for both composition of coq libraries in the same workspace and extraction of coq code to OCaml. =E2=80=A2 There's a new `$ dune upgrade' subcommand to help you upgrade d= une files from 1.x to 2.x =E2=80=A2 `$ dune utop' will now load ppx preprocessors to the toplevel. = Ppx authors might enjoy this style of interactive development. =E2=80=A2 There's a new `(subdir ..)' stanza that can be used to evaluate stanzas in sub directories. This makes it possible to have a single dune file for an entire project (generated or not). I'd like to thank everyone who contributed to dune 2.5.0. Your help is greatly appreciated. Here's the full change log: 2.5.0 (09/04/2020) =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=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 Add a `--release' option meaning the same as `-p' but without t= he package filtering. This is useful for custom `dune' invocation in opam files where we don't want `-p' (#3260, @diml) =E2=80=A2 Fix a bug introduced in 2.4.0 causing `.bc' programs to be built with `-custom' by default (#3269, fixes #3262, @diml) =E2=80=A2 Allow contexts to be defined with local switches in workspace f= iles (#3265, fix #3264, @rgrinberg) =E2=80=A2 Delay expansion errors until the rule is used to build something (#3261, fix #3252, @rgrinberg, @diml) =E2=80=A2 [coq] Support for theory dependencies and compositional builds = using new field `(theories ...)' (#2053, @ejgallego, @rgrinberg) =E2=80=A2 From now on, each version of a syntax extension must be explici= tely tied to a minimum version of the dune language. Inconsistent versions in a `dune-project' will trigger a warning for version <=3D2.4 and an error for versions >2.4 of the dune language. (#3270, fixes #2957, @voodoos) =E2=80=A2 [coq] Bump coq lang version to 0.2. New coq features presented = this release require this version of the coq lang. (#3283, @ejgallego) =E2=80=A2 Prevent installation of public executables disabled using the `enabled_if' field. Installation will now simply skip such executables instead of raising an error. (#3195, @voodoos) =E2=80=A2 `dune upgrade' will now try to upgrade projects using versions = <2.0 to version 2.0 of the dune language. (#3174, @voodoos) =E2=80=A2 Add a `top' command to integrate dune with any toplevel, not ju= st utop. It is meant to be used with the new `#use_output' directive of OCaml 4.11 (#2952, @mbernat, @diml) =E2=80=A2 Allow per-package `version' in generated `opam' files (#3287, @toots) =E2=80=A2 [coq] Introduce the `coq.extraction' stanza. It can be used to extract OCaml sources (#3299, fixes #2178, @rgrinberg) =E2=80=A2 Load ppx rewriters in dune utop and add pps field to toplevel stanza. Ppx extensions will now be usable in the toplevel (#3266, fixes #346, @stephanieyou) =E2=80=A2 Add a `(subdir ..)' stanza to allow evaluating stanzas in sub directories. (#3268, @rgrinberg) =E2=80=A2 Fix a bug preventing one from running inline tests in multiple = modes (#3352, @diml) =E2=80=A2 Allow the use of the `%{profile}' variable in the `enabled_if' = field of the library stanza. (#3344, @mrmr1993) =E2=80=A2 Allow the use of `%{ocaml_version}' variable in `enabled_if' fi= eld of the library stanza. (#3339, @voodoos) =E2=80=A2 Fix dune build freezing on MacOS when cache is enabled. (#3249, fixes ##2973, @artempyanykh) 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 April 07 to 14, 2020.

Announcing dune-deps: produces a project-centric dependency gr= aph

Martin Jambon announced

Since the original announcement, I received some good feedback from users w= orking on large projects. Thank you!

The latest version released today is 1.2.0. It is already available on opam= -repository (thank you @kit-ty-kate). The changes since the original release, besides bug fixes, include:

  • Ability to select or ignore dune files and folders to scan. For example= , dune-deps foo bar -x bar/test uses all the dune files found = in folders foo and bar but will ignore bar/= test. This is useful for ignoring uninteresting parts of the project= and for ignoring parse errors (see bug #4).
  • Executable name disambiguation. For example, private executables of the= same name like foo/main and bar/baz/main are now= rendered as main<foo> and main<baz> = respectively instead of just main.
  • Optional exclusion of all executables or all external libraries with --no-exe and --no-ext.
  • Ability to show only the dependencies and/or the reverse dependencies o= f selected libraries. See below.

Whole-project graphs for large projects tend to be unreadable. To deal with= that, I added support for an "hourglass view" (=E2=8C=9B) option for showing only the dependencies and reverse depe= ndencies of a component of interest.

The following is obtained with -h opam-client on the opam proj= ect:

3D"66098faac9fd=

Please let us know<= /a> if this works for your favorite projects! The source code of dune-deps makes it somewhat easier now to experiment with ne= w strategies for eliminating nodes. See the Filter and Filterable modules.

Check out dune-deps --help for detailed documentation on the o= ptions.

Sean Grove said and Martin Jambon replied

That=E2=80=99s a nice idea - it=E2=80=99d be great to have this available a= s a GitHub action so anyone could do this with just a click or two!

So, I made a generi= c yaml workflow that people can stick into their git/github project. This will automatically maintain the dependency graph <= code>.deps/deps.png which can be included in a readme.

OCamlformat 0.14.0

Etienne Millon announced

As described in this thread, ocamlformat 0.14.0 introduced a new algorithm = to determine how documentation comments are placed. We underestimated the impact of making t= his the default, and this means that many unwanted diffs were present for 0.13.0 -> 0.14.0 upgrades.

We are going to prepare a 0.14.1 release next week reverting this behavior = back to the 0.13.0 defaults. Users still on 0.13.0 are encouraged to wait for this and upgrade directly to 0.14.1.

Sorry for the inconvenience, and thanks for the feedback!

Dune 2.5.0

Rudi Grinberg announced

The dune team is pleased to announce the release of dune 2.5.0. This releas= e has been brewing for a while and contains a few interesting features. I'll highlight some of the bigger ones:

  • The coq support has been thoroughly extended. There's now support for b= oth composition of coq libraries in the same workspace and extraction of co= q code to OCaml.
  • There's a new $ dune upgrade subcommand to help you upgrad= e dune files from 1.x to 2.x
  • $ dune utop will now load ppx preprocessors to the topleve= l. Ppx authors might enjoy this style of interactive development.
  • There's a new (subdir ..) stanza that can be used to evalu= ate stanzas in sub directories. This makes it possible to have a single dun= e file for an entire project (generated or not).

I'd like to thank everyone who contributed to dune 2.5.0. Your help is grea= tly appreciated.

Here's the full change log:

2.5.0 (09/04/2020)

  • Add a --release option meaning the same as -p= but without the package filtering. This is useful for custom dune invocation i= n opam files where we don't want -p (#3260, @diml)
  • Fix a bug introduced in 2.4.0 causing .bc programs to be b= uilt with -custom by default (#3269, fixes #3262, @diml)
  • Allow contexts to be defined with local switches in workspace files (#3= 265, fix #3264, @rgrinberg)
  • Delay expansion errors until the rule is used to build something (#3261= , fix #3252, @rgrinberg, @diml)
  • [coq] Support for theory dependencies and compositional builds using new field (theories ...) (#2053, @ejgallego, @rgrinberg)
  • From now on, each version of a syntax extension must be explicitely tie= d to a minimum version of the dune language. Inconsistent versions in a dune-project will trigger a warning for version <=3D2.4 and= an error for versions >2.4 of the dune language. (#3270, fixes #2957, @voodoos)
  • [coq] Bump coq lang version to 0.2. New coq features presented this rel= ease require this version of the coq lang. (#3283, @ejgallego)
  • Prevent installation of public executables disabled using the ena= bled_if field. Installation will now simply skip such executables instead of raising an error. (#3195, @voodoos)
  • dune upgrade will now try to upgrade projects using versio= ns <2.0 to version 2.0 of the dune language. (#3174, @voodoos)
  • Add a top command to integrate dune with any toplevel, not= just utop. It is meant to be used with the new #use_output directiv= e of OCaml 4.11 (#2952, @mbernat, @diml)
  • Allow per-package version in generated opam f= iles (#3287, @toots)
  • [coq] Introduce the coq.extraction stanza. It can be used = to extract OCaml sources (#3299, fixes #2178, @rgrinberg)
  • Load ppx rewriters in dune utop and add pps field to toplevel stanza. P= px extensions will now be usable in the toplevel (#3266, fixes #346, @stephanieyou)
  • Add a (subdir ..) stanza to allow evaluating stanzas in su= b directories. (#3268, @rgrinberg)
  • Fix a bug preventing one from running inline tests in multiple modes (#3352, @diml)
  • Allow the use of the %{profile} variable in the enab= led_if field of the library stanza. (#3344, @mrmr1993)
  • Allow the use of %{ocaml_version} variable in enable= d_if field of the library stanza. (#3339, @voodoos)
  • Fix dune build freezing on MacOS when cache is enabled. (#3249, fixes #= #2973, @artempyanykh)

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.

--=-=-=--