Skip to content

Releases: ocaml/dune

1.2.0

14 Sep 12:31
Compare
Choose a tag to compare

CHANGES:

  • Ignore stderr output when trying to find out the number of jobs
    available (#1118, fix #1116, @diml)

  • Fix error message when the source directory of copy_files does not exist.
    (#1120, fix #1099, @emillon)

  • Highlight error locations in error messages (#1121, @emillon)

  • Display actual stanza when package is ambiguous (#1126, fix #1123, @emillon)

  • Add dune unstable-fmt to format dune files. The interface and syntax are
    still subject to change, so use with caution. (#1130, fix #940, @emillon)

  • Improve error message for dune utop without a library name (#1154, fix
    #1149, @emillon)

  • Fix parsing ocamllex stanza in jbuild files (#1150, @rgrinberg)

  • Highlight multi-line errors (#1131, @anuragsoni)

  • Do no try to generate shared libraries when this is not supported by
    the OS (#1165, fix #1051, @diml)

  • Fix Flags.write_{sexp,lines} in configurator by avoiding the use of
    Stdune.Path (#1175, fix #1161, @rgrinberg)

  • Add support for findlib.dynload: when linking an executable using
    findlib.dynload, automatically record linked in libraries and
    findlib predicates (#1172, @bobot)

  • Add support for promoting a selected list of files (#1192, @diml)

  • Add an emacs mode providing helpers to promote correction files
    (#1192, @diml)

  • Improve message suggesting to remove parentheses (#1196, fix #1173, @emillon)

  • Add (wrapped (transition "..message..")) as an option that will generate
    wrapped modules but keep unwrapped modules with a deprecation message to
    preserve compatibility. (#1188, fix #985, @rgrinberg)

  • Fix the flags passed to the ppx rewriter when using staged_pps (#1218, @diml)

  • Add (env var) to add a dependency to an environment variable.
    (#1186, @emillon)

  • Add a simple version of a polling mode: dune build -w keeps
    running and restarts the build when something change on the
    filesystem (#1140, @kodek16)

  • Cleanup the way we detect the library search path. We no longer call
    opam config var lib in the default build context (#1226, @diml)

  • Make test stanzas honor the -p flag. (#1236, fix #1231, @emillon)

  • Test stanzas take an optional (action) field to customize how they run (#1248,
    #1195, @emillon)

  • Add support for private modules via the private_modules field (#1241, fix
    #427, @rgrinberg)

  • Add support for passing arguments to the OCaml compiler via a
    response file when the list of arguments is too long (#1256, @diml)

  • Do not print diffs by default when running inside dune (#1260, @diml)

  • Interpret $ dune build dir as building the default alias in dir. (#1259,
    @rgrinberg)

  • Make the dynlink library available without findlib installed (#1270, fix
    #1264, @rgrinberg)

1.1.1

08 Aug 20:42
Compare
Choose a tag to compare

CHANGES:

  • Fix $ jbuilder --dev (#1104, fixes #1103, @rgrinberg)

  • Fix dune exec when --build-dir is set to an absolute path (#1105, fixes
    #1101, @rgrinberg)

  • Fix duplicate profile argument in suggested command when an external library
    is missing (#1109, #1106, @emillon)

  • -opaque wasn't correctly being added to modules without an interface.
    (#1108, fix #1107, @rgrinberg)

  • Fix validation of library name fields and make sure this validation also
    applies when the name is derived from the public_name. (#1110, fix #1102,
    @rgrinberg)

  • Fix a bug causing the toplevel env stanza in the workspace file to
    be ignored when at least one context had (merlin) (#1114, @diml)

1.1.0

06 Aug 13:01
Compare
Choose a tag to compare

CHANGES:

  • Fix lookup of command line specified files when --root is given. Previously,
    passing in --root in conjunction with --workspace or --config would not
    work correctly (#997, @rgrinberg)

  • Add support for customizing env nodes in workspace files. The env stanza is
    now allowed in toplevel position in the workspace file, or for individual
    contexts. This feature requires (dune lang 1.1) (#1038, @rgrinberg)

  • Add enabled_if field for aliases and tests. This field controls whether the
    test will be ran using a boolean expression language. (#819, @rgrinberg)

  • Make name, names fields optional when a public_name, public_names
    field is provided. (#1041, fix #1000, @rgrinberg)

  • Interpret X in --libdir X as relative to PREFIX when X is relative
    (#1072, fix #1070, @diml)

  • Add support for multi directory libraries by writing
    (include_subdirs unqualified) (#1034, @diml)

  • Add (staged_pps ...) to support staged ppx rewriters such as ones
    using the OCaml typer like ppx_import (#1080, fix #193, @diml)

  • Use -opaque in the dev profile. This option trades off binary quality for
    compilation speed when compiling .cmx files. (#1079, fix #1058, @rgrinberg)

  • Fix placeholders in dune subst documentation (#1090, @emillon, thanks
    @trefis for the bug report)

  • Add locations to errors when a missing binary in PATH comes from a dune file
    (#1096, fixes #1095, @rgrinberg)

1.0.1

19 Jul 23:02
Compare
Choose a tag to compare

CHANGES:

1.0.0

10 Jul 14:40
Compare
Choose a tag to compare

CHANGES:

  • Do not load the user configuration file when running inside dune
    (#700 @diml)

  • Do not infer ${null} to be a target (#693 fixes #694 @rgrinberg)

  • Introduce jbuilder.configurator library. This is a revived version of
    janestreet's configurator library with better cross compilation support, a
    versioned API, and no external dependencies. (#673, #678 #692, #695
    @rgrinberg)

  • Register the transitive dependencies of compilation units as the
    compiler might read .cm* files recursively (#666, fixes #660,
    @emillon)

  • Fix a bug causing jbuilder external-lib-deps to crash (#723,
    @diml)

  • -j now defaults to the number of processing units available rather
    4 (#726, @diml)

  • Fix attaching index.mld to documentation (#731, fixes #717 @rgrinberg)

  • Scan the file system lazily (#732, fixes #718 and #228, @diml)

  • Add support for setting the default ocaml flags and for build
    profiles (#419, @diml)

  • Display a better error messages when writing (inline_tests) in an
    executable stanza (#748, @diml)

  • Restore promoted files when they are deleted or changed in the
    source tree (#760, fix #759, @diml)

  • Fix a crash when using an invalid alias name (#762, fixes #761,
    @diml)

  • Fix a crash when using c files from another directory (#758, fixes
    #734, @diml)

  • Add an ignored_subdirs stanza to replace jbuild-ignore files
    (#767, @diml)

  • Fix a bug where Dune ignored previous occurrences of duplicated
    fields (#779, @diml)

  • Allow setting custom build directories using the --build-dir flag or
    DUNE_BUILD_DIR environment variable (#846, fix #291, @diml @rgrinberg)

  • In dune files, remove support for block (#| ... |#)) and sexp
    (#;) comments. These were very rarely used and complicate the
    language (#837, @diml)

  • In dune files, add support for block strings, allowing to nicely
    format blocks of texts (#837, @diml)

  • Remove hard-coded knowledge of ppx_driver and
    ocaml-migrate-parsetree when using a dune file (#576, @diml)

  • Make the output of Dune slightly more deterministic when run from
    inside Dune (#855, @diml)

  • Simplify quoting behavior of variables. All values are now multi-valued and
    whether a multi valued variable is allowed is determined by the quoting and
    substitution context it appears in. (#849, fix #701, @rgrinberg)

  • Fix documentation generation for private libraries. (#864, fix #856,
    @rgrinberg)

  • Use Marshal to store digest and incremental databases. This improves the
    speed of 0 rebuilds. (#817, @diml)

  • Allow setting environment variables in findlib.conf for cross compilation
    contexts. (#733, @rgrinberg)
  • Add a link_deps field to executables, to specify link-time dependencies
    like version scripts. (#879, fix #852, @emillon)

  • Rename files_recursively_in to source_tree to make it clearer it
    doesn't include generated files (#899, fix #843, @diml)

  • Present the menhir stanza as an extension with its own version
    (#901, @diml)

  • Improve the syntax of flags in (pps ...). Now instead of (pps (ppx1 -arg1 ppx2 (-foo x))) one should write (pps ppx1 -arg ppx2 -- -foo x) which looks nicer (#910, @diml)

  • Make (diff a b) ignore trailing cr on Windows and add (cmp a b) for
    comparing binary files (#904, fix #844, @diml)

  • Make dev the default build profile (#920, @diml)

  • Version dune-workspace and ~/.config/dune/config files (#932, @diml)

  • Add the ability to build an alias non-recursively from the command
    line by writing @@alias (#926, @diml)

  • Add a special default alias that defaults to (alias_rec install)
    when not defined by the user and make @@default be the default
    target (#926, @diml)

  • Forbid #require in dune files in OCaml syntax (#938, @diml)

  • Add %{profile} variable. (#938, @rgrinberg)

  • Do not require opam-installer anymore (#941, @diml)

  • Add the lib_root and libexec_root install sections (#947, @diml)

  • Rename path:file to dep:file (#944, @emillon)

  • Remove path-no-dep:file (#948, @emillon)

  • Adapt the behavior of dune subst for dune projects (#960, @diml)

  • Add the lib_root and libexec_root sections to install stanzas
    (#947, @diml)

  • Add a Configurator.V1.Flags module that improves the flag reading/writing
    API (#840, @avsm)

  • Add a tests stanza that simlpified defining regular and expect tests
    (#822, @rgrinberg)

  • Change the subst subcommand to lookup the project name from the
    dune-project whenever it's available. (#960, @diml)

  • The subst subcommand no longer looks up the root workspace. Previously this
    detection would break the command whenever -p wasn't passed. (#960, @diml)

  • Add a # DUNE_GEN in META template files. This is done for consistency with
    # JBUILDER_GEN. (#958, @rgrinberg)

  • Rename the following variables in dune files:
    SCOPE_ROOT to project_root
    @ to targets
    < to first-dep
    ^ to deps
    (#957, @rgrinberg)

  • Rename ROOT to workspace_root in dune files (#993, @diml)

  • Lowercase all built-in %{variables} in dune files (#956, @rgrinberg)

  • New syntax for naming dependencies: (deps (:x a b) (:y (glob_files *.c*))).
    This replaces the use for ${<} in dune files. (#950, @diml, @rgrinberg)

  • Fix detection of dynamic cycles, which in particular may appear when
    using (package ..) dependencies (#988, @diml)

1.0+beta20

10 Apr 14:46
Compare
Choose a tag to compare

1.0+beta20 (10/04/2018)

  • Add a documentation stanza. This stanza allows one to attach .mld files to
    opam packages. (#570 @rgrinberg)

  • Execute all actions (defined using (action ..)) in the context's
    environment. (#623 @rgrinberg)

  • Add a (universe) special dependency to specify that an action depend on
    everything in the universe. Jbuilder cannot cache the result of an action that
    depend on the universe (#603, fixes #255 @diml)

  • Add a (package <package>) dependency specification to indicate
    dependency on a whole package. Rules depending on whole pacakge will
    be executed in an environment similar to the one we get once the
    package is installed (#624, @rgrinberg and @diml)

  • Don't pass -runtime-variant _pic on Windows (#635)

  • Display documentation in alphabetical order. This is relevant to packages,
    libraries, and modules. (#647, fixes #606 @rgrinberg)

  • Missing asm in ocaml -config on bytecode only architecture is no longer fatal.
    The same kind of fix is preemptively applied to C compilers being absent.
    (#646, fixes $637 @rgrinberg)

  • Use the host's PATH variable when running actions during cross compilation
    (#649, fixes #625 @rgrinberg)

  • Fix incorrect include (-I) flags being passed to odoc. These flags should be
    directories that include .odoc files, rather than the include flags of the
    libraries. (#652 fixes #651 @rgrinberg)

  • Fix a regression introduced by beta19 where the generated merlin
    files didn't include the right -ppx flags in some cases (#658
    fixes #657 @diml)

  • Fix error messaage when a public library is defined twice. Before
    jbuilder would raise an uncaught exception (Fixes #661, @diml)

  • Fix several cases where external-lib-deps was returning too little
    dependencies (#667, fixes #644 @diml)

  • Place module list on own line in generated entry point mld (#670 @antron)

  • Cosmetic improvements to generated entry point mld (#653 @trefis)

1.0+beta19.1

20 Mar 18:59
Compare
Choose a tag to compare

1.0+beta19.1 (21/03/2018)

  • Missing asm in ocaml -config on bytecode only architecture is no longer fatal
    (#637 fixed by #639 @rgrinberg)

  • Fix regression introduced by beta19 where duplicate environment variables in
    Unix.environ would cause a fatal error. The first defined environment variable
    is now chosen. (#638 fixed by #640)

  • Use ';' as the path separator for OCAMLPATH on Cygwin (#630 fixed by #636
    @diml).

  • Use the contents of the OCAMLPATH environment variable when not relying on
    ocamlfind (#642 @diml)

1.0+beta19

18 Mar 16:36
Compare
Choose a tag to compare

1.0+beta19 (14/03/2018)

  • Ignore errors during the generation of the .merlin (#569, fixes #568 and #51)

  • Add a workaround for when a library normally installed by the
    compiler is not installed but still has a META file (#574, fixes
    #563)

  • Do not depend on ocamlfind. Instead, hard-code the library path when
    installing from opam (#575)

  • Change the default behavior regarding the check for overlaps between
    local and installed libraries. Now even if there is no link time
    conflict, we don't allow an external dependency to overlap with a
    local library, unless the user specifies allow_overlapping_dependencies
    in the jbuild file (#587, fixes #562)

  • Expose a few more variables in jbuild files: ext_obj, ext_asm,
    ext_lib, ext_dll and ext_exe as well as ${ocaml-config:XXX}
    for most variables in the output of ocamlc -config (#590)

  • Add support for inline and inline expectation tests. The system is
    generic and should support several inline test systems such as
    ppx_inline_test, ppx_expect or qtest (#547)

  • Make sure modules in the current directory always have precedence
    over included directories (#597)

  • Add support for building executables as object or shared object
    files (#23)

  • Add a best mode which is native with fallback to byte-code when
    native compilation is not available (#23)

  • Fix locations reported in error messages (#609)

  • Report error when a public library has a private dependency. Previously, this
    would be silently ignored and install broken artifacts (#607).

  • Fix display when output is not a tty (#518)

  • Add a (universe) special dependency to specify that an action
    depend on everything in the universe. Jbuilder cannot cache the
    result of an action that depend on the universe (#603, fixes #255)

1.0+beta18.1

14 Mar 13:06
Compare
Choose a tag to compare

1.0+beta18.1 (14/03/2018)

  • Reduce the number of simultaneously opened fds (#578)

  • Always produce an implementation for the alias module, for
    non-jbuilder users (Fix #576)

  • Reduce interleaving in the scheduler in an attempt to make Jbuilder
    keep file descriptors open for less long (#586)

  • Accept and ignore upcoming new library fields: ppx.driver,
    inline_tests and inline_tests.backend

  • Add a hack to be able to build ppxlib, until beta20 which will have
    generic support for ppx drivers

1.0+beta18

26 Feb 14:09
Compare
Choose a tag to compare

1.0+beta18 (25/02/2018)

  • Fix generation of the implicit alias module with 4.02. With 4.02 it
    must have an implementation while with OCaml >= 4.03 it can be an
    interface only module (#549)

  • Let the parser distinguish quoted strings from atoms. This makes
    possible to use "${v}" to concatenate the list of values provided by
    a split-variable. Concatenating split-variables with text is also
    now required to be quoted.

  • Split calls to ocamldep. Before ocamldep would be called once per
    library/executables stanza. Now it is called once per file
    (#486)

  • Make sure to not pass -I <stdlib-dir> to the compiler. It is
    useless and it causes problems in some cases (#488)

  • Don't stop on the first error. Before, jbuilder would stop its
    execution after an error was encountered. Now it continues until
    all branches have been explored (#477)

  • Add supprot for a user configuration file (#490)

  • Add more display modes and change the default display of
    Jbuilder. The mode can be set from the command line or from the
    configuration file (#490)

  • Allow to set the concurency level (-j N) from the configuration
    file (#491)

  • Store artifacts for libraries and executables in separate
    directories. This ensure that Two libraries defined in the same
    directory can't see each other unless one of them depend on the
    other (#472)

  • Better support for mli/rei only modules (#490)

  • Fix support for byte-code only architectures (#510, fixes #330)

  • Fix a regression in external-lib-deps introduced in 1.0+beta17
    (#512, fixes #485)

  • @doc alias will now build only documentation for public libraries. A new
    @doc-private alias has been added to build documentation for private
    libraries.

  • Refactor internal library management. It should now be possible to
    run jbuilder build @lint in Base for instance (#516)

  • Fix invalid warning about non-existent direcotry (#536, fixes #534)