[ANN] Dune 1.5.0

On behalf of the dune team, I’m pleased to announce the 1.5.0 release of dune. This release does not contain any major features, but it does contain a few notable bug fixes and a couple of useful little additions. First of all, $ dune exec now supports C-c again - I know this affected many of you. This releases introduces a couple of new aliases that will hopefully find their way into your workflows.

The first alias is @all and has been much requested by our users. $ dune build @dir/all will build all user defined targets in a the directory dir. This would include binaries, libraries, and user defined targets in dir. This alias should have been the defaulted instead of @install when running $ dune build, but we’ll have to wait until dune 2.0 to make this compatibility breaking change. In the mean time, I highly recommend everyone to use $ dune build @all instead of $ dune build meanwhile. You may also set the default alias per project as well:

(alias
 (name default)
 (deps (alias_rec all)))

The second new alias is @check. It is inspired by cargo’s check subcommand and roughly corresponds to type checking the project and building all artifacts necessary for editor integration - cmt, cmti’s, .merlin, etc. This is the fastest target to verify that a project is in a valid state. Note that this alias will not relink binaries so it might not catch errors such as missing stubs. I find this alias handy when doing large, type driven refactoring of a codebase.

The rest of the change log is replicated below. Happy hacking!

1.5.0 (1/11/2018)

  • Filter out empty paths from OCAMLPATH and PATH (#1436, @rgrinberg)

  • Do not add the lib.cma.js target in lib’s directory. Put this target in a
    sub directory instead. (#1435, fix #1302, @rgrinberg)

  • Install generated OCaml files with a .ml rather than a .ml-gen extension
    (#1425, fix #1414, @rgrinberg)

  • Allow to use the bigarray library in >= 4.07 without ocamlfind and without
    installing the corresponding otherlib. (#1455, @nojb)

  • Add @all alias to build all targets defined in a directory (#1409, fix
    #1220, @rgrinberg)

  • Add @check alias to build all targets required for type checking and tooling
    support. (#1447, fix #1220, @rgrinberg)

  • Produce the odoc index page with the content wrapper to make it consistent
    with odoc’s theming (#1469, @rizo)

  • Unblock signals in processes started by dune (#1461, fixes #1451,
    @jeremiedimino)

  • Respect OCAMLFIND_TOOLCHAIN and add a toolchain option to contexts in the
    workspace file. (#1449, fix #1413, @rgrinberg)

  • Fix error message when using copy_files stanza to copy files from
    a non sub directory with lang set to dune < 1.3 (#1486, fixes #1485,
    @NathanReb)

  • Install man pages in the correct subdirectory (#1483, fixes #1441, @emillon)

  • Fix version syntax check for test stanza’s action field. Only
    emits a warning for retro-compatibility (#1474, fixes #1471,
    @NathanReb)

  • Fix interpretation of paths in env stanzas (#1509, fixes #1508, @jeremiedimino)

  • Add context_name expansion variable (#1507, @rgrinberg)

  • Use shorter paths for generated on-demand ppx drivers. This is to
    help Windows builds where paths are limited in length (#1511, fixes
    #1497, @jeremiedimino)

  • Fix interpretation of environment variables under setenv. Also forbid
    dynamic environment names or values (#1503, @rgrinberg).

14 Likes