Hello Here is the latest OCaml Weekly News, for the week of April 07 to 14, 2020. Table of Contents ───────────────── 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 ═════════════════════════════════════════════════════════════════ Archive: Martin Jambon announced ─────────────────────── 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: • 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' and `main' 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 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" (⌛) 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 ───────────────────────────────────────── That’s a nice idea - it’d be great to have this available 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 ══════════════════ Archive: 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 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 ══════════ Archive: Rudi Grinberg announced ─────────────────────── 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: • The coq support has been thoroughly extended. There's now support for both composition of coq libraries in the same workspace and extraction of coq code to OCaml. • There's a new `$ dune upgrade' subcommand to help you upgrade dune files from 1.x to 2.x • `$ dune utop' will now load ppx preprocessors to the toplevel. Ppx authors might enjoy this style of interactive development. • 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) ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ • Add a `--release' option meaning the same as `-p' but without the package filtering. This is useful for custom `dune' invocation in opam files where we don't want `-p' (#3260, @diml) • Fix a bug introduced in 2.4.0 causing `.bc' programs to be built with `-custom' by default (#3269, fixes #3262, @diml) • Allow contexts to be defined with local switches in workspace files (#3265, 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 tied to a minimum version of the dune language. Inconsistent versions in a `dune-project' will trigger a warning for version <=2.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 release require this version of the coq lang. (#3283, @ejgallego) • 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) • `dune upgrade' will now try to upgrade projects using versions <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' directive of OCaml 4.11 (#2952, @mbernat, @diml) • Allow per-package `version' in generated `opam' files (#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. Ppx extensions will now be usable in the toplevel (#3266, fixes #346, @stephanieyou) • Add a `(subdir ..)' stanza to allow evaluating stanzas in sub 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 `enabled_if' field of the library stanza. (#3344, @mrmr1993) • Allow the use of `%{ocaml_version}' variable in `enabled_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 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]