Dune 3.20.0
The Dune Team is happy to announce the release of Dune 3.20.0.
This release contains some important bug fixes. It contains new features for tests, such as the possibility to use an alias and the possibility to declare a timeout for cram tests. This release also provides new possibilities for the watch mode, like the ability to run an executable or promote files while the watch mode is running.
A significant change in this release is how the dune file formatter acts. It will now try to fill the line instead of using the vertical format.
See full changelog
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994, @rgrinberg)
-
fix:
$ dune substshould not fail when adding the version field in opam files (#11801, fixes #11045, @btjorge) -
Kill all processes in the process group after the main process has terminated; in particular this avoids background processes in cram tests to stick around after the test finished (#11841, fixes #11820, @Alizter, @Leonidas-from-XIV)
Added
-
(tests)stanzas now generate aliases with the test name. To run(test (name a))you can dodune build @runtest-a. (#11558, grants part of #10239, @Alizter) -
Inline test libraries now produce aliases
runtest-name_of_liballowing users to run specific inline tests asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version control repository has been detected (#11801, @btjorge) -
Allow
dune execto run concurrently with another instance of dune in watch mode (#11840, @gridbugs) -
Introduce
%{os},%{os_version},%{os_distribution}, and%{os_family}percent forms. These have the same values as their opam counterparts. (#11863, @rgrinberg) -
Introduce option
(implicit_transitive_deps false-if-hidden-includes-supported)that is equivalent to(implicit_transitive_deps false)when-His supported by the compiler (OCaml >= 5.2) and equivalent to(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that would be run (#11905, @gridbugs) -
dune runtestcan now understand absolute paths as well as run tests in specific build contexts (#11936, @Alizter). -
Added 'empty' alias which contains no targets. (#11556 #11952 #11955 #11956, grants #4161, @Alizter and @rgrinberg)
-
Allow
dune promoteto properly run while a watch mode server is running (#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags as an alternative to the@@and@syntax in the command line (#12043, fixes #5775, @rgrinberg) -
Added a
(timeout <float>)field to the(cram)stanza to specify per-test time limits. Tests exceeding the timeout are terminated with an error. (#12041, @Alizter)
Changed
-
Format long lists in s-expressions to fill the line instead of formatting them in a vertical way (#10892, fixes #10860, @nojb)
-
Switch from MD5 to BLAKE3 for digesting targets and rules. BLAKE3 is both more performant and difficult to break than MD5 (#11735, @rgrinberg, @Alizter)
-
Print a warning when
dune buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit(#11987, fixes #11986, @anmonteiro)