Skip to content

Releases: ocaml/dune

3.14.1

11 Mar 15:45
3f4cdaf
Compare
Choose a tag to compare

CHANGES:

Fixed

  • When a directory is changed to a file, correctly remove it in subsequent
    dune build runs. (#9327, fix #6575, @emillon)

  • Fix a problem with the doc-new target where transitive dependencies were
    missed during compile. This leads to missing expansions in the output docs.
    (#9955, @jonludlam)

  • coq: fix performance regression in coqdep unescaping (#10115, fixes #10088,
    @ejgallego, thanks to Dan Christensen for the report)

  • coq: memoize coqdep parsing, this will reduce build times for Coq users, in
    particular for those with many .v files (#10116, @ejgallego, see also #10088)

  • on Windows, use an unicode-aware version of CreateProcess to avoid crashes
    when paths contains non-ascii characters. (#10212, fixes #10180, @emillon)

3.14.0

12 Feb 10:12
73250f0
Compare
Choose a tag to compare

CHANGES:

Added

  • Introduce a (dynamic_include ..) stanza. This is like (include foo) but
    allows foo to be the target of a rule. Currently, there are some
    limitations on the stanzas that can be generated. For example, public
    executables, libraries are currently forbidden. (#9913, @rgrinberg)

  • Introduce $ dune promotion list to print the list of available promotions.
    (#9705, @moyodiallo)

  • If Sherlodoc is installed, add a search bar in generated HTML docs (#9772,
    @EmileTrotignon)

  • Add only_sources field to copy_files stanza (#9827, fixes #9709,
    @jchavarri)

  • The (foreign_library) stanza now supports the (enabled_if) field. (#9914,
    @nojb)

Fixed

  • Fix $ dune install -p incorrectly recognizing packages that are supposed to
    be filtered (#9879, fixes #4814, @rgrinberg)

  • subst: correctly handle opam files in opam/ subdirectory (#9895, fixes #9862,
    @emillon)

  • Odoc private rules are not set up if a library is not available due to
    enabled_if (#9897, @rgrinberg and @jchavarri)

Changed

  • When dune language 3.14 is enabled, resolve the binary in (run %{bin:..} ..) from where the binary is built. (#9708, @rgrinberg)

  • boot: remove single-command bootstrap. This was an alternative bootstrap
    strategy that was used in certain conditions. Removal makes the bootstrap a
    bit slower on Linux when only a single core is available, but bootstrap is
    now reproducible in all cases. (#9735, fixes #9507, @emillon)

3.14.0~alpha1

09 Feb 10:18
c866e1d
Compare
Choose a tag to compare

CHANGES:

Added

  • Introduce a (dynamic_include ..) stanza. This is like (include foo) but
    allows foo to be the target of a rule. Currently, there are some
    limitations on the stanzas that can be generated. For example, public
    executables, libraries are currently forbidden. (#9913, @rgrinberg)

  • Introduce $ dune promotion list to print the list of available promotions.
    (#9705, @moyodiallo)

  • If Sherlodoc is installed, add a search bar in generated HTML docs (#9772,
    @EmileTrotignon)

  • Add only_sources field to copy_files stanza (#9827, fixes #9709,
    @jchavarri)

  • The (foreign_library) stanza now supports the (enabled_if) field. (#9914,
    @nojb)

Fixed

  • Fix $ dune install -p incorrectly recognizing packages that are supposed to
    be filtered (#9879, fixes #4814, @rgrinberg)

  • subst: correctly handle opam files in opam/ subdirectory (#9895, fixes #9862,
    @emillon)

  • Odoc private rules are not set up if a library is not available due to
    enabled_if (#9897, @rgrinberg and @jchavarri)

Changed

  • When dune language 3.14 is enabled, resolve the binary in (run %{bin:..} ..) from where the binary is built. (#9708, @rgrinberg)

  • boot: remove single-command bootstrap. This was an alternative bootstrap
    strategy that was used in certain conditions. Removal makes the bootstrap a
    bit slower on Linux when only a single core is available, but bootstrap is
    now reproducible in all cases. (#9735, fixes #9507, @emillon)

3.13.1

05 Feb 16:30
b98be5f
Compare
Choose a tag to compare

CHANGES:

  • Fix performance regression for incremental builds (#9769, fixes #9738,
    @rgrinberg)

  • Fix dune ocaml top-module to correctly handle absolute paths. (#8249, fixes
    #7370, @Alizter)

  • subst: ignore broken symlinks when looking at source files (#9810, fixes
    #9593, @emillon)

  • subst: do not fail on 32-bit systems when large files are encountered. Just
    log a warning in this case. (#9811, fixes #9538, @emillon)

  • boot: sort directory entries in readdir. This makes the dune binary
    reproducible in terms of filesystem order. (#9861, fixes #9794, @emillon)

3.13.0

16 Jan 08:50
21f9042
Compare
Choose a tag to compare

CHANGES:

Added

  • Add command dune cache clear to completely delete all traces of the Dune
    cache. (#8975, @nojb)

  • Allow to disable Coq 0.8 deprecation warning (#9439, @ejgallego)

  • Allow OCAMLFIND_TOOLCHAIN to be set per context in the workspace file
    through the env stanza. (#9449, @rgrinberg)

  • Menhir: generate .conflicts file by default. Add new field to the
    (menhir) stanza to control the generation of this file: (explain <blang expression>). Introduce (menhir (flags ...) (explain ...)) field in the
    (env) stanza, delete (menhir_flags) field. All changes are guarded under
    a new version of the Menhir extension, 3.0. (#9512, @nojb)

  • Directory targets can now be cached. (#9535, @rleshchinskiy)

  • It is now possible to use special forms such as (:include) and variables
    %{read-lines:} in (modules) and similar fields. Note that the
    dependencies introduced in this way (ie the files being read) must live in a
    different directory than the stanza making use of them. (#9578, @nojb)

  • Remove warning 30 from default set for projects where dune lang is at least
    3.13 (#9568, @gasche)

  • Add coqdoc_flags field to coq field of env stanza allowing the setting
    of workspace-wide defaults for coqdoc_flags. (#9280, fixes #9139, @Alizter)

  • ctypes: fix an error where (ctypes) with no (function_description) would
    cause an error trying refer to a nonexistent _stubs.a dependency (#9302,
    fix #9300, @emillon)

Changed

  • Check that package names in (depends) and related fields in dune-project
    are well-formed. (#9472, fixes #9270, @ElectreAAS)

Fixed

  • Do not ignore (formatting ..) settings in context or workspace files
    (#8447, @rgrinberg)

  • Fixed a bug where Dune was incorrectly parsing the output of coqdep when it
    was escaped, as is the case on Windows. (#9231, fixes #9218, @Alizter)

  • Copying mode for sandboxes will now follow symbolic links (#9282, @rgrinberg)

  • Forbid the empty (binaries ..) field in the env stanza in the workspace
    file unless language version is at least 3.2.

  • [coq] Fix bug in computation of flags when composed with boot theories.
    (#9347, fixes #7909, @ejgallego)

  • Fixed a bug where the (select) field of the (libraries) field of the
    (test) stanza wasn't working properly. (#9387, fixes #9365, @Alizter)

  • Fix handling of the PATH argument to dune init proj NAME PATH. An
    intermediate directory called NAME is no longer created if PATH is
    supplied, so dune init proj my_project . will now initialize a project in
    the current working directory. (#9447, fixes #9209, @shonfeder)

  • Experimental doc rules: Correctly handle the case when a package depends upon
    its own sublibraries (#9461, fixes #9456, @jonludlam)

  • Resolve various public binaries to their build location, rather than to where
    they're copied in the _build/install directory (#9496, fixes #7908,
    @rgrinberg).

  • Correctly ignore warning flags in vendored projects (#9515, @rgrinberg)

  • Use watch exclusions in watch mode on MacOS (#9643, fixes #9517,
    @PoorlyDefinedBehaviour)

  • Fix merlin configuration for (include_subdirs qualified) modules (#9659,
    fixes #8297, @rgrinberg)

  • Fix handling of enabled_if in binary install stanzas. Previously, we'd
    ignore the result of enabled_if when evaluating %{bin:..} (#9707,
    @rgrinberg)

3.13.0~alpha1

12 Jan 15:34
abbb7b9
Compare
Choose a tag to compare

CHANGES:

  • Do not ignore (formatting ..) settings in context or workspace files
    (#8447, @rgrinberg)

  • Add command dune cache clear to completely delete all traces of the Dune
    cache. (#8975, @nojb)

  • Fixed a bug where Dune was incorrectly parsing the output of coqdep when it
    was escaped, as is the case on Windows. (#9231, fixes #9218, @Alizter)

  • Copying mode for sandboxes will now follow symbolic links (#9282, @rgrinberg)

  • Forbid the empty (binaries ..) field in the env stanza in the workspace
    file unless language version is at least 3.2.

  • [coq] Fix bug in computation of flags when composed with boot theories.
    (#9347, fixes #7909, @ejgallego)

  • Fixed a bug where the (select) field of the (libraries) field of the
    (test) stanza wasn't working properly. (#9387, fixes #9365, @Alizter)

  • Allow to disable Coq 0.8 deprecation warning (#9439, @ejgallego)

  • Fix handling of the PATH argument to dune init proj NAME PATH. An
    intermediate directory called NAME is no longer created if PATH is
    supplied, so dune init proj my_project . will now initialize a project in
    the current working directory. (#9447, fixes #9209, @shonfeder)

  • Allow OCAMLFIND_TOOLCHAIN to be set per context in the workspace file
    through the env stanza. (#9449, @rgrinberg)

  • Experimental doc rules: Correctly handle the case when a package depends upon
    its own sublibraries (#9461, fixes #9456, @jonludlam)

  • Resolve various public binaries to their build location, rather than to where
    they're copied in the _build/install directory (#9496, fixes #7908,
    @rgrinberg).

  • Menhir: generate .conflicts file by default. Add new field to the
    (menhir) stanza to control the generation of this file: (explain <blang expression>). Introduce (menhir (flags ...) (explain ...)) field in the
    (env) stanza, delete (menhir_flags) field. All changes are guarded under
    a new version of the Menhir extension, 3.0. (#9512, @nojb)

  • Correctly ignore warning flags in vendored projects (#9515, @rgrinberg)

  • Directory targets can now be caches. (#9535, @rleshchinskiy)

  • Remove warning 30 from default set for projects where dune lang is at least
    3.13 (#9568, @gasche)

  • It is now possible to use special forms such as (:include) and variables
    %{read-lines:} in (modules) and similar fields. Note that the
    dependencies introduced in this way (ie the files being read) must live in a
    different directory than the stanza making use of them. (#9578, @nojb)

  • Use watch exclusions in watch mode on MacOS (#9643, fixes #9517,
    @PoorlyDefinedBehaviour)

  • Fix merlin configuration for (include_subdirs qualified) modules (#9659,
    fixes #8297, @rgrinberg)

  • Fix handling of enabled_if in binary install stanzas. Previously, we'd
    ignore the result of enabled_if when evaluating %{bin:..} (#9707,
    @rgrinberg)

  • Add coqdoc_flags field to coq field of env stanza allowing the setting
    of workspace-wide defaults for coqdoc_flags. (#9280, fixes #9139, @Alizter)

  • ctypes: fix an error where (ctypes) with no (function_description) would
    cause an error trying refer to a nonexistent _stubs.a dependency (#9302,
    fix #9300, @emillon)

3.12.2

05 Jan 14:20
f5be55f
Compare
Choose a tag to compare

CHANGES:

  • Fix version check in runtest_alias for cram stanza (#9454, @emillon)

  • Fix stack overflow when a (run) action can not be parsed. (#9530, fixes
    #9529, @gridbugs)

3.12.1

29 Nov 13:08
2e4994f
Compare
Choose a tag to compare

CHANGES:

3.12.0

28 Nov 16:44
da1c137
Compare
Choose a tag to compare

CHANGES:

  • Introduce $ dune ocaml doc to open and browse documentation. (#7262, fixes
    #6831, @EmileTrotignon)

  • dune cache trim now accepts binary byte units: KiB, MiB, etc. (#8618,
    @Alizter)

  • No longer force colors for OCaml 4.03 and 4.04 (#8778, @rgrinberg)

  • Introduce new experimental odoc rules (#8803, @jonjudlam)

  • Introduce the runtest_alias field to the cram stanza. This allows
    removing default runtest alias from tests. (@rgrinberg, #8887)

  • Do not ignore libraries named bigarray when they are defined in conjunction
    with OCaml 5.0 (#8902, fixes #8901, @rgrinberg)

  • Dependencies in the copying sandbox are now writeable (#8920, @rgrinberg)

  • Absent packages shouldn't prevent all rules from being loaded (#8948, fixes
    #8630, @rgrinberg)

  • Correctly determine the stanza of menhir modules when (include_subdirs qualified) is enabled (@rgrinberg, #8949, fixes #7610)

  • Display cache location in Dune log (#8974, @nojb)

  • Re-run actions whenever (expand_aliases_in_sandbox) changes (#8990,
    @rgrinberg)

  • Rules that only use internal dune actions (write-file, echo, etc.) can
    now be sandboxed. (#9041, fixes #8854, @rgrinberg)

  • Do not re-run rules when their location changes (#9052, @rgrinberg)

  • Correctly ignore bigarray on recent version of OCaml (#9076, @rgrinberg)

  • Add test_ prefix to default test name in dune init project (#9257, fixes
    #9131, @9sako6)

  • Add coqdoc_flags field to coq field of env stanza allowing the setting
    of workspace-wide defaults for coqdoc_flags. (#9280, fixes #9139, @Alizter)

  • [coq rules] Be more tolerant when coqc --print-version / --config don't work
    properly, and fallback to a reasonable default. This fixes problems when
    building Coq projects with (stdlib no) and likely other cases. (#8966, fix
    #8958, @Alizter, reported by Lasse Blaauwbroek)

  • Dune will now run at a lower framerate of 15 fps rather than 60 when
    INSIDE_EMACS. (#8812, @Alizter)

  • dune-build-info: when version="" is found in a META file, we now return
    None as a version string (#9177, @emillon)

  • Dune can now be built and installed on Haiku (#8795, fix #8551, @Alizter)

  • Mark installed directories in dune-package files. This fixes (package)
    dependencies against packages that contain such directories. (#8953, fixes
    #8915, @emillon)

3.12.0~alpha3

22 Nov 11:33
Compare
Choose a tag to compare

CHANGES:

  • Cherry-pick #9215 and #9009 (@emillon)

  • dune-build-info: when version="" is found in a META file, we now return
    None as a version string (#9177, @emillon)