# \[ANN\] dune 3.11.0

**URL:** <https://discuss.ocaml.org/t/ann-dune-3-11-0/13173>\
**Category:** Ecosystem\
**Tags:** dune, announce\
**Created:** [October 6, 2023, 8:11am UTC](https://discuss.ocaml.org/t/ann-dune-3-11-0/13173 "2023-10-06T08:11:56Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![emillon](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/emillon/32/1206_2.png) [@emillon](https://discuss.ocaml.org/u/emillon)\
**Post date:** [October 6, 2023, 8:11am UTC](https://discuss.ocaml.org/t/ann-dune-3-11-0/13173/1 "2023-10-06T08:11:57Z")

</div>

The Dune team is pleased to announce the release of Dune 3.11 [“for workgroups”](https://en.wikipedia.org/wiki/Windows_3.1x#Windows_for_Workgroups_3.11).

Here is the changelog:

# Added

- `enabled_if` now supports `arch_sixtyfour` variable (#8023, fixes #7997,  
@Alizter)

- Experimental: Added a `$ dune monitor` command that can connect to a running  
`dune build` in watch mode and display the errors and progress. (#8152,  
@Alizter)

- The `progress` RPC procedure now has an extra field for the `In_progress`  
constructor for the number of failed jobs. (#8212, @Alizter)

- Add a `--preview` flag to `dune 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 to `dune 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 to `dune-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 like `dune 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 of `fork` 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 builtin libraries. Previously, builtin  
libraries would always take precedence. (@rgrinberg, #8558)

- `dune utop` no longer links `utop` 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)

---

<div class="post-metadata">

**Author:** ![emillon](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/emillon/32/1206_2.png) [@emillon](https://discuss.ocaml.org/u/emillon)\
**Post date:** [October 12, 2023, 11:59am UTC](https://discuss.ocaml.org/t/ann-dune-3-11-0/13173/2 "2023-10-12T11:59:39Z")

</div>

We just released dune 3.11.1 with the following fixes:

# Fixed

- Fix `dune rpc` commands on Windows (#8806, fixes #8799, @nojb)
- Fix `inline_tests` when the partition list is empty (#8849, fixes #8848, @hhugo)
