[ANN] Dune 1.0.0

Hi,

It is my pleasure to announce the 1.0.0 release of Dune!

Dune is a built system for OCaml and Reason projects. It aims at building things fast and providing a smooth user experience.

Dune 1.0.0 is now available on github and in opam.

This is a big milestone for the project as it is the first release using the new Dune name that the community helped to choose. Dune started about a year and a half ago as the more narrow scoped Jbuilder and as since then proven itself to be the right tool for the job.

A big part of the work for this release was preparing the project for long-term support. Dune is the kind of project that will pretty much continue to evolve forever: it needs to keep up with the OCaml compiler evolving, development workflows changing, new kinds of tools with specific needs, etc… While doing so, it also needs to offer stability so that projects released now will continue to build with future versions of Dune.

Meeting these two constraints is a challenge. However, we had to do this for the renaming: we changed many things in Dune using what we learned from the Jbuilder experience. Still, Dune is able to understand and build Jbuilder projects. The mechanism used to support both Jbuilder and Dune projects is fully generic and will be the basis for future evolution.

You can find the full list of changes and bug fixes since Jbuilder 1.0+beta20 on the github release page. Following is an overview of some the new features:

  • General cleanup of the syntax: less parentheses, better behaved variables

  • Introduction of a dune.configurator library to help projects with C stubs detect and query the environment

  • General improvement of the default behavior: more parallelism by default, development mode by default

  • Better support for changing the defaults: it is now possible to set the default flags or change what dune build does by default

  • Support for setting the build directory

  • Better support for expectation tests on Windows

29 Likes

@jeremiedimino @rgrinberg and everyone involved, thanks for the great work! Congrats!

3 Likes

Good work!

The following actions will be performed:

  • install dune 1.0.0
  • upgrade jbuilder 1.0+beta20 to transition [uses dune]
    =-=- jbuilder.transition installed successfully -=-=-=-=
    => Jbuilder has been renamed and the jbuilder package is now a transition
    => package. Use the dune package instead.

I wondered how this was going to work; very smooth.

I didn’t find jbuilder intuitive enough for my project so I had to port a build system I wrote previously to build OCaml projects, but if you cleaned up the syntax this is something I should definitely be learning. Great job! Thank you.

Thanks! There are definitely fewer parentheses in dune files, this alone should make the syntax easier to learn. Hope you find it clearer. If you hit any roadblocks feel free to open an issue on github or open a thread here - dune developers will read it.

2 Likes