Dune 3.11.0
We're pleased to announce the release of Dune 3.11!
Here are some highlights from this release.
Dune Terminal User Interface (TUI)
The biggest highlight in this release is the introduction of the new Terminal User Interface (TUI) display mode.
You can now run dune build --display tui
to open a TUI. We recommend using it in conjunction with Dune watch
mode (dune build -w --display tui
).
From the TUI, you will be able to navigate messages from Dune build, scroll through them, or click to minimize them. Press ?
to show the help screen.
Installing Source Directories
Another exciting feature in this release is the new (source_trees ..)
field added to the (install ..)
stanzas to add every files in a directory to the installation. For instance, to add your manual to the installation, you can use:
(install
(section doc)
(source_trees manual))
Let us know what you think about these features, and don't hesistate to open issues on Dune's bug tracker if you encounter any issue.
See full changelog
Added
-
enabled_if
now supportsarch_sixtyfour
variable (#8023, fixes #7997, @Alizter) -
Experimental: Added a
$ dune monitor
command that can connect to a runningdune build
in watch mode and display the errors and progress. (#8152, @Alizter) -
The
progress
RPC procedure now has an extra field for theIn_progress
constructor for the number of failed jobs. (#8212, @Alizter) -
Add a
--preview
flag todune fmt
which causes it to print out the changes it would make without applying them (#8289, @gridbugs) -
Introduce
(source_trees ..)
to the install stanza to allow installing entire source trees. (#8349, @rgrinberg) -
Add
--stop-on-first-error
option todune build
which will terminate the build when the first error is encountered. (#8400, @pmwhite and @Alizter) -
Dune now displays the number of errors when waiting for changes in watch mode. (#8408, fixes #6889, @Alizter)
-
Add
with_prefix
keyword for changing the prefix of the destination of installed files matched by globs. (#8416, @gridbugs) -
Added experimental
--display tui
option for Dune that opens an interactive Terminal User Interface (TUI) when Dune is running. Press '?' to open up a help screen when running for more information. (#8429, @Alizter and @rgrinberg) -
Add a
warnings
field todune-project
files as a unified mechanism to enable or disable dune warnings (@rgrinberg, 8448) -
dune exec
: support syntax like%{bin:program}
. This can appear anywhere in the command line, so things likedune exec time %{bin:program}
now work. (#6035, #8474, fixes #2691, @emillon, @Leonidas-from-XIV) -
Add a new alias
@doc-json
to build odoc documentation in JSON format. This output can be consumed by external tools. (#8178, @emillon)
Changed and Fixed
-
Use
posix_spawn
instead offork
on MacOS. This gives us a performance boost and allows us to re-enable thread. (#8090, @rgrinberg) -
Modules that were declared in
(modules_without_implementation)
,(private_modules)
or(virtual_modules)
but not declared in(modules)
will raise an error. (#7674, @Alizter) -
No longer emit linkopts(javascript) in META files (#8168, @hhugo)
-
RPC message styles are now serialised meaning that RPC diagnostics keep their ANSI styling. (#8516, fixes #6921, @Alizter)
-
Truncate output from actions that produce too much output (@tov, #8351)
-
Allow libraries to shadow OCaml built-in libraries. Previously, built-in libraries would always take precedence. (@rgrinberg, #8558)
-
dune utop
no longer linksutop
in "custom" mode, which should make this command considerably faster. (#8631, fixes #6894, @nojb) -
Ensure that package names in
dune-project
are valid opam package names. (#8331, @emillon) -
init: check that module names are valid (#8644, fixes #8252, @emillon)
-
dune init: parse
--public
as a public name (#8603, fixes #7108, @emillon) -
Stop signing source files with substitutions. Sign only binaries instead (#8361, fixes #8360, @anmonteiro)
-
Make copy sandbox support directory targets. (#8705, fixes #7724, @emillon)
Deprecated and Removed
-
Deprecate install destination paths beginning with ".." to prevent packages escaping their designated installation directories. (#8350, @gridbugs)
-
Remove warning against
.dune
files generated by pre Dune 2.0 (#8611, @rgrinberg) -
Remove versions 0.1 and 0.2 of the experimental ctypes extension. (#8293, @emillon)