Dune 3.8.0
The dune team is pleased to announce the release of Dune 3.8.0.
It is now available in opam-repository
. As usual, it should always be safe to upgrade your dune
package: new features and deprecations are only available if you upgrade the language version in your dune-project
files.
🌟 Spotlight Features
- Dune
concurrent
action
Dune 3.8.0 introduced the new concurrent
action. You can now use it instead of the progn
action to execute actions concurrently.
For instance:
(rule
(action
(concurrent
(write-file A "I am file A.\n")
(write-file B "I am certainly file B.\n")
(write-file C "I am most certainly file C.\n"))))
will write to files A
, B
and C
concurrently.
- Support for
.mld
files
In Dune 3.7.0, we introduced version 0.3
of the mdx
stanza, which came with support for .mld
files.
In Dune 3.8.0, .mld
files are now supported by default with version 0.4
of the mdx
stanza!
Have a look at this diff to see how to migrate your code to the new stanza version.
See full changelog
Added
-
Introduce mdx stanza 0.4 requiring mdx >= 2.3.0 which updates the default list of files to include
*.mld
files (#7582, @Leonidas-from-XIV) -
Allow
(stdlib ...)
to be used with(wrapped false)
in library stanzas (#7139, @anmonteiro). -
Allow the main module of a library with
(stdlib ...)
to depend on other libraries (#7154, @anmonteiro). -
Support
(link_flags ...)
in(cinaps ...)
stanza. (#7423, fixes #7416, @nojb) -
Allow
(package ...)
in any position within(rule ...)
stanza (#7445, @Leonidas-from-XIV) -
Added a new user action
(concurrent )
which is like(progn )
but runs the actions concurrently. (#6933, @Alizter) -
Accept the Ordered Set Language for the
modes
field inlibrary
stanzas (#6611, @anmonteiro). -
Allow parallel execution of inline tests partitions (#7012, @hhugo)
-
Add the
--display-separate-messages
flag to separate the error messages produced by commands with a blank line. (#6823, fixes #6158, @esope) -
Add
--watch-exclusions
to Dune build options (#7216, @jonahbeckford) -
Adds support for loading plugins in toplevels (#6082, fixes #6081, @ivg, @richardlford)
-
Introduce a
public_headers
field on libraries. This field is likeinstall_c_headers
, but it allows to choose the extension and choose the paths for the installed headers. (#7512, @rgrinberg) -
Dune can now detect Coq theories from outside the workspace. This allows for composition with installed theories (not necessarily installed with Dune). (#7047, @Alizter, @ejgallego)
-
Added a
--no-build
option todune coq top
for avoiding rebuilds (#7380, fixes #7355, @Alizter) -
Add a
coqdoc_flags
field to thecoq.theory
stanza allowing the user to pass extra arguments tocoqdoc
. (#7676, fixes #7954 @Alizter) -
Preliminary support for Coq compiled intefaces (
.vos
files) enabled via(mode vos)
incoq.theory
stanzas. This can be used in combination withdune coq top
to obtain fast re-building of dependencies (with no checking of proofs) prior to stepping into a file. (#7406, @rlepigre) -
Read
pkg-config
arguments from thePKG_CONFIG_ARGN
environment variable (#1492, #7734, @anmonteiro) -
Use
$PKG_CONFIG
, when set, to find thepkg-config
binary (#7469, fixes #2572, @anmonteiro)
Changed
-
Bootstrap: remove reliance on shell. Previously, we'd use the shell to get the number of processors. (#7274, @rgrinberg)
-
Non-user proccesses such as version control or config checking are now run silently. (#6994, fixes #4066, @Alizter)
-
Bytecode executables built for JSOO are linked with
-noautolink
and no longer depend on the shared stubs of their dependent libraries (#7156, @nojb) -
Always include
opam
files in the generated.install
file. Previously, it would not be included whenever(generate_opam_files true)
was set and the.install
file wasn't yet generated. (#7547, @rgrinberg)
Deprecated
-
Modules that were declared in
(modules_without_implementation)
,(private_modules)
or(virtual_modules)
but not declared in(modules)
will cause Dune to emit a warning which will become an error in 3.9. (#7608, fixes #7026, @Alizter) -
Coq language versions less 0.8 are deprecated, and will be removed in an upcoming Dune version. All users are required to migrate to
(coq lang 0.8)
which provides the right semantics for theories that have been globally installed, such as those coming from opam (@ejgallego, @Alizter)
Fixed
-
Find
pps
dependencies in the host context when cross-compiling, (#7415, fixes #4156, @anmonteiro) -
Fix plugin loading with findlib. The functionality was broken in 3.7.0. (#7556, @anmonteiro)
-
Load the host context
findlib.conf
when cross-compiling (#7428, fixes #1701, @rgrinberg, @anmonteiro) -
Allow overriding the
ocaml
binary with findlib configuration (#7648, @rgrinberg) -
Resolve
ppx_runtime_libraries
in the target context when cross compiling (#7450, fixes #2794, @anmonteiro) -
Fix
dune install
when cross compiling (#7410, fixes #6191, @anmonteiro, @rizo) -
Fix string quoting in the json file written by
--trace-file
(#7773, @rleshchinskiy) -
Correctly set
MANPATH
indune exec
. Previously, we would use thebin/
directory of the context. (#7655, @rgrinberg) -
merlin: ignore instrumentation settings for preprocessing. (#7606, fixes #7465, @Alizter)
-
When a rule's action is interrupted, delete any leftover directory targets. This is consistent with how we treat file targets. (#7564, @rgrinberg)
-
Fix dune crashing on MacOS in watch mode whenever
$PATH
contains$PWD
(#7441, fixes #6907, @rgrinberg) -
Dune in watch mode no longer builds concurrent rules in serial (#7395 @rgrinberg, @jchavarri)
-
dune coq top
now correctly respects the project root when called from a subdirectory. However, absolute filenames passed todune coq top
are no longer supported (due to being buggy) (#7357, fixes #7344, @rlepigre and @Alizter) -
RPC: Ignore SIGPIPE when clients suddenly disconnect (#7299, #7319, fixes #6879, @rgrinberg)
-
Always clean up the UI on exit. (#7271, fixes #7142 @rgrinberg)
-
Bootstrap: correctly detect the number of processors by allowing
nproc
to be looked up in$PATH
(#7272, @Alizter) -
Speed up file copying on macos by using
clonefile
when available (@rgrinberg, #7210) -
Support commands that output 8-bit and 24-bit colors in the terminal (#7188, @Alizter)
-
Speed up rule generation for libraries and executables with many modules (#7187, @jchavarri)
-
Do not re-render UI on every frame if the UI doesn't change (#7186, fix #7184, @rgrinberg)
-
Make
coq_db
creation in scope lazy (@ejgallego, #7133) -
dune install now respects --display quiet mode (#7116, fixes #4573, fixes #7106, @Alizter)
-
Stub shared libraries (
dllXXX_stubs.so
) in Dune-installed libraries could not be used as dependencies of libraries in the workspace (eg when compiling to bytecode and/or Javascript). This is now fixed. (#7151, @nojb) -
Fix regression where Merlin was unable to handle filenames with uppercase letters under Windows. (#7577, @nojb)
-
On nix+macos, pass
-f
to the codesign hook to avoid errors when the binary is already signed (#7183, fixes #6265, @greedy) -
Fix bug where RPC clients built with dune-rpc-lwt would crash when closing their connection to the server (#7581, @gridbugs)
-
Fix RPC server on Windows (used for OCaml-LSP). (#7666, @nojb)