dune/CHANGES.md

804 lines
28 KiB
Markdown
Raw Normal View History

next
----
- Do not load the user configuration file when running inside dune
2018-04-17 11:48:47 +00:00
(#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)
2018-04-17 14:38:54 +00:00
- 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)
2018-05-08 15:28:50 +00:00
- Display a better error messages when writing `(inline_tests)` in an
executable stanza (#748, @diml)
2018-05-09 15:18:18 +00:00
- Restore promoted files when they are deleted or changed in the
source tree (#760, fix #759, @diml)
2018-05-09 15:49:17 +00:00
- Fix a crash when using an invalid alias name (#762, fixes #761,
@diml)
2018-05-09 13:37:56 +00:00
- Fix a crash when using c files from another directory (#758, fixes
#734, @diml)
2018-05-12 13:38:22 +00:00
- Add an `ignored_subdirs` stanza to replace `jbuild-ignore` files
(#767, @diml)
- Fix a bug where Dune ignored previous occurrences of duplicated
2018-05-17 14:46:09 +00:00
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)
2018-04-10 14:43:44 +00:00
1.0+beta20 (10/04/2018)
-----------------------
- Add a `documentation` stanza. This stanza allows one to attach .mld files to
opam packages. (#570 @rgrinberg)
2018-03-18 12:07:09 +00:00
- Execute all actions (defined using `(action ..)`) in the context's
environment. (#623 @rgrinberg)
2018-03-18 18:06:35 +00:00
- 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 package will be executed in an
environment similar to the one we get once the package is installed (#624,
@rgrinberg and @diml)
2018-03-22 14:05:46 +00:00
2018-04-10 14:49:29 +00:00
- Don't pass `-runtime-variant _pic` on Windows (#635, fixes #573 @diml)
2018-03-22 14:12:57 +00:00
- 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)
2018-03-23 16:19:50 +00:00
- 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)
2018-03-27 20:59:18 +00:00
- 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 message when a public library is defined twice. Before
jbuilder would raise an uncaught exception (Fixes #661, @diml)
2018-03-27 20:59:18 +00:00
2018-03-31 00:45:49 +00:00
- Fix several cases where `external-lib-deps` was returning too little
dependencies (#667, fixes #644 @diml)
2018-04-10 14:43:44 +00:00
- Place module list on own line in generated entry point mld (#670 @antron)
- Cosmetic improvements to generated entry point mld (#653 @trefis)
2018-03-20 16:34:19 +00:00
1.0+beta19.1 (21/03/2018)
-------------------------
- 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)
2018-03-20 16:34:19 +00:00
1.0+beta19 (14/03/2018)
2018-03-12 20:43:43 +00:00
-----------------------
2018-03-01 23:41:46 +00:00
- 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)
2018-03-05 16:35:59 +00:00
- 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)
2018-03-06 14:39:41 +00:00
- Expose a few more variables in jbuild files: `ext_obj`, `ext_asm`,
2018-03-07 09:41:31 +00:00
`ext_lib`, `ext_dll` and `ext_exe` as well as `${ocaml-config:XXX}`
for most variables in the output of `ocamlc -config` (#590)
2018-03-06 14:39:41 +00:00
2018-03-09 19:55:51 +00:00
- 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)
2018-03-09 17:43:27 +00:00
- 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)
2018-03-09 17:43:27 +00:00
2018-03-12 20:43:43 +00:00
- 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).
2018-03-14 12:37:26 +00:00
- Fix display when output is not a tty (#518)
1.0+beta18.1 (14/03/2018)
-------------------------
- Reduce the number of simultaneously opened fds (#578)
2018-03-14 12:37:26 +00:00
- 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` (#588)
- Add a hack to be able to build ppxlib, until beta20 which will have
generic support for ppx drivers
2018-02-24 19:56:56 +00:00
1.0+beta18 (25/02/2018)
2018-02-14 15:13:43 +00:00
-----------------------
- 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)
2018-02-10 15:06:27 +00:00
- 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)
2018-02-06 11:49:44 +00:00
- Make sure to not pass `-I <stdlib-dir>` to the compiler. It is
useless and it causes problems in some cases (#488)
2018-02-07 11:41:33 +00:00
- 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 support for a user configuration file (#490)
2018-02-07 11:41:33 +00:00
- 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 concurrency level (`-j N`) from the configuration file (#491)
2018-02-07 12:12:15 +00:00
2018-02-07 12:33:12 +00:00
- 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)
2018-03-01 07:05:02 +00:00
- Better support for mli/rei only modules (#489)
2018-02-13 12:49:50 +00:00
- Fix support for byte-code only architectures (#510, fixes #330)
2018-02-13 17:22:10 +00:00
- Fix a regression in `external-lib-deps` introduced in 1.0+beta17
(#512, fixes #485)
2018-02-16 13:48:41 +00:00
- `@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 library management (#516) Lib module ---------- We have a new module Lib that replaces Lib, parts of Lib_db and parts of Findlib. It is used to manage all libraries (internal and extrernal). Lib.t represent a completely resolved library, i.e. where all the dependencies have been resolved. Lib.Compile is used to provide what is necessary to build the library itself. Lib.Meta provides what is necessary to generate the META file for the library. We also have library databases represented as Lib.DB.t. A library database is simply a mapping from names to Lib.t values and and created from a resolve function that looks up a name and return a Lib.Info.t. A Lib.Info.t is the same as a Lib.t except that dependencies are not resolved. A library database can have a parent database that is used to lookup names that are not found in the current database. In practice we have the following hierarchy: 1. For every scope, we have a library database that holds all the libraries of this scope. In this DB, a library can be referred by either it's name or public name 2. the parent of each of these databases is a database that holds all the public libraries of the workspace. In this DB libraries must be referred by their public name 3. the parent of this DB is for installed libraries (1) databases are accessible via Scope.libs (Super_context.find_scope_by_{name,dir} sctx xxx) (2) is accessible via Super_context.public_libs sctx (3) is accessible via Super_context.installed_libs sctx The dependencies of a library are always resolved inside the DB it is part of. When we compute a transitive closure, we check that we don't have two libraries from two different DB with the same name. So for instance linting Base should now supported. Jbuild.Scope_info ----------------- Jbuild.Scope was renamed Jbuild.Scope_info Scope module ------------ This replaces Lib_db. A Scope.t is now just a pair of a Jbuild.Scope_info.t and a Lib.DB.t. Scope.DB.t is an object used to lookup scopes by either name or directory. We no longer have an external scope or special anonymous scope. Instead one should use Super_context.installed_libs or Super_context.public_libs depending on the context.
2018-02-20 11:46:10 +00:00
- 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 directory (#536, fixes #534)
2018-02-24 19:56:56 +00:00
2018-02-01 10:59:00 +00:00
1.0+beta17 (01/02/2018)
2018-01-23 09:46:14 +00:00
-----------------------
2017-11-07 15:02:31 +00:00
2017-12-12 15:43:29 +00:00
- 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)
2017-11-07 15:02:31 +00:00
- 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)
2017-12-21 11:59:49 +00:00
2017-11-07 15:02:31 +00:00
- Fix `jbuilder rules` printing rules when some binaries are missing (#292)
- Build documentation for non public libraries (#306)
2017-12-18 13:31:21 +00:00
- Fix doc generation when several private libraries have the same name (#369)
- Fix copy# for C/C++ with Microsoft C compiler (#353)
2017-12-21 11:59:49 +00:00
- Add support for cross-compilation. Currently we are supporting the
opam-cross-x repositories such as
[opam-cross-windows](https://github.com/whitequark/opam-cross-windows)
(#355)
- Simplify generated META files: do not generate the transitive
closure of dependencies in META files (#405)
2018-01-18 11:36:36 +00:00
- 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)
2018-01-18 11:36:36 +00:00
- 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)
2018-01-16 13:43:02 +00:00
- 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 customize 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)
2018-01-25 19:07:46 +00:00
- 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)
2017-11-06 09:40:25 +00:00
1.0+beta16 (05/11/2017)
-----------------------
- Fix build on 32-bit OCaml (#313)
2017-11-06 09:40:25 +00:00
2017-11-04 14:05:14 +00:00
1.0+beta15 (04/11/2017)
-----------------------
2017-09-29 16:32:58 +00:00
- 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
2017-11-04 14:05:14 +00:00
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)
2017-09-29 16:32:58 +00:00
2017-10-11 20:12:20 +00:00
1.0+beta14 (11/10/2017)
-----------------------
2017-09-10 01:36:02 +00:00
- Add (copy_files <glob>) and (copy_files# <glob>) 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, @bobot)
2017-09-10 01:36:02 +00:00
2017-09-22 01:25:05 +00:00
- 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
2017-09-29 11:04:27 +00:00
- Fix a bug related to `menhir` stanzas: `menhir` stanzas with a
`merge_into` field that were in `jbuild` files in sub-directories
where incorrectly interpreted (#264)
2017-09-29 11:04:27 +00:00
- Add support for locks in actions, for tests that can't be run
concurrently (#263)
2017-10-11 20:00:38 +00:00
- Support `${..}` syntax in the `include` stanza. (#231)
2017-09-06 00:47:40 +00:00
1.0+beta13 (05/09/2017)
-----------------------
- Generate toplevel html index for documentation (#224, @samoht)
2017-09-06 00:47:40 +00:00
- Fix recompilation of native artifacts. Regression introduced in the last
version (1.0+beta12) when digests replaces timestamps for checking staleness
(#238, @dra27)
2017-09-06 00:47:40 +00:00
1.0+beta12 (18/08/2017)
-----------------------
2017-07-25 10:48:46 +00:00
- Fix the quoting of `FLG` lines in generated `.merlin` files (#200,
@mseri)
- 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
2017-07-25 16:10:26 +00:00
- 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,
@bobot)
2017-07-25 16:10:26 +00:00
- Allow `(:include ...)` forms in all `*flags` fields (#153, @dra27)
2017-08-03 16:30:04 +00:00
- Add a `utop` subcommand. Running `jbuilder utop` in a directory
2017-08-04 08:22:03 +00:00
builds and executes a custom `utop` toplevel with all libraries
defined in the current directory (#183, @rgrinberg)
2017-08-04 08:22:03 +00:00
- 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)
2017-08-17 13:28:25 +00:00
- 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)
2017-07-21 16:35:28 +00:00
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)
2017-07-17 11:49:48 +00:00
- 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)
2017-06-08 10:36:44 +00:00
1.0+beta10 (08/06/2017)
-----------------------
2017-05-22 09:37:07 +00:00
- Add a `clean` subcommand (@rdavison, #89)
2017-05-26 10:34:15 +00:00
2017-06-01 14:40:55 +00:00
- Add support for generating API documentation with odoc (#74)
2017-05-22 09:37:07 +00:00
2017-05-24 13:21:02 +00:00
- Don't use unix in the bootstrap script, to avoid surprises with
Cygwin
2017-05-22 09:37:07 +00:00
2017-06-01 14:40:55 +00:00
- 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`
2017-06-02 18:05:14 +00:00
- Deprecate `per_file` in preprocessing specifications and
rename it `per_module`
2017-06-05 11:10:39 +00:00
- 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
2017-06-05 12:42:13 +00:00
- Properly define and implement scopes
2017-06-01 14:40:55 +00:00
- 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` (@dra27, #127)
2017-06-07 09:52:14 +00:00
2017-06-08 09:00:44 +00:00
- 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
2017-06-01 14:40:55 +00:00
- Fix a bug where `jbuild rules` would crash instead of reporting a
proper build error
2017-05-26 16:31:45 +00:00
- Fix a race condition in future.ml causing jbuilder to crash on
Windows in some cases (#101)
2017-05-26 16:31:32 +00:00
2017-06-01 14:40:55 +00:00
- 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.
2017-05-19 12:11:17 +00:00
1.0+beta9 (19/05/2017)
----------------------
2017-05-06 01:52:46 +00:00
- Add support for building Reason projects (@rgrinberg, #58)
2017-05-06 01:52:46 +00:00
- Add support for building javascript with js-of-ocaml (@hhugo, #60)
2017-05-06 01:52:46 +00:00
2017-05-19 12:29:27 +00:00
- Better support for topkg release workflow. See
[topkg-jbuilder](https://github.com/diml/topkg-jbuilder) for more
details
- Port the manual to rst and setup a jbuilder project on
readthedocs.org (@rgrinberg, #78)
2017-05-09 06:45:40 +00:00
2017-05-06 01:52:46 +00:00
- 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 (@rgrinberg, #64)
2017-05-06 01:52:46 +00:00
2017-05-19 12:29:27 +00:00
- 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
2017-05-06 01:52:46 +00:00
- Better error message in case a chain of dependencies *crosses* the
installed world
- Better error messages for invalid dependency list in jbuild files
- Several improvements/fixes regarding the handling of findlib packages:
2017-05-19 12:29:27 +00:00
+ 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
2017-05-17 14:14:05 +00:00
- Add `jbuilder installed-libraries --not-available` explaining why
some libraries are not available
2017-05-18 12:57:05 +00:00
- 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.
2017-05-19 11:15:45 +00:00
- Add a `jbuilder rules` subcommand to dump internal compilation
rules, mostly for debugging purposes
2017-05-19 12:29:27 +00:00
- Ignore all directories starting with a `.` or `_`. This seems to be
a common pattern:
- `.git`, `.hg`, `_darcs`
- `_build`
- `_opam` (opam 2 local switches)
2017-05-19 13:16:00 +00:00
- Fix the hint for `jbuilder external-lib-deps` (#72)
2017-05-19 14:25:42 +00:00
- Do not require `ocamllex` and `ocamlyacc` to be at the same location
as `ocamlc` (#75)
2017-05-06 01:52:46 +00:00
1.0+beta8 (17/04/2017)
----------------------
- Added `${lib-available:<library-name>}` which expands to `true` or
`false` with the same semantic as literals in `(select ...)` stanzas
- Remove hard-coded knowledge of a few specific ppx rewriters to ease
maintenance moving forward
- Pass the library name to ppx rewriters via the `library-name` cookie
- Fix: make sure the action working directory exist before running it
1.0+beta7 (12/04/2017)
----------------------
- Make the output quieter by default and add a `--verbose` argument
(@stedolan, #40)
2017-05-06 01:52:46 +00:00
- Various documentation fixes (@adrieng, #41)
2017-05-06 01:52:46 +00:00
- Make `@install` the default target when no targets are specified
(@stedolan, #47)
2017-05-06 01:52:46 +00:00
- Add predefined support for menhir, similar to ocamlyacc support
(@rgrinberg, #42)
2017-05-06 01:52:46 +00:00
- Add internal support for sandboxing actions and sandbox the build of
the alias module with 4.02 to workaround the compiler trying to read
the cmi of the aliased modules
- Allow to disable dynlink support for libraries via `(no_dynlink)`
(#55)
- Add a -p/--for-release-of-packages command line argument to simplify
the jbuilder invocation in opam files and make it more future proof
(#52)
- Fix the lookup of the executable in `jbuilder exec foo`. Before,
even if `foo` was to be installed, the freshly built version wasn't
selected
- Don't generate a `exists_if ...` lines in META files. These are
useless sine the META files are auto-generated
1.0+beta6 (29/03/2017)
----------------------
- Add an `(executable ...)` stanza for single executables (#33)
- Add a `(package ...)` and `(public_name <name>)/(public_names
(<names))` to `executable/executables` stanzas to make it easier to
install executables (#33)
- Fix a bug when using specific rewriters that jbuilder knows about
without `ppx_driver.runner` (#37). These problem should go away
soon when we start using `--cookie`
- Fix the interpretation of META files when there is more than one
applicable assignment. Before this fix, the one with the lowest
number of formal predicates was selected instead of the one with the
biggest number of formal predicates
1.0+beta5 (22/03/2017)
----------------------
- When `ocamlfind` is present in the `PATH`, do not attempt to call
`opam config var lib`
- Make sure the build of jbuilder itself never calls `ocamlfind` or
`opam`
- Better error message when a jbuild file in OCaml syntax forgets to
call `Jbuild_plugin.V*.send`
- Added examples of use
- Don't drop inline tests/benchmarks by default
1.0+beta4 (20/03/2017)
----------------------
- Improve error messages about invalid/missing pkg.opam files
- Ignore all errors while running `ocamlfind printconf path`
1.0+beta3 (15/03/2017)
----------------------
- Print optional dependencies as optional in the output of `jbuilder
external-lib-deps --missing`
- Added a few forms to the DSL:
- `with-{stderr,outputs}-to`
- `ignore-{stdout,stderr,outputs}`
- Added `${null}` which expands to `/dev/null` on Unix and `NUL` on
Windows
- Improve the doc generated by `odoc` for wrapped libraries
- Improve the error reported when an installed package depends on a
library that is not installed
- Documented `(files_recursively_in ...)`
- Added black box tests
- Fix a bug where `jbuilder` would crash when there was no
`<package>.opam` file
- Fixed a bug where `.merlin` files where not generated at the root of
the workspace (#20)
- Fix a bug where a `(glob_files ...)` would cause other dependencies
to be ignored
- Fix the generated `ppx(...)` line in `META` files
- Fix `(optional)` when a ppx runtime dependency is not available
(#24)
- Do not crash when an installed package that we don't need has
missing dependencies (#25)
1.0+beta2 (10/03/2017)
----------------------
- Simplified the rules for finding the root of the workspace as the
old ones were often picking up the home directory. New rules are:
+ look for a `jbuild-workspace` file in parent directories
+ look for a `jbuild-workspace*` file in parent directories
+ use the current directory
- Fixed the expansion of `${ROOT}` in actions
- Install `quick-start.org` in the documentation directory
- Add a few more things in the log file to help debugging
1.0+beta1 (07/03/2017)
----------------------
- Added a manual
- Support incremental compilation
- Switched the CLI to cmdliner and added a `build` command (#5, @rgrinberg)
2017-05-06 01:52:46 +00:00
- Added a few commands:
+ `runtest`
+ `install`
+ `uninstall`
+ `installed-libraries`
+ `exec`: execute a command in an environment similar to what you
would get after `jbuilder install`
- Removed the `build-package` command in favor of a `--only-packages`
option that is common to all commands
- Automatically generate `.merlin` files (#2, @rdavison)
2017-05-06 01:52:46 +00:00
- Improve the output of jbuilder, in particular don't mangle the
output of commands when using `-j N` with `N > 1`
- Generate a log in `_build/log`
- Versioned the jbuild format and added a first stable version. You
should now put `(jbuilder_version 1)` in a `jbuild` file at the root
of your project to ensure forward compatibility
- Switch from `ppx_driver` to `ocaml-migrate-parsetree.driver`. In
order to use ppx rewriters with Jbuilder, they need to use
`ocaml-migrate-parsetree.driver`
- Added support for aliases (#7, @rgrinberg)
2017-05-06 01:52:46 +00:00
- Added support for compiling against multiple opam switch
simultaneously by writing a `jbuild-worspace` file
- Added support for OCaml 4.02.3
- Added support for architectures that don't have natdynlink
- Search the root according to the rules described in the manual
instead of always using the current directory
- extended the action language to support common actions without using
a shell:
+ `(with-stdout-to <file> <DSL>)`
+ `(copy <src> <dst>)`
+ ...
- Removed all implicit uses of bash or the system shell. Now one has
to write explicitly `(bash "...")` or `(system "...")`
2017-05-06 01:52:46 +00:00
- Generate meaningful versions in `META` files
- Strengthen the scope of a package. Jbuilder knows about package
`foo` only in the sub-tree starting from where `foo.opam` lives
0.1.alpha1 (04/12/2016)
-----------------------
First release