Skip to content

Releases: ocaml/dune

3.21.0~alpha2

08 Dec 18:26
f3c1e71

Choose a tag to compare

CHANGES:

Fixed

  • Fix include_subdirs qualified incorrectly picking the furthest module
    instead of the closest when resolving module name ambiguities. (#12587,
    @ElectreAAS and @Alizter)

  • Fix: include the module alias in the transitive dependency closure with
    (include_subdirs qualified). (#12299, @anmonteiro)

  • Pass private modules with -H when this is available (#12666, @rgrinberg)

  • Allow multiple modules in (modules_flags ...), in coq.theory (#12733, @rlepigre)

  • Improve error message for invalid version formats in both (lang dune ...) and
    (using extension ...) declarations. Changes "Atom of the form NNN.NNN expected"
    to "Invalid version. Version must be two numbers separated by a dot." (#12833, @benodiwal)

  • Fix crash when running dune build @check on a library with virtual modules.
    (#12644, fixes #12636, @Alizter)

  • Provide a more informative error message when (pkg enabled) is put in
    dune-project instead of dune-workspace. (#12802, fixes #12801,
    @benodiwal)

  • Improve error message when invalid version strings are used in dune-project
    files. Non-ASCII characters and malformed versions now show a helpful hint
    with an example of the correct format. (#12794, fixes #12751, @benodiwal)

  • Stop hiding the root_module from the include path (#12239, @rgrinberg)

  • Allow $ dune init to work on absolute paths (#12601, fixes #7806,
    @rgrinberg)

  • (include_subdirs qualified): Add missing alias dependency to module group.
    (#12530, @anmonteiro)

  • Add Melange compilation to the @all alias in libraries (#12628,
    @anmonteiro)

  • melange support: don't emit empty JavaScript modules for generated module
    aliases. (#12464, @anmonteiro)

Added

  • (Experimental): Introduce the library_parameter stanza. It allows users to
    declare a parameter when using the OxCaml compiler.
    (#11963, implements #12084, @maiste)

  • Added the ability to scroll horizontally in TUI. (#12386, @Alizter)

  • Feature: Include shell command that was executed when a cram test has
    occurred in the error message (#12307, @rgrinberg)

  • Add support for %{cmt:...} and %{cmti:...} variables to reference
    compiled annotation files (.cmt and .cmti) containing typed abstract syntax
    trees with location and type information. (#12634, grants #12633, @Alizter)

  • Add $ dune describe tests to describe the tests in the workspace
    (@Gromototo, #12545, fixes #12030)

  • Allow dune runtest to properly run while a watch mode server is running.
    (#12473, grants #8114, @gridbugs and @ElectreAAS)

  • Use copy-on-write (COW) when copying files on filesystems that support it
    (Btrfs, ZFS, XFS, etc), under Linux. (#12074, fixes #12071, @nojb)

  • Add support for Tangled ATproto-based code repositories (#12197, @avsm)

  • Add support for instantiating OxCaml parameterised libraries.
    (#12561, @art-w)

  • Add a (conflict_markers error|ignore) option to the cram stanza. When
    (conflict_markers error) is set, the cram test will fail in the presence of
    conflict markers. Git, diff3 and jujutsu conflict markers are detected.
    (#12538, #12617, #12655, fixes #12512, @rgrinberg, @Alizter)

  • Introduce a %{ppx:lib1+..+libn} stanza to make it possible to refer to ppx
    executables built by dune. This is useful for writing tests (#12711,
    @rgrinberg)

  • Introduce a (dir ..) field on packages defined in the dune-project. This
    field allows to associate a directory with a particular package. This makes
    dune automatically filter out all stanzas in this directory and its
    descendants with --only-packages. All users are recommended to switch to
    using this field. (#12614, fixes #3255, @rgrinberg)

  • Add support for DUNE_ROOT environment variable, similar to the existing
    --root CLI parameter. (fixes #12399 @sir4ur0n)

  • Introduce an unused-libs alias to detect unused libraries.
    (#12623, fixes #650, @rgrinberg)

  • Add --files flag to dune describe opam-files to print only the names of
    the opam files line by line. (#9793, @reynir and @Alizter)

  • dune exec now accepts absolute paths inside the workspace.
    (#12094, @Alizter)

  • Add coqdoc_header and coqdoc_footer fields to the coq field of the
    env stanza, and to the coq.theory stanza, allowing to configure a
    custom header or footer respectively in the HTML output of coqdoc.
    (#11131, @rlepigre)

  • Allow dune fmt to properly run while a watch mode server is running.
    Note that the --preview flag is not supported in this mode.
    (#12064, @ElectreAAS)

  • Support for generating _CoqProject files for coq.theory stanzas.
    (#11752, @rlepigre)

  • Add support for %{ocaml-config:ox} (#12236, @jonludlam)

  • Introduce dune promotion show command to display the contents of corrected
    files that are ready for promotion. This allows users to preview changes
    before running dune promote. The command accepts file arguments to show
    specific files, or displays all promotable files when called without
    arguments. (#12669, fixes #3883, @MixiMaxiMouse)

  • New (lang rocq) build mode for Rocq 9.0 and later. This new mode
    is very similar to the existing (lang coq), except that it doesn't
    need the coq* compatibility wrappers. As of today (lang rocq)
    doesn't support yet composed builds with Rocq itself, this will be
    added later. (lang coq) is deprecated, development is frozen, and
    will be removed at some point in the future. (#12035, @ejgallego,
    @Lysxia, fixes #11572)

Changed

  • Don't run ocamldep to compute false dependencies on the root_module
    (#12227, @rgrinberg)

  • dune format-dune-file now uses the syntax version of the Dune project that
    contains the file being formatted (if any) instead of using the latest version
    available, which remains the default if there is no Dune project in scope.
    (#11865, @nojb)

  • The test/dune file generated by dune init proj now depends on the project library. (#12791, @shonfeder)

  • Starting with version 3.21 of the Dune language, Dune no longer changes the
    default set of compiler warnings. For users that would like to keep the old
    behaviour, the variable %{dune-warnings} can be used in an (env) stanza in
    a top-level Dune file: (env (dev (flags :standard %{dune-warnings}))).
    (#12766, @nojb)

  • Fix: stop generating cmt files for cinaps binaries (#12530, @rgrinberg)

3.21.0~alpha1

08 Dec 18:05
Immutable release. Only release title and notes can be modified.
ca64cc8

Choose a tag to compare

3.21.0~alpha1 Pre-release
Pre-release

CHANGES:

3.21.0~alpha0

05 Dec 03:04
Immutable release. Only release title and notes can be modified.
c5af78f

Choose a tag to compare

3.21.0~alpha0 Pre-release
Pre-release

CHANGES:

3.20.2

03 Sep 11:50
3.20.2
1e54fd3

Choose a tag to compare

CHANGES:

Fixed

3.20.1

25 Aug 11:22
3.20.1
84b524a

Choose a tag to compare

CHANGES:

Fixed

Changed

  • Revert formatting change introduced in 3.20.0 making long lists in
    s-expressions fill the line instead of formatting them in a vertical way
    (#12245, reverts #10892, @nojb)

3.20.0

19 Aug 06:33
3.20.0
3bd6fcb

Choose a tag to compare

CHANGES:

Fixed

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

  • fix: $ dune subst should 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 do dune build @runtest-a. (#11558, grants part of #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. (#11109, partially fixes #10239, @Alizter)

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

  • Allow dune exec to 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 -H is
    supported by the compiler (OCaml >= 5.2) and equivalent to
    (implicit_transitive_deps true) otherwise. (#11866, fixes #11212, @nojb)

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

  • dune runtest can 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 promote to properly run while a watch mode server is running
    (#12010, @ElectreAAS)

  • Add --alias and --alias-rec flags 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 build runs over RPC (#11833, @gridbugs)

  • Stop emitting empty module group wrapper .js file in melange.emit
    (#11987, fixes #11986, @anmonteiro)

3.20.0~alpha4

12 Aug 13:08
3.20.0_alpha4
6ef4ebd

Choose a tag to compare

CHANGES:

Fixed

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

  • fix: $ dune subst should 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 do dune build @runtest-a. (#11558, grants part of #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. (#11109, partially fixes #10239, @Alizter)

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

  • Allow dune exec to 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 -H is
    supported by the compiler (OCaml >= 5.2) and equivalent to
    (implicit_transitive_deps true) otherwise. (#11866, fixes #11212, @nojb)

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

  • dune runtest can 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 promote to properly run while a watch mode server is running
    (#12010, @ElectreAAS)

  • Add --alias and --alias-rec flags 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 build runs over RPC (#11833, @gridbugs)

  • Stop emitting empty module group wrapper .js file in melange.emit
    (#11987, fixes #11986, @anmonteiro)

3.20.0~alpha3

06 Aug 16:28
3.20.0_alpha3
eef0e0a

Choose a tag to compare

CHANGES:

Fixed

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

  • fix: $ dune subst should 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 do dune build @runtest-a. (#11558, grants part of #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. (#11109, partially fixes #10239, @Alizter)

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

  • Allow dune exec to 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 -H is
    supported by the compiler (OCaml >= 5.2) and equivalent to
    (implicit_transitive_deps true) otherwise. (#11866, fixes #11212, @nojb)

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

  • dune runtest can 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 promote to properly run while a watch mode server is running
    (#12010, @ElectreAAS)

  • Add --alias and --alias-rec flags 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 build runs over RPC (#11833, @gridbugs)

  • Stop emitting empty module group wrapper .js file in melange.emit
    (#11987, fixes #11986, @anmonteiro)

3.20.0~alpha2

05 Aug 13:45
3.20.0_alpha2
a496f20

Choose a tag to compare

CHANGES:

Fixed

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

  • fix: $ dune subst should 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 do dune build @runtest-a. (#11558, grants part of #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. (#11109, partially fixes #10239, @Alizter)

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

  • Allow dune exec to 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 -H is
    supported by the compiler (OCaml >= 5.2) and equivalent to
    (implicit_transitive_deps true) otherwise. (#11866, fixes #11212, @nojb)

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

  • dune runtest can 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 promote to properly run while a watch mode server is running
    (#12010, @ElectreAAS)

  • Add --alias and --alias-rec flags 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 build runs over RPC (#11833, @gridbugs)

  • Stop emitting empty module group wrapper .js file in melange.emit
    (#11987, fixes #11986, @anmonteiro)

3.20.0~alpha1

30 Jul 12:51
3.20.0_alpha1
ad68ef0

Choose a tag to compare

CHANGES:

Fixed

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

  • fix: $ dune subst should 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 do dune build @runtest-a. (#11558, grants part of #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. (#11109, partially fixes #10239, @Alizter)

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

  • Allow dune exec to 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 -H is
    supported by the compiler (OCaml >= 5.2) and equivalent to
    (implicit_transitive_deps true) otherwise. (#11866, fixes #11212, @nojb)

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

  • dune runtest can 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 promote to properly run while a watch mode server is running
    (#12010, @ElectreAAS)

  • Add --alias and --alias-rec flags 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 build runs over RPC (#11833, @gridbugs)

  • Stop emitting empty module group wrapper .js file in melange.emit
    (#11987, fixes #11986, @anmonteiro)