Skip to content

Releases: ocaml/dune

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)

1.0+beta17

01 Feb 12:16
e61142e
Compare
Choose a tag to compare

1.0+beta17 (01/02/2018)

  • Make jbuilder aware that num is an external package in OCaml >= 4.06.0
    (#358)

  • jbuilder exec will now rebuild the executable before running it if
    necessary. This can be turned off by passing --no-build (#345)

  • Fix jbuilder utop to work in any working directory (#339)

  • Fix generation of META synopsis that contains double quotes (#337)

  • Add S . to .merlin by default (#284)

  • Improve jbuilder exec to make it possible to execute non public executables.
    jbuilder exec path/bin will execute bin inside default (or specified)
    context relative to path. jbuilder exec /path will execute /path as
    absolute path but with the context's environment set appropriately. Lastly,
    jbuilder exec will change the root as to which paths are relative using the
    -root option. (#286)

  • Fix jbuilder rules printing rules when some binaries are missing (#292)

  • Build documentation for non public libraries (#306)

  • Fix doc generation when several private libraries have the same name (#369)

  • Fix copy# for C/C++ with Microsoft C compiler (#353)

  • Add support for cross-compilation. Currently we are supporting the
    opam-cross-x repositories such as
    opam-cross-windows
    (#355)

  • Simplify generated META files: do not generate the transitive
    closure of dependencies in META files (#405)

  • Deprecated ${!...}: the split behavior is now a property of the
    variable. For instance ${CC}, ${^}, ${read-lines:...} all
    expand to lists unless used in the middle of a longer atom (#336)

  • Add an (include ...) stanza allowing one to include another
    non-generated jbuild file in the current file (#402)

  • Add a (diff <file1> <file2>) action allowing to diff files and
    promote generated files in case of mismatch (#402, #421)

  • Add jbuilder promote and --auto-promote to promote files (#402,
    #421)

  • Report better errors when using (glob_files ...) with a directory
    that doesn't exist (#413, Fix #412)

  • Jbuilder now properly handles correction files produced by
    ppx_driver. This allows to use [@@deriving_inline] in .ml/.mli
    files. This require ppx_driver >= v0.10.2 to work properly (#415)

  • Make jbuilder load rules lazily instead of generating them all
    eagerly. This speeds up the initial startup time of jbuilder on big
    workspaces (#370)

  • Now longer generate a META.pkg.from-jbuilder file. Now the only
    way to customise the generated META file is through
    META.pkg.template. This feature was unused and was making the code
    complicated (#370)

  • Remove read-only attribute on Windows before unlink (#247)

  • Use /Fo instead of -o when invoking the Microsoft C compiler to eliminate
    deprecation warning when compiling C++ sources (#354)

  • Add a mode field to rule stanzas:

    • (mode standard) is the default
    • (mode fallback) replaces (fallback)
    • (mode promote) means that targets are copied to the source tree
      after the rule has completed
    • (mode promote-until-clean) is the same as (mode promote) except
      that jbuilder clean deletes the files copied to the source tree.
      (#437)
  • Add a flag --ignore-promoted-rules to make jbuilder ignore rules
    with (mode promote). -p implies --ignore-promoted-rules (#437)

  • Display a warning for invalid lines in jbuild-ignore (#389)

  • Always build boot.exe as a bytecode program. It makes the build of
    jbuilder faster and fix the build on some architectures (#463, fixes #446)

  • Fix bad interaction between promotion and incremental builds on OSX
    (#460, fix #456)

1.0+beta16

06 Nov 09:41
Compare
Choose a tag to compare

1.0+beta16 (05/11/2017)

  • Fix build on 32-bit OCaml on Windows/Cygwin (#313)

1.0+beta15

04 Nov 14:07
Compare
Choose a tag to compare

1.0+beta15 (04/11/2017)

  • Change the semantic of aliases: there are no longer aliases that are
    recursive such as install or runtest. All aliases are
    non-recursive. However, when requesting an alias from the command
    line, this request the construction of the alias in the specified
    directory and all its children recursively. This allows users to get
    the same behavior as previous recursive aliases for their own
    aliases, such as example. Inside jbuild files, one can use (deps (... (alias_rec xxx) ...)) to get the same behavior as on the
    command line. (#268)

  • Include sub libraries that have a . in the generated documentation index
    (#280).

  • Fix "up" links to the top-level index in the odoc generated documentation
    (#282).

  • Fix ARCH_SIXTYFOUR detection for OCaml 4.06.0 (#303)

1.0+beta14

11 Oct 20:44
Compare
Choose a tag to compare

1.0+beta14 (11/10/2017)

  • Add (copy_files ) and (copy_files# ) stanzas. These
    stanzas setup rules for copying files from a sub-directory to the
    current directory. This provides a reasonable way to support
    multi-directory library/executables in jbuilder (#35, Francois Bobot)

  • An empty jbuild-workspace file is now interpreted the same as one
    containing just (context default)

  • Better support for on-demand utop toplevels on Windows and when the
    library has C stubs

  • Print Entering directory '...' when the workspace root is not the
    current directory. This allows Emacs and Vim to know where relative
    filenames should be interpreted from. Fixes #138

  • Fix a bug related to menhir stanzas: menhir stanzas with a
    merge_into field that were in jbuild files in sub-directories
    where incorectly interpreted (#264)

  • Add support for locks in actions, for tests that can't be run
    concurrently (#263)

  • Support ${..} syntax in the include stanza. (#231)

1.0+beta13

06 Sep 00:53
Compare
Choose a tag to compare

1.0+beta13 (05/09/2017)

  • Generate toplevel html index for documentation (#224, Thomas Gazagnaire)

  • Fix recompilation of native artifacts. Regression introduced in the last
    version (1.0+beta12) when digests replaces timestamps for checking staleness
    (#238, David Allsopp)

1.0+beta12 (18/08/2017)

19 Aug 00:00
Compare
Choose a tag to compare
  • Fix the quoting of FLG lines in generated .merlin files (#200,
    Marcello Seri)

  • Use the full path of archive files when linking. Before jbuilder
    would do: -I <path> file.cmxa, now it does -I <path> <path>/file.cmxa. Fixes #118 and #177

  • Use an absolute path for ppx drivers in .merlin files. Merlin
    <3.0.0 used to run ppx commands from the directory where the
    .merlin was present but this is no longer the case

  • Allow to use jbuilder install in contexts other than opam; if
    ocamlfind is present in the PATH and the user didn't pass
    --prefix or --libdir explicitly, use the output of ocamlfind printconf destdir as destination directory for library files (#179,
    Francois Bobot)

  • Allow (:include ...) forms in all *flags fields (#153, David
    Allsopp)

  • Add a utop subsommand. Running jbuilder utop in a directory
    builds and executes a custom utop toplevel with all libraries
    defined in the current directory (#183, Rudi Grinberg)

  • Do not accept per_file anymore in preprocess field. per_file
    was renamed per_module and it is planned to reuse per_file for
    another purpose

  • Warn when a file is both present in the source tree and generated by
    a rule. Before, jbuilder would silently ignore the rule. One now has
    to add a field (fallback) to custom rules to keep the current
    behavior (#218)

  • Get rid of the deprecated-ppx-method findlib package for ppx
    rewriters (#222, fixes #163)

  • Use digests (MD5) of files contents to detect changes rather than
    just looking at the timestamps. We still use timestamps to avoid
    recomputing digests. The performance difference is negligible and we
    avoid more useless recompilations, especially when switching branches
    for instance (#209, fixes #158)

1.0+beta11

21 Jul 16:38
Compare
Choose a tag to compare

1.0+beta11 (21/07/2017)

  • Fix the error message when there are more than one <package>.opam
    file for a given pacakge

  • Report an error when in a wrapped library, a module that is not the
    toplevel module depends on the toplevel module. This doesn't make as
    such a module would in theory be inaccessible from the outside

  • Add ${SCOPE_ROOT} pointing to the root of the current scope, to
    fix some misuses of ${ROOT}

  • Fix useless hint when all missing dependencies are optional (#137)

  • Fix a bug preventing one from generating META.pkg.template with a
    custom rule (#190)

  • Fix compilation of reason projects: .rei files where ignored and
    caused the build to fail (#184)

1.0+beta10

08 Jun 10:45
Compare
Choose a tag to compare

1.0+beta10 (08/06/2017)

  • Add a clean subcommand (Richard Davison, #89)

  • Add support for generating API documentation with odoc (#74)

  • Don't use unix in the bootstrap script, to avoid surprises with
    Cygwin

  • Improve the behavior of jbuilder exec on Windows

  • Add a --no-buffer option to see the output of commands in
    real-time. Should only be used with -j1

  • Deprecate per_file in preprocessing specifications and
    rename it per_module

  • Deprecate copy-and-add-line-directive and rename it copy#

  • Remove the ability to load arbitrary libraries in jbuild file in
    OCaml syntax. Only unix is supported since a few released packages
    are using it. The OCaml syntax might eventually be replaced by a
    simpler mechanism that plays better with incremental builds

  • Properly define and implement scopes

  • Inside user actions, ${^} now includes files matches by
    (glob_files ...) or (file_recursively_in ...)

  • When the dependencies and targets of a rule can be inferred
    automatically, you no longer need to write them: (rule (copy a b))

  • Inside (run ...), ${xxx} forms that expands to lists can now be
    split across multiple arguments by adding a !: ${!xxx}. For
    instance: (run foo ${!^})

  • Add support for using the contents of a file inside an action:

    • ${read:<file>}
    • ${read-lines:<file>}
    • ${read-strings:<file>} (same as read-lines but lines are
      escaped using OCaml convention)
  • When exiting prematurely because of a failure, if there are other
    background processes running and they fail, print these failures

  • With msvc, -lfoo is transparently replaced by foo.lib (David
    Allsopp, #127)

  • Automatically add the .exe when installing executables on Windows
    (#123)

  • (run <prog> ...) now resolves <prog> locally if
    possible. i.e. (run ${bin:prog} ...) and (run prog ...) behave
    the same. This seems like the right default

  • Fix a bug where jbuild rules would crash instead of reporting a
    proper build error

  • Fix a race condition in future.ml causing jbuilder to crash on
    Windows in some cases (#101)

  • Fix a bug causing ppx rewriter to not work properly when using
    multiple build contexts (#100)

  • Fix .merlin generation: projects in the same workspace are added to
    merlin's source path, so "locate" works on them.

1.0+beta9

19 May 14:42
Compare
Choose a tag to compare

1.0+beta9 (19/05/2017)

  • Add support for building Reason projects (Rudi Grinberg, #58)

  • Add support for building javascript with js-of-ocaml (Hugo Heuzard,
    #60)

  • Better support for topkg release workflow. See
    topkg-jbuilder for more
    details

  • Port the manual to rst and setup a jbuilder project on
    readthedocs.org (Rudi Grinberg, #78)

  • Hint for mistyped targets. Only suggest correction on the basename
    for now, otherwise it's slow when the workspace is big

  • Add a (package ...) field for aliases, so that one can restrict
    tests to a specific package (Rudi Grinberg, #64)

  • Fix a couple of bugs on Windows:

    • fix parsing of end of lines in some cases
    • do not take the case into account when comparing environment
      variable names
  • Add AppVeyor CI

  • Better error message in case a chain of dependencies crosses the
    installed world

  • Better error messages for invalid dependency list in jbuild files

  • Severel improvements/fixes regarding the handling of findlib packages:

    • Better error messages when a findlib package is unavailable
    • Don't crash when an installed findlib package has missing
      dependencies
    • Handle the findlib alternative directory layout which is still
      used by a few packages
  • Add jbuilder installed-libraries --not-available explaining why
    some libraries are not available

  • jbuilder now records dependencies on files of external
    libraries. This mean that when you upgrade a library, jbuilder will
    know what need to be rebuilt.

  • Add a jbuilder rules subcommand to dump internal compilation
    rules, mostly for debugging purposes

  • Ignore all directories starting with a . or _. This seems to be
    a common pattern:

    • .git, .hg, _darcs
    • _build
    • _opam (opam 2 local switches)
  • Fix the hint for jbuilder external-lib-deps (#72)

  • Do not require ocamllex and ocamlyacc to be at the same location
    as ocamlc (#75)