Dune 2.7.0
On behalf of the dune team, I'm pleased to announce the release of dune 2.7.0. This release adds a couple of important features and many bug fixes. I'll just briefly summarize the two features, and let our improved documentation elaborate on the details.
The first one is first class support for instrumentation tools such as bisect_ppx and landmarks. This is one of the most requested dune features ever, and we're pleased to show you all what we've come up with
Special thanks to @stephanieyou & @nojb for implementing this feature. Many thanks to @aantron for tirelessly iterating on the end user experience with us.
While the features is looking quite good already, we consider it a "first take" on this subject. We welcome your experience reports and feature requests.
The second feature we're introducing this release is dune's cram testing framework. The cram framework is our secret weapon for making dune (relatively) bug free. I'll soon write up a dedicated post to give you a flavour of how it works. To those who can't wait, there's a new section in the documentation that explains everything.
As always, the change log is replicated below for your convenience.
Happy Hacking.
See full changelog
-
Write intermediate files in a
.mdx
folder for eachmdx
stanza to prevent the corresponding actions to be executed as part of the@all
alias (#3659, @NathanReb) -
Read Coq flags from
env
(#3547 , fixes #3486, @gares) -
Allow bisect_ppx to be enabled/disabled via dune-workspace. (#3404, @stephanieyou)
-
Formatting of dune files is now done in the executing dune process instead of in a separate process. (#3536, @nojb)
-
Add a
--debug-artifact-substution
flag to help debug problem with version not being captured bydune-build-info
(#3589, @jeremiedimino) -
Allow the use of the
context_name
variable in theenabled_if
fields of executable(s) and install stanzas. (#3568, fixes #3566, @voodoos) -
Fix compatibility with OCaml 4.12.0 when compiling empty archives; no .a file is generated. (#3576, @dra27)
-
$ dune utop
no longer tries to load optional libraries that are unavailable (#3612, fixes #3188, @anuragsoni) -
Fix dune-build-info on 4.10.0+flambda (#3599, @emillon, @jeremiedimino).
-
Allow multiple libraries with
inline_tests
to be defined in the same directory (#3621, @rgrinberg) -
Run exit hooks in jsoo separate compilation mode (#3626, fixes #3622, @rgrinberg)
-
Add (alias ...), (mode ...) fields to (copy_fields ...) stanza (#3631, @nojb)
-
(copy_files ...) now supports copying files from outside the workspace using absolute file names (#3639, @nojb)
-
Dune does not use
ocamlc
as an intermediary to call C compiler anymore. Configuration flagsocamlc_cflags
andocamlc_cppflags
are always prepended to the compiler arguments. (#3565, fixes #3346, @voodoos) -
Revert the build optimization in #2268. This optimization slows down building individual executables when they're part of an
executables
stanza group (#3644, @rgrinberg) -
Use
{dev}
rather than{pinned}
in the generated.opam
file. (#3647, @kit-ty-kate) -
Insert correct extension name when editing
dune-project
files. Previously, dune would just insert the stanza name. (#3649, fixes #3624, @rgrinberg) -
Fix crash when evaluating an
mdx
stanza that depends on unavailable packages. (#3650, @CraigFe) -
Fix typo in
cache-check-probablity
field in dune config files. This field now requires 2.7 as it wasn't usable before this version. (#3652, @edwintorok) -
Add
"odoc" {with-doc}
to the dependencies in the generated.opam
files. (#3667, @kit-ty-kate) -
Do not allow user actions to capture dune's stdin (#3677, fixes #3672, @rgrinberg)
-
(subdir ...)
stanzas can now appear in dune files used via(include ...)
. (#3676, @nojb)