Releases: ocaml/dune
3.21.0~alpha2
CHANGES:
Fixed
-
Fix
include_subdirs qualifiedincorrectly 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 ...), incoq.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 @checkon a library with virtual modules.
(#12644, fixes #12636, @Alizter) -
Provide a more informative error message when
(pkg enabled)is put in
dune-projectinstead ofdune-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_modulefrom the include path (#12239, @rgrinberg) -
Allow
$ dune initto 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
@allalias in libraries (#12628,
@anmonteiro) -
melange support: don't emit empty JavaScript modules for generated module
aliases. (#12464, @anmonteiro)
Added
-
(Experimental): Introduce the
library_parameterstanza. 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 teststo describe the tests in the workspace
(@Gromototo, #12545, fixes #12030) -
Allow
dune runtestto 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 thedune-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_ROOTenvironment variable, similar to the existing
--rootCLI parameter. (fixes #12399 @sir4ur0n) -
Introduce an
unused-libsalias to detect unused libraries.
(#12623, fixes #650, @rgrinberg) -
Add
--filesflag todune describe opam-filesto print only the names of
the opam files line by line. (#9793, @reynir and @Alizter) -
dune execnow accepts absolute paths inside the workspace.
(#12094, @Alizter) -
Add
coqdoc_headerandcoqdoc_footerfields to thecoqfield of the
envstanza, and to thecoq.theorystanza, allowing to configure a
custom header or footer respectively in the HTML output ofcoqdoc.
(#11131, @rlepigre) -
Allow
dune fmtto properly run while a watch mode server is running.
Note that the--previewflag is not supported in this mode.
(#12064, @ElectreAAS) -
Support for generating
_CoqProjectfiles forcoq.theorystanzas.
(#11752, @rlepigre) -
Add support for %{ocaml-config:ox} (#12236, @jonludlam)
-
Introduce
dune promotion showcommand to display the contents of corrected
files that are ready for promotion. This allows users to preview changes
before runningdune 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 thecoq*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
ocamldepto compute false dependencies on theroot_module
(#12227, @rgrinberg) -
dune format-dune-filenow 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/dunefile generated bydune init projnow 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
cmtfiles for cinaps binaries (#12530, @rgrinberg)
3.21.0~alpha1
CHANGES:
3.21.0~alpha0
CHANGES:
3.20.2
CHANGES:
Fixed
-
Fix jsoo separate compilation with modules_without_implementation. Regression
introduced in #10767. (#12320, fixes #12306 @hhugo) -
Fix
runtest-jsmistakenly using wrong dependencies (#12324, @vouillon) -
Remove empty
.cram.test.tdirectory during the running of a cram test.
(#12329, fixes #12321, @Alizter)
3.20.1
3.20.0
CHANGES:
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994,
@rgrinberg) -
fix:
$ dune substshould 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 dodune 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 asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version
control repository has been detected (#11801, @btjorge) -
Allow
dune execto 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-His
supported by the compiler (OCaml >= 5.2) and equivalent to
(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that
would be run (#11905, @gridbugs) -
dune runtestcan 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 promoteto properly run while a watch mode server is running
(#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags 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 buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit
(#11987, fixes #11986, @anmonteiro)
3.20.0~alpha4
CHANGES:
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994,
@rgrinberg) -
fix:
$ dune substshould 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 dodune 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 asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version
control repository has been detected (#11801, @btjorge) -
Allow
dune execto 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-His
supported by the compiler (OCaml >= 5.2) and equivalent to
(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that
would be run (#11905, @gridbugs) -
dune runtestcan 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 promoteto properly run while a watch mode server is running
(#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags 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 buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit
(#11987, fixes #11986, @anmonteiro)
3.20.0~alpha3
CHANGES:
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994,
@rgrinberg) -
fix:
$ dune substshould 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 dodune 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 asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version
control repository has been detected (#11801, @btjorge) -
Allow
dune execto 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-His
supported by the compiler (OCaml >= 5.2) and equivalent to
(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that
would be run (#11905, @gridbugs) -
dune runtestcan 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 promoteto properly run while a watch mode server is running
(#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags 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 buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit
(#11987, fixes #11986, @anmonteiro)
3.20.0~alpha2
CHANGES:
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994,
@rgrinberg) -
fix:
$ dune substshould 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 dodune 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 asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version
control repository has been detected (#11801, @btjorge) -
Allow
dune execto 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-His
supported by the compiler (OCaml >= 5.2) and equivalent to
(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that
would be run (#11905, @gridbugs) -
dune runtestcan 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 promoteto properly run while a watch mode server is running
(#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags 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 buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit
(#11987, fixes #11986, @anmonteiro)
3.20.0~alpha1
CHANGES:
Fixed
-
Stop re-running cram tests after promotion when it's not necessary (#11994,
@rgrinberg) -
fix:
$ dune substshould 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 dodune 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 asdune build @runtest-name_of_lib. (#11109, partially fixes #10239, @Alizter) -
feature:
$ dune substuse version fromdune-projectwhen no version
control repository has been detected (#11801, @btjorge) -
Allow
dune execto 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-His
supported by the compiler (OCaml >= 5.2) and equivalent to
(implicit_transitive_deps true)otherwise. (#11866, fixes #11212, @nojb) -
Add
dune describe locationfor printing the path to the executable that
would be run (#11905, @gridbugs) -
dune runtestcan 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 promoteto properly run while a watch mode server is running
(#12010, @ElectreAAS) -
Add
--aliasand--alias-recflags 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 buildruns over RPC (#11833, @gridbugs) -
Stop emitting empty module group wrapper
.jsfile inmelange.emit
(#11987, fixes #11986, @anmonteiro)