[ANN] Dune 1.9.0

On behalf of the dune team, I’m pleased to announce the release of Dune 1.9.0. This release introduces a few exciting new features:

  • A tagging mechanism for implementations called variants
  • The ability to build libraries in the Coq proof assistant.
  • A new dune init command to help users quickly generate boilerplate and get start with dune projects (contributed by @shonfeder)

I would like to thank Lucas Pluvinage and @ejgallego for contributing the first two features respectively. They’ve also collaborated on a blog post to describe these features in detail.

As usual, the change log is replicated here for your convenience:

1.9.0 (09/04/2019)

  • Warn when generated .merlin does not reflect the preprocessing
    specification. This occurs when multiple stanzas in the same directory use
    different preprocessing specifications. This warning can now be disabled with
    allow_approx_merlin (#1947, fix #1946, @rgrinberg)

  • Watch mode: display “Success” in green and “Had errors” in red (#1956,

  • Fix glob dependencies on installed directories (#1965, @rgrinberg)

  • Add support for library variants and default implementations. (#1900,

  • Add experimental $ dune init command. This command is used to create or
    update project boilerplate. (#1448, fixes #159, @shonfeder)

  • Experimental Coq support (fix #1466, @ejgallego)

  • Install .cmi files of private modules in a .private directory (#1983, fix
    #1973 @rgrinberg)

  • Fix dune subst attempting to substitute on directories. (#2000, fix #1997,

  • Do not list private modules in the generated index. (#2009, fix #2008,

  • Warn instead of failing if an opam file fails to parse. This opam file can
    still be used to define scope. (#2023, @rgrinberg)

  • Do not crash if unable to read a directory when traversing to find root
    (#2024, @rgrinberg)

  • Do not exit dune if some source directories are unreadable. Instead, warn the
    user that such directories need to be ignored (#2004, fix #310, @rgrinberg)

  • Fix nested (binaries ..) fields in the env stanza. Previously, parent
    binaries fields would be ignored, but instead they should be combined.
    (#2029, @rgrinberg)

  • Allow “.” in c_names and cxx_names (#2036, fix #2033, @rgrinberg)

  • Format rules: if a dune file uses OCaml syntax, do not format it.
    (#2014, fix #2012, @emillon)


Update: we found a flaw in the design of library variants and are making some changes to the feature, see this post for details.