Skip to content

[new release] dune (15 packages) (3.20.0~alpha4) #28333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

maiste
Copy link
Contributor

@maiste maiste commented Aug 12, 2025

Fast, portable, and opinionated build system

CHANGES:

Fixed

Added

Changed

CHANGES:

### Fixed

- Stop re-running cram tests after promotion when it's not necessary (ocaml/dune#11994,
  @rgrinberg)

- fix: `$ dune subst` should not fail when adding the version field in opam
  files (ocaml/dune#11801, fixes ocaml/dune#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 (ocaml/dune#11841, fixes ocaml/dune#11820, @Alizter,
  @Leonidas-from-XIV)

### Added

- `(tests)` stanzas now generate aliases with the test name. To run
  `(test (name a))` you can do `dune build @runtest-a`. (ocaml/dune#11558, grants part of ocaml/dune#10239,
  @Alizter)

- Inline test libraries now produce aliases `runtest-name_of_lib`
  allowing users to run specific inline tests as `dune build
  @runtest-name_of_lib`. (ocaml/dune#11109, partially fixes ocaml/dune#10239, @Alizter)

- feature: `$ dune subst` use version from `dune-project` when no version
  control repository has been detected (ocaml/dune#11801, @btjorge)

- Allow `dune exec` to run concurrently with another instance of dune in watch
  mode (ocaml/dune#11840, @gridbugs)

- Introduce `%{os}`, `%{os_version}`, `%{os_distribution}`, and `%{os_family}`
  percent forms. These have the same values as their opam counterparts.
  (ocaml/dune#11863, @rgrinberg)

- Introduce option `(implicit_transitive_deps false-if-hidden-includes-supported)`
  that is equivalent to `(implicit_transitive_deps false)` when `-H` is
  supported by the compiler (OCaml >= 5.2) and equivalent to
  `(implicit_transitive_deps true)` otherwise. (ocaml/dune#11866, fixes ocaml/dune#11212, @nojb)

- Add `dune describe location` for printing the path to the executable that
  would be run (ocaml/dune#11905, @gridbugs)

- `dune runtest` can now understand absolute paths as well as run tests in
  specific build contexts (ocaml/dune#11936, @Alizter).

- Added 'empty' alias which contains no targets. (ocaml/dune#11556 ocaml/dune#11952 ocaml/dune#11955 ocaml/dune#11956,
  grants ocaml/dune#4161, @Alizter and @rgrinberg)

- Allow `dune promote` to properly run while a watch mode server is running
  (ocaml/dune#12010, @ElectreAAS)

- Add `--alias` and `--alias-rec` flags as an alternative to the `@@` and `@`
  syntax in the command line (ocaml/dune#12043, fixes ocaml/dune#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.
  (ocaml/dune#12041, @Alizter)

### Changed

- Format long lists in s-expressions to fill the line instead of
  formatting them in a vertical way (ocaml/dune#10892, fixes ocaml/dune#10860, @nojb)

- Switch from MD5 to BLAKE3 for digesting targets and rules. BLAKE3 is both more
  performant and difficult to break than MD5 (ocaml/dune#11735, @rgrinberg, @Alizter)

- Print a warning when `dune build` runs over RPC (ocaml/dune#11833, @gridbugs)

- Stop emitting empty module group wrapper `.js` file in `melange.emit`
  (ocaml/dune#11987, fixes ocaml/dune#11986, @anmonteiro)
@maiste
Copy link
Contributor Author

maiste commented Aug 13, 2025

@Alizter I have done the comparison with the previous release, and it seems the regression is fixed. If that's good for you too, I'll close the PR and open the definitive 3.20 one.

@Alizter
Copy link

Alizter commented Aug 13, 2025

@mseri Could you double check if we have any new failures? I am not quite sure how to interpret all the failing jobs to see if they are relevant for us.

@shonfeder
Copy link
Contributor

Is it possible that this failure from odoc3 is relevant? https://opam.ci.ocaml.org/github/ocaml/opam-repository/commit/e2e946ed909ce4d2c3e1e35bbaff78b566760128/variant/compilers,5.3,dune.3.20.0~alpha4,revdeps,odoc.3.0.0

See, e.g.,

### output ###
# (cd _build/default/src/html_support_files && /home/opam/.opam/5.3/bin/ocaml-crunch . -e js -e css -e ttf -e woff2 -o odoc_html_support_files.ml -m plain)
# Generating odoc_html_support_files.ml
# Skipping generation of .mli
# File "test/generators/link.dune.inc", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/generators/link.dune.inc _build/default/test/generators/link.dune.inc.gen
# diff --git a/_build/default/test/generators/link.dune.inc b/_build/default/test/generators/link.dune.inc.gen
# index 15a2968..bd7b1d4 100644
# --- a/_build/default/test/generators/link.dune.inc
# +++ b/_build/default/test/generators/link.dune.inc.gen
# @@ -812,15 +812,7 @@
#    (targets Alerts.html.gen Alerts-Top1.html.gen)
#    (package odoc)
#    (action
# -   (run
# -    odoc
# -    html-generate
# -    --indent
# -    --flat
# -    --extra-suffix
# -    gen
# -    -o
# -    .
# +   (run odoc html-generate --indent --flat --extra-suffix gen -o .
#      %{dep:../alerts.odocl}))
#    (enabled_if
#     (>= %{ocaml_version} 4.04)))

Am I correct in thinking we just need an upper bound on odoc 3 for this?

@shonfeder
Copy link
Contributor

Nothing else looks relevant to me, after comparing the diff of revdep failures against those for 3.19 in https://github.com/ocaml/dune/wiki/Reverse-dependencies-CI-logs .

@maiste maiste marked this pull request as draft August 18, 2025 20:19
@maiste
Copy link
Contributor Author

maiste commented Aug 18, 2025

Am I correct in thinking we just need an upper bound on odoc 3 for this?

Maybe, this is only a formatting issue in the tests due to ocaml/odoc#1338. The dune file formatting changes in 3.20.0 meaning it is breaking the test as it formats differently. It might require a bump in the dune version on the odoc side in prevision for the next odoc release. There are some explorations on the Dune side to remove this issue.

@maiste
Copy link
Contributor Author

maiste commented Aug 19, 2025

Closing in favor of the official release.

@maiste maiste closed this Aug 19, 2025
@maiste maiste deleted the release-dune-3.20.0_alpha4 branch August 19, 2025 06:34
@maiste maiste mentioned this pull request Aug 19, 2025
14 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment