Releases: ocaml/dune
1.7.1
1.7.0
CHANGES:
-
Second step of the deprecation of jbuilder: the
jbuilder
binary
now emits a warning on every startup and bothjbuilder
anddune
emit warnings when encounteringjbuild
files (#1752, @diml) -
Change the layout of build artifacts inside _build. The new layout enables
optimizations that depend on the presence of.cmx
files of private modules
(#1676, @bobot) -
Fix merlin handling of private module visibility (#1653 @bobot)
-
unstable-fmt: use boxes to wrap some lists (#1608, fix #1153, @emillon,
thanks to @rgrinberg) -
skip directories when looking up programs in the PATH (#1628, fixes
#1616, @diml) -
Use
lsof
on macOS to implement--stats
(#1636, fixes #1634, @xclerc) -
Generate
dune-package
files for every package. These files are installed and
read instead ofMETA
files whenever they are available (#1329, @rgrinberg) -
Fix preprocessing for libraries with
(include_subdirs ..)
(#1624, fix #1626,
@nojb, @rgrinberg) -
Do not generate targets for archive that don't match the
modes
field.
(#1632, fix #1617, @rgrinberg) -
When executing actions, open files lazily and close them as soon as
possible in order to reduce the maximum number of file descriptors
opened by Dune (#1635, #1643, fixes #1633, @jonludlam, @rgrinberg,
@diml) -
Reimplement the core of Dune using a new generic memoization system
(#1489, @rudihorn, @diml) -
Replace the broken cycle detection algorithm by a state of the art
one from this paper (#1489,
@rudihorn) -
Get the correct environment node for multi project workspaces (#1648,
@rgrinberg) -
Add
dune compute
to call internal memoized functions (#1528,
@rudihorn, @diml) -
Add
--trace-file
option to trace dune internals (#1639, fix #1180, @emillon) -
Add
--no-print-directory
(borrowed from GNU make) to suppress
Entering directory
messages. (#1668, @dra27) -
Remove
--stats
and track fd usage in--trace-file
(#1667, @emillon) -
Add virtual libraries feature and enable it by default (#1430 fixes #921,
@rgrinberg) -
Fix handling of Control+C in watch mode (#1678, fixes #1671, @diml)
-
Look for jsoo runtime in the same dir as the
js_of_ocaml
binary
when the ocamlfind package is not available (#1467, @nojb) -
Make the
seq
package available for OCaml >= 4.07 (#1714, @rgrinberg) -
Add locations to error messages where a rule fails to generate targets and
rules that require files outside the build/source directory. (#1708, fixes
#848, @rgrinberg) -
Let
Configurator
handlesizeof
(in addition to negative numbers).
(#1726, fixes #1723, @Chris00) -
Fix an issue causing menhir generated parsers to fail to build in
some cases. The fix is to systematically use-short-paths
when
callingocamlc -i
(#1743, fix #1504, @diml) -
Never raise when printing located errors. The code that would print the
location excerpts was prone to raising. (#1744, fix #1736, @rgrinberg) -
Add a
dune upgrade
command for upgrading jbuilder projects to Dune
(#1749, @diml) -
When automatically creating a
dune-project
file, insert the
detected name in it (#1749, @diml) -
Add
(implicit_transitive_deps <bool>)
mode to dune projects. When this mode
is turned off, transitive dependencies are not accessible. Only listed
dependencies are directly accessible. (#1734, #430, @rgrinberg, @hnrgrgr) -
Add
toplevel
stanza. This stanza is used to define toplevels with libraries
already preloaded. (#1713, @rgrinberg) -
Generate
.merlin
files that account for normal preprocessors defined using a
subset of theaction
language. (#1768, @rgrinberg) -
Emit
(orig_src_dir <path>)
metadata indune-package
for dune packages
built with--store-orig-source-dir
command line flag (also controlled by
DUNE_STORE_ORIG_SOURCE_DIR
env variable). This is later used to generate
.merlin
withS
-directives pointed to original source locations and thus
allowing merlin to see those. (#1750, @andreypopp) -
Improve the behavior of
dune promote
when the files to be promoted have been
deleted. (#1775, fixes #1772, @diml) -
Pass flags correctly when using
staged_pps
(#1779, fixes #1774, @diml) -
Fix an issue with the use of
(mode promote)
in the menhir
stanza. It was previously causing intermediate mock files to be
promoted (#1783, fixes #1781, @diml) -
unstable-fmt: ignore files using OCaml syntax (#1784, @emillon)
-
Configurator: Add
which
function to replace thewhich
command line utility
in a cross platform way. (#1773, fixes #1705, @Chris00) -
Make configurator append paths to
$PKG_CONFIG_PATH
on macOS. Previously it
was prepending paths and thus$PKG_CONFIG_PATH
set by users could have been
overridden by homebrew installed libraries (#1785, @andreypopp) -
Disallow c/cxx sources that share an object file in the same stubs archive.
This means thatfoo.c
andfoo.cpp
can no longer exist in the same library.
(#1788, @rgrinberg) -
Forbid use of
%{targets}
(or${@}
in jbuild files) inside
preprocessing actions
(#1812, fixes #1811, @diml) -
Add
DUNE_PROFILE
environment variable to easily set the profile. (#1806,
@rgrinberg) -
Deprecate the undocumented
(no_keep_locs)
field. It was only
necessary until virtual libraries were supported (#1822, fix #1816,
@diml) -
Rename
unstable-fmt
toformat-dune-file
and remove its--inplace
option.
(#1821, @emillon). -
Autoformatting:
(using fmt 1.1)
will also format dune files (#1821, @emillon). -
Autoformatting: record dependencies on
.ocamlformat-ignore
files (#1824,
fixes #1793, @emillon)
1.6.3
CHANGES:
-
Fix merlin handling of private module visibility (#1653 @bobot)
-
skip directories when looking up programs in the PATH (#1628, fixes
#1616, @diml) -
Fix preprocessing for libraries with
(include_subdirs ..)
(#1624, fix #1626,
@nojb, @rgrinberg) -
Do not generate targets for archive that don't match the
modes
field.
(#1632, fix #1617, @rgrinberg) -
When executing actions, open files lazily and close them as soon as
possible in order to reduce the maximum number of file descriptors
opened by Dune (#1635, #1643, fixes #1633, @jonludlam, @rgrinberg,
@diml) -
Do not generate targets for archive that don't match the
modes
field.
(#1632, fix #1617, @rgrinberg) -
Get the correct environment node for multi project workspaces (#1648,
@rgrinberg) -
Fix an issue causing menhir generated parsers to fail to build in
some cases. The fix is to systematically use-short-paths
when
callingocamlc -i
(#1743, fix #1504, @diml)
1.6.2
CHANGES:
-
Fix regression introduced by #1554 reported in:
#734 (comment) (#1612,
@rgrinberg) -
Fix
dune external-lib-deps
when preprocessors are not installed
(#1607, @diml)
1.6.1
1.6.0
CHANGES:
-
Add predicate language support for specifying sub directories. This allows the
use globs, set operations, and special values in specifying the sub
directories used for the build. For example:(dirs :standard \ lib*)
will
use all directories except those that start withlib
. (#1517, #1568,
@rgrinberg) -
Add
binaries
field to the(env ..)
stanza. This field sets and overrides
binaries for rules defined in a directory. (#1521, @rgrinberg) -
Fix a crash caused by using an extension in a project without
dune-project file (#1535, fix #1529, @diml) -
Allow
%{bin:..}
,%{exe:..}
, and other static expansions in thedeps
field. (#1155, fix #1531, @rgrinberg) -
Fix bad interaction between on-demand ppx rewriters and using multiple build
contexts (#1545, @diml) -
Fix handling of installed .dune files when the backend is declared via a
dune
file (#1551, fixes #1549, @diml) -
Add a
--stats
command line option to record resource usage (#1543, @diml) -
Fix
dune build @doc
deletinghighlight.pack.js
on rebuilds, after the
first build (#1557, @aantron). -
Allow targets to be directories, which Dune will treat opaquely
(#1547, @jordwalke) -
Support for OCaml 4.08:
List.t
is now provided by OCaml (#1561, @ejgallego) -
Exclude the local esy directory (
_esy
) from the list of watched directories
(#1578, @andreypopp) -
Introduce
data_only_dirs
to replaceignored_subdirs
.ignored_subdirs
is
deprecated since 1.6. (#1590, @rgrinberg)
1.5.1
1.5.0
CHANGES:
-
Filter out empty paths from
OCAMLPATH
andPATH
(#1436, @rgrinberg) -
Do not add the
lib.cma.js
target in lib's directory. Put this target in a
sub directory instead. (#1435, fix #1302, @rgrinberg) -
Install generated OCaml files with a
.ml
rather than a.ml-gen
extension
(#1425, fix #1414, @rgrinberg) -
Allow to use the
bigarray
library in >= 4.07 without ocamlfind and without
installing the correspondingotherlib
. (#1455, @nojb) -
Add
@all
alias to build all targets defined in a directory (#1409, fix
#1220, @rgrinberg) -
Add
@check
alias to build all targets required for type checking and tooling
support. (#1447, fix #1220, @rgrinberg) -
Produce the odoc index page with the content wrapper to make it consistent
with odoc's theming (#1469, @rizo) -
Unblock signals in processes started by dune (#1461, fixes #1451,
@diml) -
Respect
OCAMLFIND_TOOLCHAIN
and add atoolchain
option to contexts in the
workspace file. (#1449, fix #1413, @rgrinberg) -
Fix error message when using
copy_files
stanza to copy files from
a non sub directory with lang set to dune < 1.3 (#1486, fixes #1485,
@NathanReb) -
Install man pages in the correct subdirectory (#1483, fixes #1441, @emillon)
-
Fix version syntax check for
test
stanza'saction
field. Only
emits a warning for retro-compatibility (#1474, fixes #1471,
@NathanReb) -
Fix interpretation of paths in
env
stanzas (#1509, fixes #1508, @diml) -
Add
context_name
expansion variable (#1507, @rgrinberg) -
Use shorter paths for generated on-demand ppx drivers. This is to
help Windows builds where paths are limited in length (#1511, fixes
#1497, @diml) -
Fix interpretation of environment variables under
setenv
. Also forbid
dynamic environment names or values (#1503, @rgrinberg).
1.4.0
CHANGES:
-
Do not fail if the output of
ocamlc -config
doesn't include
standard_runtime
(#1326, @diml) -
Let
Configurator.V1.C_define.import
handle negative integers
(#1334, @Chris00) -
Re-execute actions when a target is modified by the user inside
_build
(#1343, fix #1342, @diml) -
Fix bad interaction between multi-directory libraries the
menhir
stanza (#1373, fix #1372, @diml) -
Integration with automatic formatters (#1252, fix #1201, @emillon)
-
Better error message when using
(self_build_stubs_archive ...)
and
(c_names ...)
or(cxx_names ...)
simultaneously.
(#1375, fix #1306, @nojb) -
Improve name detection for packages when the prefix isn't an actual package
(#1361, fix #1360, @rgrinberg) -
Support for new menhir rules (#863, fix #305, @fpottier, @rgrinberg)
-
Do not remove flags when compiling compatibility modules for wrapped mode
(#1382, fix #1364, @rgrinberg) -
Fix reason support when using
staged_pps
(#1384, @charlesetc) -
Add support for
enabled_if
inrule
,menhir
,ocamllex
,
ocamlyacc
(#1387, @diml) -
Load all defined libraries recursively into utop (#1384, fix #1344,
@rgrinberg) -
Allow to use libraries
bytes
,result
anduchar
withoutfindlib
installed (#1391, @nojb) -
Take argument to self_build_stubs_archive into account. (#1395, @nojb)
-
Fix bad interaction between
env
customization and vendored
projects: when a vendored project didn't have its ownenv
stanza,
theenv
stanza from the enclosing project was in effect (#1408,
@diml) -
Fix stop early bug when scanning for watermarks (#1423, @diml)
1.3.0
CHANGES:
-
Allow
dune.configurator
andbase
to be used together (#1291, fix
#1167, @diml) -
Support interrupting and restarting builds on file changes (#1246,
@kodek16) -
Fix findlib-dynload support with byte mode only (#1295, @bobot)
-
Expand variables in
(targets ..)
field (#1301, #1320, fix #1189, @nojb,
@rgrinberg, @diml) -
Fix a race condition on Windows that was introduced in 1.2.0
(#1304, fix #1303, @diml) -
Fix the generation of .merlin files to account for private modules
(@rgrinberg, fix #1314) -
Exclude the local opam switch directory (
_opam
) from the list of watched
directories (#1315, @dysinger) -
Fix compilation of the module generated for
findlib.dynload
(#1317, fix #1310, @diml) -
Lift restriction on
copy_files
andcopy_files#
stanzas that files to be
copied should be in a subdirectory of the current directory.
(#1323, fix #911, @nojb)