Skip to content

Releases: ocaml/dune

3.22.0~alpha1

11 Mar 00:35
777bdf6

Choose a tag to compare

3.22.0~alpha1 Pre-release
Pre-release

CHANGES:

Fixed

  • Dyn.to_string now uses a smarter way to convert floats. This ensures that
    floats are printed with enough precision to round-trip and are valid OCaml
    lexemes. (#12982, fixes #12980, @Alizter)

  • Fix dune install --prefix failing with relative paths outside the workspace
    like ../foo (#12993, fixes #12241, @benodiwal)

  • Place the default trace file inside the build directory at the
    workspace root, rather than relative to the current directory.
    (#13735, @vouillon)

  • Fixed interpreting relative paths in %{bin:..} and %{bin-available:..}.
    These are now interpreted correctly, relative to the dune file they're in.
    (#13712, fixes #9564, @anmonteiro)

  • Delete sandboxes with broken permissions (#13511, @rgrinberg)

  • Fix compiling Menhir parsers that refer to sibling modules within a
    subdirectory of (include_subdirs qualified). (#13118, fixes #11119,
    @anmonteiro)

  • Fixed the dependency specification of C stubs, which could result in C
    stubs not getting rebuilt when needed (which could in turn lead to
    segmentation faults and other hard-to-track bugs).
    (#13652, fixes #13651, @nojb)

  • Fix the Dune cache on Windows by correctly handling renames onto read-only
    files. Before this change, the Dune cache would be filled but the stored
    artifacts would not generally be usable by Dune. (#13713, @Nevor)

  • Fix rpc not transferring promotion warnings to the client
    (#12604, fixes #12578, @ElectreAAS)

  • Fix issue where dune exec -w was unable to kill running programs on
    rebuild. (#12360, fixes #12323, @Alizter)

  • Fix package extraction on systems with tar implementations that don't
    auto-detect compression (e.g., OpenBSD). Dune now passes explicit
    decompression flags (-z for gzip, -j for bzip2) when needed, and provides
    clear error messages for unsupported formats like XZ and LZMA. (#13688,
    fixes #10123, @Alizter)

  • Resolve context and workspace binaries introduced by the respective (env (binaries ..)) stanzas. (#12952, fixes #6220, @anmonteiro)

  • Fix diff promotions originating from sandboxed rules. Previously, they
    would be completely ignored as the sandbox with the promoted file would be
    destroyed if the promotion fired (#13520, @rgrinberg)

  • Fix failure to digest installed directory targets, allowing them to be used
    as dependencies to other rules. (#13045, @anmonteiro)

  • Fix handling of (select ..) field when used with (include_subdirs ..).
    (select <path> from ..) modules now parse path as a relative path
    starting from the module group root (#13175, fixes #4383, #12450,
    @anmonteiro)

  • Fix dune trying to kill processes that were already reaped due to race
    conditions (#13245, @rgrinberg)

  • Add O_CLOEXEC to all files used for stdin/stdout/stderr (#13385, @rgrinberg)

  • Fix $ dune promote dir/foo when dir does not exist (#13493, @rgrinberg)

  • Fix (select ..) field evaluation when a transitive library has optional
    dependencies (fixes #13299, #13389, @anmonteiro)

  • Fix sandboxed builds of library stanzas that set
    (stdlib (modules_before_stdlib ..)) (#13624, @anmonteiro)

  • Dune cache: use of hard links under Windows. (#13714, @Nevor)

  • Fixed non-build caches not following $DUNE_CACHE_ROOT and instead only
    relying on $XDG_CACHE_HOME.
    This means the normal build cache moves:
    $DUNE_CACHE_ROOT -> $DUNE_CACHE_ROOT/db (no changes if that variable was
    unset). Affected users can prevent a full cache invalidation by moving
    previous contents:
    cd $DUNE_CACHE_ROOT; mkdir db; mv <contents of directory> db.
    (#11612, fixes #11584, @ElectreAAS)

  • $ dune promotion list writes output to stdout rather than stderr (#13462)

  • Improve handling of empty files in the diff action. These are now correctly
    distinguished from empty files. (#13696, @rgrinberg)

  • Pass /dev/null to --diff-command instead of non-existent files (#13696,
    @rgrinberg)

  • Fix failure when multiple rocq.extraction stanzas existing in a directory
    (#13531, fixes #8042, @rlepigre-skylabs-ai)

  • Print $ dune promotion show output to stdout rather than stderr (#13481,
    @rgrinberg)

  • Fix deadlock in the memo library in the presence of dependency cycles
    (#13625, @anmonteiro)

  • Fix promotions that modify a directory into a file (#13516, fixes #4067,
    @rgrinberg)

  • Fix installation of implementations of virtual libraries. This failed when
    the implementation had no private modules, but the virtual library did
    (#10635, @rgrinberg)

  • Respect the (dir ..) field on packages when setting up cram tests (#13581,
    @rgrinberg)

Added

  • Add support for generating .cms files using oxcaml and adding .cms or
    .cmt files as compilation dependencies (#13397, @spiessimon)

  • Add trace events for custom actions (#13265, @rgrinberg)

  • Allow enabling extensions with (using ..) in dune-workspace files
    (#13395, @spiessimon)

  • Add sandbox extraction trace event (#13544, @rgrinberg)

  • Add the initial cwd to the first config event (#13026, @rgrinberg)

  • Dune dune produces trace events in DUNE_ACTION_TRACE_DIR if this variable
    is set. (#13302, @rgrinberg)

  • Add file watching events to the trace file (#13038, @rgrinberg)

  • Introduce the $ dune trace cat subcommand to view the trace file. (#13055,
    @rgrinberg)

  • Add diagnostic events to the trace. (#13041, @rgrinberg)

  • Add DUNE_JOBS environment variable for controlling concurrency of Dune from
    environment. The INSIDE_DUNE variable also now no longer controls
    concurrency (#12800, @Alizter)

  • Support for Rocq expected output tests (#13632, @rlepigre-skylabs-ai)

  • Add rusage information to completed processes in the trace (@rgrinberg,
    #13241)

  • Add process start events to the trace (#13261, rgrinberg)

  • Generate odoc documentation in markdown using the @doc-markdown alias
    (#12581, @davesnx)

  • Add timing information for every command executed by cram (#13092,
    @rgrinberg)

  • Add the workspace root to the config trace event (#12922, @rgrinberg)

  • Introduce the dune-action-trace library. This public library is to be used
    by custom actions to emit trace events while executed as part of a dune
    build. The trace events emitted through this library will be incorporated
    into dune's own trace (#13348, @rgrinberg)

  • Add dune-find-dominating to dune.el, a command to find the
    dominating dune file. (#12696, @arvidj)

  • Add a --no-recursive flag to $ dune describe workspace (#13590, @rgrinberg)

  • Trace events for files written directly by dune (#13618, @rgrinberg)

  • Allow expansion of special forms like (:include ..) and %{read-lines:..}
    in the modules specification for the ocamllex, ocamlyacc and menhir
    stanzas. (#13105, #13135, #13157, @anmonteiro)

  • Add a trace event for snapshotting the asndbox (#13541, @rgrinberg)

  • Add signal send and receive events to the trace (#13193, @rgrinberg)

  • Emit final trace event before exiting. (#13018, @rgrinberg)

  • dune runtest can now run individual test executables from (tests) stanzas
    and inline tests from (library (inline_tests)) stanzas by providing their
    source files as arguments. (#13064, fixes #870, @Alizter)

  • Add a shell field to the cram stanza. This field allows customizing the
    shell to be bash rather than sh (#13083, @haochenx)

Changed

  • Start sandboxing the execution of tests defined with the test and tests
    stanzas (#13510, #13617, @rgrinberg)

  • Disabled cram tests can now be run explicitly with dune runtest disabled.t.
    The enabled_if field now only controls whether a test is included in
    the @runtest alias. (#13081, @Alizter)

  • Process categories in trace events are moved to their own field in args
    (#13024, @rgrinberg)

  • Sandbox running ocamllex and ocamlyacc actions. (#13098, @anmonteiro)

  • Sandboxing mdx test actions is now the default starting from 0.5 (#13504,
    @rgrinberg)

  • Start sandboxing Melange rules by default in the (library ..) and
    (melange.emit ..) stanzas (#13619, @anmonteiro)

  • Introduce a promotion trace event and remove the corresponding verbose log
    message. (#12949, #13444, @rgrinberg)

  • Change dune's trace format to emit canonical s-expressions. This improves
    performance and is better aligned with dune's usage of the format
    elsewhere. $ dune trace cat can also emit the trace in --chrome-trace
    for perfetto, or --sexp for regular s-expressions for interactive usage.
    (#13059, @rgrinberg)

  • Move all logging statements to the trace file. All log statements now contain
    structured payloads (#13015, fixes #12904, @rgrinberg)

  • Add a target resolution event to replace the equivalent log message (#12955,
    @rgrinberg)

3.22.0~alpha0

02 Mar 18:33
f6b0df3

Choose a tag to compare

3.22.0~alpha0 Pre-release
Pre-release

CHANGES:

Fixed

  • Dyn.to_string now uses a smarter way to convert floats. This ensures that
    floats are printed with enough precision to round-trip and are valid OCaml
    lexemes. (#12982, fixes #12980, @Alizter)

  • Fix dune install --prefix failing with relative paths outside the workspace
    like ../foo (#12993, fixes #12241, @benodiwal)

  • Delete sandboxes with broken permissions (#13511, @rgrinberg)

  • Fix compiling Menhir parsers that refer to sibling modules within a
    subdirectory of (include_subdirs qualified). (#13118, fixes #11119,
    @anmonteiro)

  • Fixed the dependency specification of C stubs, which could result in C
    stubs not getting rebuilt when needed (which could in turn lead to
    segmentation faults and other hard-to-track bugs).
    (#13652, fixes #13651, @nojb)

  • Fix rpc not transferring promotion warnings to the client
    (#12604, fixes #12578, @ElectreAAS)

  • Fix issue where dune exec -w was unable to kill running programs on
    rebuild. (#12360, fixes #12323, @Alizter)

  • Resolve context and workspace binaries introduced by the respective (env (binaries ..)) stanzas. (#12952, fixes #6220, @anmonteiro)

  • Fix diff promotions originating from sandboxed rules. Previously, they
    would be completely ignored as the sandbox with the promoted file would be
    destroyed if the promotion fired (#13520, @rgrinberg)

  • Fix failure to digest installed directory targets, allowing them to be used
    as dependencies to other rules. (#13045, @anmonteiro)

  • Fix handling of (select ..) field when used with (include_subdirs ..).
    (select <path> from ..) modules now parse path as a relative path
    starting from the module group root (#13175, fixes #4383, #12450,
    @anmonteiro)

  • Fix dune trying to kill processes that were already reaped due to race
    conditions (#13245, @rgrinberg)

  • Add O_CLOEXEC to all files used for stdin/stdout/stderr (#13385, @rgrinberg)

  • Fix $ dune promote dir/foo when dir does not exist (#13493, @rgrinberg)

  • Fix (select ..) field evaluation when a transitive library has optional
    dependencies (fixes #13299, #13389, @anmonteiro)

  • Fix sandboxed builds of library stanzas that set
    (stdlib (modules_before_stdlib ..)) (#13624, @anmonteiro)

  • Fixed non-build caches not following $DUNE_CACHE_ROOT and instead only
    relying on $XDG_CACHE_HOME.
    This means the normal build cache moves:
    $DUNE_CACHE_ROOT -> $DUNE_CACHE_ROOT/db (no changes if that variable was
    unset). Affected users can prevent a full cache invalidation by moving
    previous contents:
    cd $DUNE_CACHE_ROOT; mkdir db; mv <contents of directory> db.
    (#11612, fixes #11584, @ElectreAAS)

  • $ dune promotion list writes output to stdout rather than stderr (#13462)

  • Improve handling of empty files in the diff action. These are now correctly
    distinguished from empty files. (#13696, @rgrinberg)

  • Pass /dev/null to --diff-command instead of non-existent files (#13696,
    @rgrinberg)

  • Fix failure when multiple rocq.extraction stanzas existing in a directory
    (#13531, fixes #8042, @rlepigre-skylabs-ai)

  • Print $ dune promotion show output to stdout rather than stderr (#13481,
    @rgrinberg)

  • Fix deadlock in the memo library in the presence of dependency cycles
    (#13625, @anmonteiro)

  • Fix promotions that modify a directory into a file (#13516, fixes #4067,
    @rgrinberg)

  • Fix installation of implementations of virtual libraries. This failed when
    the implementation had no private modules, but the virtual library did
    (#10635, @rgrinberg)

  • Respect the (dir ..) field on packages when setting up cram tests (#13581,
    @rgrinberg)

Added

  • Add support for generating .cms files using oxcaml and adding .cms or
    .cmt files as compilation dependencies (#13397, @spiessimon)

  • Add trace events for custom actions (#13265, @rgrinberg)

  • Allow enabling extensions with (using ..) in dune-workspace files
    (#13395, @spiessimon)

  • Add sandbox extraction trace event (#13544, @rgrinberg)

  • Add the initial cwd to the first config event (#13026, @rgrinberg)

  • Dune produces trace events in DUNE_ACTION_TRACE_DIR if this variable
    is set. (#13302, @rgrinberg)

  • Add file watching events to the trace file (#13038, @rgrinberg)

  • Introduce the $ dune trace cat subcommand to view the trace file. (#13055,
    @rgrinberg)

  • Add diagnostic events to the trace. (#13041, @rgrinberg)

  • Add DUNE_JOBS environment variable for controlling concurrency of Dune from
    environment. The INSIDE_DUNE variable also now no longer controls
    concurrency (#12800, @Alizter)

  • Support for Rocq expected output tests (#13632, @rlepigre-skylabs-ai)

  • Add rusage information to completed processes in the trace (@rgrinberg,
    #13241)

  • Add process start events to the trace (#13261, rgrinberg)

  • Generate odoc documentation in markdown using the @doc-markdown alias
    (#12581, @davesnx)

  • Add timing information for every command executed by cram (#13092,
    @rgrinberg)

  • Add the workspace root to the config trace event (#12922, @rgrinberg)

  • Introduce the dune-action-trace library. This public library is to be used
    by custom actions to emit trace events while executed as part of a dune
    build. The trace events emitted through this library will be incorporated
    into dune's own trace (#13348, @rgrinberg)

  • Add dune-find-dominating to dune.el, a command to find the
    dominating dune file. (#12696, @arvidj)

  • Add a --no-recursive flag to $ dune describe workspace (#13590, @rgrinberg)

  • Trace events for files written directly by dune (#13618, @rgrinberg)

  • Allow expansion of special forms like (:include ..) and %{read-lines:..}
    in the modules specification for the ocamllex, ocamlyacc and menhir
    stanzas. (#13105, #13135, #13157, @anmonteiro)

  • Add a trace event for snapshotting the sandbox (#13541, @rgrinberg)

  • Add signal send and receive events to the trace (#13193, @rgrinberg)

  • Emit final trace event before exiting. (#13018, @rgrinberg)

  • dune runtest can now run individual test executables from (tests) stanzas
    and inline tests from (library (inline_tests)) stanzas by providing their
    source files as arguments. (#13064, fixes #870, @Alizter)

  • Add a shell field to the cram stanza. This field allows customizing the
    shell to be bash rather than sh (#13083, @haochenx)

Changed

  • Start sandboxing the execution of tests defined with the test and tests
    stanzas (#13510, #13617, @rgrinberg)

  • Disabled cram tests can now be run explicitly with dune runtest disabled.t.
    The enabled_if field now only controls whether a test is included in
    the @runtest alias. (#13081, @Alizter)

  • Process categories in trace events are moved to their own field in args
    (#13024, @rgrinberg)

  • Sandbox running ocamllex and ocamlyacc actions. (#13098, @anmonteiro)

  • Sandboxing mdx test actions is now the default starting from 0.5 (#13504,
    @rgrinberg)

  • Start sandboxing Melange rules by default in the (library ..) and
    (melange.emit ..) stanzas (#13619, @anmonteiro)

  • Introduce a promotion trace event and remove the corresponding verbose log
    message. (#12949, #13444, @rgrinberg)

  • Change dune's trace format to emit canonical s-expressions. This improves
    performance and is better aligned with dune's usage of the format
    elsewhere. $ dune trace cat can also emit the trace in --chrome-trace
    for perfetto, or --sexp for regular s-expressions for interactive usage.
    (#13059, @rgrinberg)

  • Move all logging statements to the trace file. All log statements now contain
    structured payloads (#13015, fixes #12904, @rgrinberg)

  • Add a target resolution event to replace the equivalent log message (#12955,
    @rgrinberg)

3.21.1

11 Feb 03:33
0b5863d

Choose a tag to compare

CHANGES:

Fixed

  • Fix build issues on NetBSD and OpenBSD via update of vendored ocaml-lmdb
    (#13074, @Alizter)
  • Fix melange.emit not respecting the package mask via -p <PKG> (#13522,
    @anmonteiro)

Changed

3.21.0

12 Jan 18:55
832d238

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)

  • Improve error messages for invalid version formats containing non-ASCII
    characters. Previously, non-ASCII characters in version strings (e.g., (lang dune è) or (using menhir π3.14)) would fail with a generic "Invalid file"
    error. Now they display a clear message: "Invalid atom: contains non-ASCII
    character(s). Atoms must only contain ASCII characters." The fix is
    implemented at the lexer level, providing consistent error handling across all
    s-expression parsing. (#12844, fixes #12836, @benodiwal)

  • 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)

  • Fix greedy version location in lang declarations. Previously, error locations for
    invalid lang versions would span multiple bytes for multi-byte UTF-8 characters,
    causing carets to appear misaligned and seemingly include the closing
    parenthesis. Now, error locations for ASCII strings show the full length (e.g.,
    "Ali" shows ^^^), while non-ASCII strings show only the first byte (e.g., "è"
    shows ^) to avoid multi-byte character display issues. (#12869, fixes #12806,
    @benodiwal)

  • 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)

  • support expanding variables in (promote (into ..)) (#12832, fixes #12742,
    @anmonteiro)

  • 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)

  • Add argv, the process environment, and the dune version to the config event
    in the trace (#12909, @rgrinberg)

  • 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)

  • Added (files) stanza, similar to (dirs) to control which files are visible
    to Dune on a per-directory basis. (#12879, @nojb)

  • 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)

  • Persistent DB and process events have been slightly modified. Persistent
    DB events have more concise names and job events always include full
    information. (#12867, @rgrinberg)

  • Removed the --trace-extended flag. Its functionality is always enabled when
    tracing is active (#12908, @rgrinberg)

  • 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~alpha5

05 Jan 19:00
5b81e6f

Choose a tag to compare

3.21.0~alpha5 Pre-release
Pre-release

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)

  • Improve error messages for invalid version formats containing non-ASCII
    characters. Previously, non-ASCII characters in version strings (e.g., (lang dune è) or (using menhir π3.14)) would fail with a generic "Invalid file"
    error. Now they display a clear message: "Invalid atom: contains non-ASCII
    character(s). Atoms must only contain ASCII characters." The fix is
    implemented at the lexer level, providing consistent error handling across all
    s-expression parsing. (#12844, fixes #12836, @benodiwal)

  • 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)

  • Fix greedy version location in lang declarations. Previously, error locations for
    invalid lang versions would span multiple bytes for multi-byte UTF-8 characters,
    causing carets to appear misaligned and seemingly include the closing
    parenthesis. Now, error locations for ASCII strings show the full length (e.g.,
    "Ali" shows ^^^), while non-ASCII strings show only the first byte (e.g., "è"
    shows ^) to avoid multi-byte character display issues. (#12869, fixes #12806,
    @benodiwal)

  • 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)

  • support expanding variables in (promote (into ..)) (#12832, fixes #12742,
    @anmonteiro)

  • 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)

  • Add argv, the process environment, and the dune version to the config event
    in the trace (#12909, @rgrinberg)

  • 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)

  • Added (files) stanza, similar to (dirs) to control which files are visible
    to Dune on a per-directory basis. (#12879, @nojb)

  • 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)

  • Persistent DB and process events have been slightly modified. Persistent
    DB events have more concise names and job events always include full
    information. (#12867, @rgrinberg)

  • Removed the --trace-extended flag. Its functionality is always enabled when
    tracing is active (#12908, @rgrinberg)

  • 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~alpha4

15 Dec 02:49
633b604

Choose a tag to compare

3.21.0~alpha4 Pre-release
Pre-release

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)

  • Improve error messages for invalid version formats containing non-ASCII
    characters. Previously, non-ASCII characters in version strings (e.g., (lang dune è) or (using menhir π3.14)) would fail with a generic "Invalid file"
    error. Now they display a clear message: "Invalid atom: contains non-ASCII
    character(s). Atoms must only contain ASCII characters." The fix is
    implemented at the lexer level, providing consistent error handling across all
    s-expression parsing. (#12844, fixes #12836, @benodiwal)

  • 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)

  • Fix greedy version location in lang declarations. Previously, error locations for
    invalid lang versions would span multiple bytes for multi-byte UTF-8 characters,
    causing carets to appear misaligned and seemingly include the closing
    parenthesis. Now, error locations for ASCII strings show the full length (e.g.,
    "Ali" shows ^^^), while non-ASCII strings show only the first byte (e.g., "è"
    shows ^) to avoid multi-byte character display issues. (#12869, fixes #12806,
    @benodiwal)

  • 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)

  • support expanding variables in (promote (into ..)) (#12832, fixes #12742,
    @anmonteiro)

  • 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)

  • Add argv, the process environment, and the dune version to the config event
    in the trace (#12909, @rgrinberg)

  • 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)

  • Added (files) stanza, similar to (dirs) to control which files are visible
    to Dune on a per-directory basis. (#12879, @nojb)

  • 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)

  • Persistent DB and process events have been slightly modified. Persistent
    DB events have more concise names and job events always include full
    information. (#12867, @rgrinberg)

  • Removed the --trace-extended flag. Its functionality is always enabled when
    tracing is active (#12908, @rgrinberg)

  • 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~alpha3

11 Dec 02:02
bd327ce

Choose a tag to compare

3.21.0~alpha3 Pre-release
Pre-release

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)

  • Improve error messages for invalid version formats containing non-ASCII
    characters. Previously, non-ASCII characters in version strings (e.g., (lang dune è) or (using menhir π3.14)) would fail with a generic "Invalid file"
    error. Now they display a clear message: "Invalid atom: contains non-ASCII
    character(s). Atoms must only contain ASCII characters." The fix is
    implemented at the lexer level, providing consistent error handling across all
    s-expression parsing. (#12844, fixes #12836, @benodiwal)

  • 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)

  • Fix greedy version location in lang declarations. Previously, error locations for
    invalid lang versions would span multiple bytes for multi-byte UTF-8 characters,
    causing carets to appear misaligned and seemingly include the closing
    parenthesis. Now, error locations for ASCII strings show the full length (e.g.,
    "Ali" shows ^^^), while non-ASCII strings show only the first byte (e.g., "è"
    shows ^) to avoid multi-byte character display issues. (#12869, fixes #12806,
    @benodiwal)

  • 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)

  • support expanding variables in (promote (into ..)) (#12832, fixes #12742,
    @anmonteiro)

  • 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)

  • Add argv, the process environment, and the dune version to the config event
    in the trace (#12909, @rgrinberg)

  • 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)

  • Added (files) stanza, similar to (dirs) to control which files are visible
    to Dune on a per-directory basis. (#12879, @nojb)

  • 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)

  • Persistent DB and process events have been slightly modified. Persistent
    DB events have more concise names and job events always include full
    information. (#12867, @rgrinberg)

  • Removed the --trace-extended flag. Its functionality is always enabled when
    tracing is active (#12908, @rgrinberg)

  • 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~alpha2

08 Dec 18:26
f3c1e71

Choose a tag to compare

3.21.0~alpha2 Pre-release
Pre-release

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: