See full changelog
Changed
- Dropped OMP dependency and use handwritten compat layers instead (#317, @NathanReb)
Read the latest releases and updates from the OCaml compiler, OCaml infrastructure and the OCaml Platform Tools.
We are pleased to announce the minor release of opam 2.0.8.
This new version contains some backported fixes:
.
to PATH
. [#4078]ccache
versions. [#4079 and #4087]~/.cache
is a symlink. [#4068]opam init
. [#4020 & #4092]/tmp
read-write, regardless of TMPDIR
[#3742, addressing ocaml/opam-repository#13339]pre-
and post-session
hooks can now print to the console [#4359]opam-installer
now correctly builds from sources [#4173]arch
variable detection when using 32bit mode on ARM64 and i486 [#4462]A more complete release note is available.
Installation instructions (unchanged):
From binaries: run
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.0.8"
or download manually from the Github "Releases" page to your PATH. In this case, don't forget to run opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script.
From source, using opam:
opam update; opam install opam-devel
(then copy the opam binary to your PATH as explained, and don't forget to run opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script)
From source, manually: see the instructions in the README.
We hope you enjoy this new minor version, and remain open to bug reports and suggestions.
NOTE: this article is cross-posted on opam.ocaml.org and ocamlpro.com, and published in discuss.ocaml.org. Please head to the latter for the comments!
Fixed wrong workspace discovery from dune ocaml-merlin
(#4127, fixes #4125,
@voodoos)
Fixed memory blow up introduced in 2.8.0 (#4144, fixes #4134, @jeremiedimino)
Configurator: always link the C libraries in the build command (#4088, @MisterDA).
ocaml
, cram
, toplevel
or include
. (#237, @gpetiot)#require
directive errors (#276, @gpetiot)--root
and --prelude
are checked (#292, @gpetiot)create_process
instead of execvp
to call mdx-test
from mdx
. This fixes running mdx from dune on Windows (#299, @emillon)dune --version
printing n/a
rather than the versionOn behalf of the dune, I'm pleased to announce the release of dune 2.8.0. This release contains many bug fixes, performance improvements, and interesting new features. I'll point out two new features that I'm most excited about.
First is the experimental dune_site
extension that makes it possible to register and load plugins at runtime. This feature is quite involved, but we've documented it extensively in the manual.
Another cool feature is that we've eliminated the need for .merlin files and all the caveats that came with them. Now, merlin talks to dune directly to get precise configuration for every module. Say goodbye to all those "approximate .merlin file" warnings!
I encourage everyone to upgrade as soon as possible, as earlier versions are not compatible with OCaml 4.12. Happy Hacking.
dune rules
accepts aliases and other non-path rules (#4063, @mrmr1993)
Action (diff reference test_result)
now accept reference
to be absent and
in that case consider that the reference is empty. Then running dune promote
will create the reference file. (#3795, @bobot)
Ignore special files (BLK, CHR, FIFO, SOCKET), (#3570, fixes #3124, #3546, @ejgallego)
Experimental: Simplify loading of additional files (data or code) at runtime in programs by introducing specific installation sites. In particular it allow to define plugins to be installed in these sites. (#3104, #3794, fixes #1185, @bobot)
Move all temporary files created by dune to run actions to a single directory
and make sure that actions executed by dune also use this directory by setting
TMPDIR
(or TEMP
on Windows). (#3691, fixes #3422, @rgrinberg)
Fix bootstrap script with custom configuration. (#3757, fixes #3774, @marsam)
Add the executable
field to inline_tests
to customize the compilation
flags of the test runner executable (#3747, fixes #3679, @lubegasimon)
Add (enabled_if ...)
to (copy_files ...)
(#3756, @nojb)
Make sure Dune cleans up the status line before exiting (#3767, fixes #3737, @alan-j-hu)
Add {gitlab,bitbucket}
as options for defining project sources with source
stanza (source (<host> user/repo))
in the dune-project
file. (#3813,
@rgrinberg)
Fix generation of META
and dune-package
files when some targets (byte,
native, dynlink) are disabled. Previously, dune would generate all archives
for regardless of settings. (#3829, #4041, @rgrinberg)
Do not run ocamldep to for single module executables & libraries. The dependency graph for such artifacts is trivial (#3847, @rgrinberg)
Fix cram tests inside vendored directories not being interpreted correctly. (#3860, fixes #3843, @rgrinberg)
Add package
field to private libraries. This allows such libraries to be
installed and to be usable by other public libraries in the same project
(#3655, fixes #1017, @rgrinberg)
Fix the %{make}
variable on Windows by only checking for a gmake
binary
on UNIX-like systems as a unrelated gmake
binary might exist on Windows.
(#3853, @kit-ty-kate)
Fix $ dune install
modifying the build directory. This made the build
directory unusable when $ sudo dune install
modified permissions. (fix
#3857, @rgrinberg)
Fix handling of aliases given on the command line (using the @
and @@
syntax) so as to correctly handle relative paths. (#3874, fixes #3850, @nojb)
Allow link time code generation to be used in preprocessing executable. This makes it possible to use the build info module inside the preprocessor. (#3848, fix #3848, @rgrinberg)
Correctly call git ls-tree
so unicode files are not quoted, this fixes
problems with dune subst
in the presence of unicode files. Fixes #3219
(#3879, @ejgallego)
dune subst
now accepts common command-line arguments such as
--debug-backtraces
(#3878, @ejgallego)
dune describe
now also includes information about executables in addition to
that of libraries. (#3892, #3895, @nojb)
instrumentation backends can now receive arguments via (instrumentation (backend <name> <args>))
. (#3906, #3932, @nojb)
Tweak auto-formatting of dune
files to improve readability. (#3928, @nojb)
Add a switch argument to opam when context is not default. (#3951, @tmattio)
Avoid pager when running $ git diff
(#3912, @AltGr)
Add (root_module ..)
field to libraries & executables. This makes it
possible to use library dependencies shadowed by local modules (#3825,
@rgrinberg)
Allow (formatting ...)
field in (env ...)
stanza to set per-directory
formatting specification. (#3942, @nojb)
[coq] In coq.theory
, :standard
for the flags
field now uses the
flags set in env
profile flags (#3931 , @ejgallego @rgrinberg)
[coq] Add -q
flag to :standard
coqc
flags , fixes #3924, (#3931 , @ejgallego)
Add support for Coq's native compute compilation mode (@ejgallego, #3210)
Add a SUFFIX
directive in .merlin
files for each dialect with no
preprocessing, to let merlin know of additional file extensions (#3977,
@vouillon)
Stop promoting .merlin
files. Write per-stanza Merlin configurations in
binary form. Add a new subcommand dune ocaml-merlin
that Merlin can use to
query the configuration files. The allow_approximate_merlin
option is now
useless and deprecated. Dune now conflicts with merlin < 3.4.0
and
ocaml-lsp-server < 1.3.0
(#3554, @voodoos)
Configurator: fix a bug introduced in 2.6.0 where the configurator V1 API doesn't work at all when used outside of dune. (#4046, @aalekseyev)
Fix libexec
and libexec-private
variables. In cross-compilation settings,
they now point to the file in the host context. (#4058, fixes #4057,
@TheLortex)
When running $ dune subst
, use project metadata as a fallback when package
metadata is missing. We also generate a warning when (name ..)
is missing in
dune-project
files to avoid failures in production builds.
Remove support for passing -nodynlink
for executables. It was bypassed in
most cases and not correct in other cases in particular on arm32.
(#4085, fixes #4069, fixes #2527, @emillon)
Generate archive rules compatible with 4.12. Dune longer attempt to generate an archive file if it's unnecessary (#3973, fixes #3766, @rgrinberg)
Fix generated Merlin configurations when multiple preprocessors are defined for different modules in the same folder. (#4092, fixes #2596, #1212 and #3409, @voodoos)
Add the option use_standard_c_and_cxx_flags
to dune-project
that 1.
disables the unconditional use of the ocamlc_cflags
and ocamlc_cppflags
from ocamlc -config
in C compiler calls, these flags will be present in the
:standard
set instead; and 2. enables the detection of the C compiler family
and populates the :standard
set of flags with common default values when
building CXX stubs. (#3875, #3802, fix #3718 and #3528, @voodoos)
github
library, avoiding warning with deprecated authentication method--no-browser
to disable browser popupOn behalf of the ocaml-lsp team, it is my pleasure to announce version 1.4.0. This release introduces support for automatic signature help. Signature help is not yet present in all possible contexts. We intend to improve to support as many relevant language constructs as possible in the future. Many thanks to @mnxn for implementing this feature.
The full change log is replicated at the end of this post for your convenience.
Happy Holidays!
Support cancellation notifications when possible. (#323)
Implement signature help request for functions (#324)
Server LSP requests & notifications concurrently. Requests that require merlin are still serialized. (#330)
On behalf of the ocaml-lsp team, I’d like to announce version 1.3.0.
This release an improvement in keyword completion and a new code action. Keywords are now filtered by the context the user requested the completion, and there’s a new code action to quickly populate .mli files with the the inferred types from the .ml file.
Code action to insert inferred module interface (#308)
Filter keywords by context (#307)
On behalf of the ocaml-lsp team, I’d like to announce version 1.2.0.
This version contains many bug fixes and some performance improvements A couple of interesting features made it in as well:
Add keyword completion
Add go to declaration functionality to jump to a value's specification in a .mli file (#294)
#245: correctly use mutexes on OpenBSD (#264)
#268: Do not use vendored libraries when building the lsp package (#260)
#271: Clear diagnostics when files are closed
Disable non-prefix completion. There's no reliably way to trigger it and it can be slow.
if%ext
with if-then-else=keyword-first
(#1419, #1543, @gpetiot)match
and try
keywords (#1458, @gpetiot)ocamlformat.el
for submission to MELPA (#1476, #1495, @bcc32)
ocamlformat.el
(#1474, @bcc32)ocamlformat.el
buffer replacement for MacOS Emacs (#1481, @juxd)function
match (#1498, @gpetiot)open%ext M
will not get rewritten to [%%ext open M]
.Additions
Initial Release
dot-merlin-reader
with a binary that reads
.merlin
files. (#1123, #1152)configurator: More flexible probing of #define
. We allow duplicate values in
the object file, as long as they are the same after parsing. (#3739, fixes
#3736, @rgrinberg)
Record instrumentation backends in dune-package files. This makes it possible to use instrumentation backends defined in installed libraries (eg via OPAM). (#3735, @nojb)
Add missing .aux
& .glob
targets to coq rules (#3721, fixes #3437,
@rgrinberg)
Fix dune-package
installation when META templates are present (#3743, fixes
#3746, @rgrinberg)
Resolve symlinks before running $ git diff
(#3750, fixes #3740, @rgrinberg)
Cram tests: when checking that all test directories contain a run.t
file,
skip empty directories. These can be left around by git. (#3753, @emillon)
Oops, we went looking but didn't find the changelog for this release 🙈
On behalf of the dune team, I'm pleased to announce the release of dune 2.7.0. This release adds a couple of important features and many bug fixes. I'll just briefly summarize the two features, and let our improved documentation elaborate on the details.
The first one is first class support for instrumentation tools such as bisect_ppx and landmarks. This is one of the most requested dune features ever, and we're pleased to show you all what we've come up with
Special thanks to @stephanieyou & @nojb for implementing this feature. Many thanks to @aantron for tirelessly iterating on the end user experience with us.
While the features is looking quite good already, we consider it a "first take" on this subject. We welcome your experience reports and feature requests.
The second feature we're introducing this release is dune's cram testing framework. The cram framework is our secret weapon for making dune (relatively) bug free. I'll soon write up a dedicated post to give you a flavour of how it works. To those who can't wait, there's a new section in the documentation that explains everything.
As always, the change log is replicated below for your convenience.
Happy Hacking.
Write intermediate files in a .mdx
folder for each mdx
stanza
to prevent the corresponding actions to be executed as part of the @all
alias (#3659, @NathanReb)
Read Coq flags from env
(#3547 , fixes #3486, @gares)
Allow bisect_ppx to be enabled/disabled via dune-workspace. (#3404, @stephanieyou)
Formatting of dune files is now done in the executing dune process instead of in a separate process. (#3536, @nojb)
Add a --debug-artifact-substution
flag to help debug problem with
version not being captured by dune-build-info
(#3589,
@jeremiedimino)
Allow the use of the context_name
variable in the enabled_if
fields of
executable(s) and install stanzas. (#3568, fixes #3566, @voodoos)
Fix compatibility with OCaml 4.12.0 when compiling empty archives; no .a file is generated. (#3576, @dra27)
$ dune utop
no longer tries to load optional libraries that are unavailable
(#3612, fixes #3188, @anuragsoni)
Fix dune-build-info on 4.10.0+flambda (#3599, @emillon, @jeremiedimino).
Allow multiple libraries with inline_tests
to be defined in the same
directory (#3621, @rgrinberg)
Run exit hooks in jsoo separate compilation mode (#3626, fixes #3622, @rgrinberg)
Add (alias ...), (mode ...) fields to (copy_fields ...) stanza (#3631, @nojb)
(copy_files ...) now supports copying files from outside the workspace using absolute file names (#3639, @nojb)
Dune does not use ocamlc
as an intermediary to call C compiler anymore.
Configuration flags ocamlc_cflags
and ocamlc_cppflags
are always prepended
to the compiler arguments. (#3565, fixes #3346, @voodoos)
Revert the build optimization in #2268. This optimization slows down building
individual executables when they're part of an executables
stanza group
(#3644, @rgrinberg)
Use {dev}
rather than {pinned}
in the generated .opam
file. (#3647,
@kit-ty-kate)
Insert correct extension name when editing dune-project
files. Previously,
dune would just insert the stanza name. (#3649, fixes #3624, @rgrinberg)
Fix crash when evaluating an mdx
stanza that depends on unavailable
packages. (#3650, @CraigFe)
Fix typo in cache-check-probablity
field in dune config files. This field
now requires 2.7 as it wasn't usable before this version. (#3652, @edwintorok)
Add "odoc" {with-doc}
to the dependencies in the generated .opam
files.
(#3667, @kit-ty-kate)
Do not allow user actions to capture dune's stdin (#3677, fixes #3672, @rgrinberg)
(subdir ...)
stanzas can now appear in dune files used via (include ...)
.
(#3676, @nojb)
{i blah}
in docstrings (#1346, @jberdine)#**#
or #**.
where **
can be 0 or more operator chars are considered getter operators and are not surrounded by spaces, as opposed to regular infix operators (#1376, @gpetiot)function
body of a fun
(#1343, @jberdine)*compilation*
buffer on successful reformat (#1350, @jberdine)wrap-comments=false
and ocp-indent-compat=true
are set to avoid interfering with ocp-indent indentation. (#1352, @gpetiot)[]{}
must not be escaped in the arguments of @raise
, @author
, @version
and others.(* *)
, (** *)
and (*$ *)
(#1407, @gpetiot)<!-- $MDX labels -->
, where labels
is a list of valid
labels separated by a comma. This line has to immediately precede the block
it is attached to. The legacy syntax is preserved and will be deprecated in a
later release..mli
files' doc comments (#206, @jsomers)env_and_file "a:f"
associates f
to the environment named a
env_and_file " :f"
associates f
to the default environmentenv_and_file "f"
associates f
to all environments.mdx-error
code block
following the ocaml block instead of crashing the mdx process. Those mdx-error
blocks
are recognized and checked by mdx and can be intentionally used to show case specific
compile errors. (#238, @gpetiot)(* $MDX part-... *)
delimiters (#250, @gpetiot)set-
and unset-
labels (#257, @shonfeder)dune-release config
subcommand to display and edit the global
configuration (#220, @NathanReb).delegate-info
to print information needed by external
release scripts (#221, @pitag-ha)x-commit-hash
field to the opam file when releasing (#224, @gpetiot)tag
: improve error and log messages by comparing the provided
commit with the commit correspondent to the provided tag (#226, @pitag-ha)dune-release
(#231, @pitag-ha)dune-release distrib
does not fail when opam's doc
field
is missing. Do not try to generate nor publish the documentation when opam's
doc
field is missing. (#235, @gpetiot)publish
logs (#171, @hannesm)git
command used in publish doc
should check DUNE_RELEASE_GIT
(even
if deprecated) before PATH
. (#242, @gpetiot)log
subcommand (#196, @gpetiot)Fix crash when caching is enabled (@rgrinberg, #3581, fixes #3580)
Do not use -output-complete-exe
until 4.10.1 as it is broken in
4.10.0 (@jeremiedimino, #3187)
Fix crash when an unknown pform is found (such as %{unknown}
) (#3560,
@emillon)
Improve error message when invalid package names (such as the empty string)
are passed to dune build -p
. (#3561, @emillon)
Fix a stack overflow when displaying large outputs (including diffs) (#3537, fixes #2767, #3490, @emillon)
Pass -g
when compiling ppx preprocessors (#3671, @rgrinberg)
Additions
-
(#1142)Locate_type
) (#1067)Fix a bug where valid lib names in dune init exec --libs=lib1,lib2
results in an error. (#3444, fix #3443, @bikallem)
Add and enabled_ if
field to the install
stanza. Enforce the same variable
restrictions for enabled_if
fields in the executable
and install
stanzas
than in the library
stanza. When using dune lang < 2.6, the usage of
forbidden variables in executables stanzas with only trigger a warning to
maintain compatibility. (#3408 and #3496, fixes #3354, @voodoos)
Insert a constraint one the version of dune when the user explicitly
specify the dependency on dune in the dune-project
file (#3434 ,
fixes #3427, @diml)
Generate correct META files for sub-libraries (of the form lib.foo
) that
contain .js runtime files. (#3445, @hhugo)
Add a (no-infer ...)
action that prevents inference of targets and
dependencies in actions. (#3456, fixes #2006, @roddyyaga)
Correctly infer targets for the diff?
action. (#3457, fixes #2990, @greedy)
Fix $ dune print-rules
crashing (#3459, fixes #3440, @rgrinberg)
Simplify js_of_ocaml rules using js_of_ocaml.3.6 (#3375, @hhugo)
Add a new ocaml-merlin
subcommand that can be used by Merlin to get
configuration directly from dune instead of using .merlin
files. (#3395,
@voodoos)
Remove experimental variants feature and make default implementations part of the language (#3491, fixes #3483, @rgrinberg)
doc-comments-val
option with doc-comments
. The placement of documentation comments on val
and external
items is now controled by doc-comments
.
doc-comments=after
becomes doc-comments=after-when-possible
to take into account the technical limitations of ocamlformat;doc-comments=before
is unchanged;doc-comments-val
is now replaced with doc-comments
.
To reproduce the former behaviors
doc-comments=before
+ doc-comments-val=before
: now use doc-comments=before
;doc-comments=before
+ doc-comments-val=after
: now use doc-comments=before-except-val
;doc-comments=after
+ doc-comments-val=before
: this behavior did not make much sense and is not available anymore;doc-comments=after
+ doc-comments-val=after
: now use doc-comments=after-when-possible
.
(#1358, @jberdine, @Julow, @gpetiot).
This reverts changes introduced in 0.14.1 (#1335) and 0.14.0 (#1012).#edit_mode_vi
and #edit_mode_default
mode to set the editing mode(@kandu)#use_output
directive (@diml, #313)We are pleased to announce the minor release of opam 2.0.7.
This new version contains backported small fixes:
Installation instructions (unchanged):
From binaries: run
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.0.7"
or download manually from the Github "Releases" page to your PATH. In this case, don't forget to run opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script.
From source, using opam:
opam update; opam install opam-devel
(then copy the opam binary to your PATH as explained, and don't forget to run opam init --reinit -ni
to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script)
From source, manually: see the instructions in the README.
We hope you enjoy this new minor version, and remain open to bug reports and suggestions.
NOTE: this article is cross-posted on opam.ocaml.org and ocamlpro.com. Please head to the latter for the comments!
[coq] Fix install .v files for Coq theories (#3384, @lthms)
[coq] Fix install path for theory names with level greater than 1 (#3358, @ejgallego)
Fix a bug introduced in 2.0.0 where the [locks] field in rules with no targets had no effect. (@aalekseyev, report by @craigfe)
doc-comments
is changed to after
(#1335, @Julow).
This reverts a change introduced in 0.14.0 (#1012).doc-comments
option (#1331, @Julow).
This reverts a change introduced in 0.14.0 (#1293).The dune team is pleased to announce the release of dune 2.5.0. This release has been brewing for a while and contains a few interesting features. I'll highlight some of the bigger ones:
The coq support has been thoroughly extended. There's now support for both composition of coq libraries in the same workspace and extraction of coq code to OCaml.
There's a new $ dune upgrade
subcommand to help you upgrade dune files from 1.x to 2.x
$ dune utop
will now load ppx preprocessors to the toplevel. Ppx authors might enjoy this style of interactive development.
There's a new (subdir ..)
stanza that can be used to evaluate stanzas in sub directories. This makes it possible to have a single dune file for an entire project (generated or not).
I'd like to thank everyone who contributed to dune 2.5.0. Your help is greatly appreciated.
Add a --release
option meaning the same as -p
but without the
package filtering. This is useful for custom dune
invocation in opam
files where we don't want -p
(#3260, @jeremiedimino)
Fix a bug introduced in 2.4.0 causing .bc
programs to be built
with -custom
by default (#3269, fixes #3262, @jeremiedimino)
Allow contexts to be defined with local switches in workspace files (#3265, fix #3264, @rgrinberg)
Delay expansion errors until the rule is used to build something (#3261, fix #3252, @rgrinberg, @jeremiedimino)
[coq] Support for theory dependencies and compositional builds using
new field (theories ...)
(#2053, @ejgallego, @rgrinberg)
From now on, each version of a syntax extension must be explicitely tied to a
minimum version of the dune language. Inconsistent versions in a
dune-project
will trigger a warning for version <=2.4 and an error for
versions >2.4 of the dune language. (#3270, fixes #2957, @voodoos)
[coq] Bump coq lang version to 0.2. New coq features presented this release require this version of the coq lang. (#3283, @ejgallego)
Prevent installation of public executables disabled using the enabled_if
field.
Installation will now simply skip such executables instead of raising an
error. (#3195, @voodoos)
dune upgrade
will now try to upgrade projects using versions <2.0 to version
2.0 of the dune language. (#3174, @voodoos)
Add a top
command to integrate dune with any toplevel, not just
utop. It is meant to be used with the new #use_output
directive of
OCaml 4.11 (#2952, @mbernat, @jeremiedimino)
Allow per-package version
in generated opam
files (#3287, @toots)
[coq] Introduce the coq.extraction
stanza. It can be used to extract OCaml
sources (#3299, fixes #2178, @rgrinberg)
Load ppx rewriters in dune utop and add pps field to toplevel stanza. Ppx extensions will now be usable in the toplevel (#3266, fixes #346, @stephanieyou)
Add a (subdir ..)
stanza to allow evaluating stanzas in sub directories.
(#3268, @rgrinberg)
Fix a bug preventing one from running inline tests in multiple modes (#3352, @jeremiedimino)
Allow the use of the %{profile}
variable in the enabled_if
field of the
library stanza. (#3344, @mrmr1993)
Allow the use of %{ocaml_version}
variable in enabled_if
field of the
library stanza. (#3339, @voodoos)
Fix dune build freezing on MacOS when cache is enabled. (#3249, fixes ##2973, @artempyanykh)
--format-invalid-files
to print unparsable parts of the input as verbatim text. This feature is still experimental. (#1026, @gpetiot)module M = functor (K : S) -> struct end
and module M (K : S) = struct end
would be formatted as the latter, the original syntax is now preserved.doc-comments-val=before|after
(#1012, @Julow).
This option set the placement of documentation comment on val
and external
only.
It is set to after
by default.doc-comments
is changed from after
to before
(#1012, #1325, @Julow).
This affects both conventional
(default) and ocamlformat
profiles.doc-comments
(#1293, #1012).
This option depends on a flawed heuristic.
It is replaced by doc-comments-val
for val
and external
declarations.
There is no equivalent to this option in the general case.escape-chars
, escape-strings
and extension-sugar
(#1293).
These options are rarely used and their default behavior is considered to be the right behavior.row_field
attributes and the label or arguments, to be
consistent with the non-polymorphic case. (#1299, @CraigFe)let open
(#1229, @Julow).
eg. M.f (M.(x) [@attr])
would be formatted to M.f M.(x) [@attr]
, which would crash OCamlformat[%ext (() [@attr])]
or the structure item (() [@attr]) ;;
let _ = ...
constructs (#1244, @emillon)(x >>= fun y -> y (* A *))
would be droppedmodule M = (val x : S (* A *))
[%a:]
(#1236, @emillon){< >}
(#1238, @emillon)(a.x <- b) [@a]
(#1284, @CraigFe)(a <- b) [@a]
(#1288, @CraigFe)(a.(b)) [@a]
(#1300, @CraigFe)(a; b) [@a]
(#1291, @CraigFe){foo : < .. > [@a]}
and { foo : < .. > }
(#1296, @CraigFe)f ((0, 0) [@a])
would be formatted to f (0, 0) [@a]
, crashing OCamlformat.>]
when an object type is contained in an extension point or attribute payload (#1298, @CraigFe)(0).*(0)
(#1304, @Julow).
It was formatting to 0.*(0)
which parses as an other expression.(**)
would be formatted to (***)
.class
(#1289, @emillon)let f ?a:(A) = ()
rather than the unparsable let f ?a:A = ()
(#1305, @CraigFe)On behalf of the dune team, I'm pleased to announce the release of dune 2.4.0. This releases features support for mdx, an interesting take on the notebook paradigm by the RWO team. This release also includes a crucial fix to polling mode which makes it usable in environments with finite memory :slight_smile:.
Happy hacking!
Add mdx
extension and stanza version 0.1 (#3094, @NathanReb)
Allow to make Odoc warnings fatal. This is configured from the (env ...)
stanza. (#3029, @Julow)
Fix separate compilation of JS when findlib is not installed. (#3177, @nojb)
Add a dune describe
command to obtain the topology of a dune workspace, for
projects such as ROTOR. (#3128, @jeremiedimino)
Add plugin
linking mode for executables and the (embed_in_plugin_libraries ...)
field. (#3141, @nojb)
Add an %{ext_plugin}
variable (#3141, @nojb)
Dune will no longer build shared objects for stubs if
supports_shared_libraries
is false (#3225, fixes #3222, @rgrinberg)
Fix a memory leak in the file-watching mode (dune build -w
)
(#3220, @snowleopard and @aalekseyev)
Fix versioning of artifact variables (eg %{cmxa:...}), which were introduced in 2.0, not 1.11. (#3149, @nojb)
Fix a bug introduced in 2.3.0 where dune insists on using fswatch
on linux
(even when inotifywait
is available). (#3162, @aalekseyev)
Fix a bug causing all executables to be considered as optional (#3163, @diml)
--duniverse-mode
to ocaml-mdx rule
so that the generated rules work
within a duniversefile
label. (#203, #207, @voodoos)--non-deterministic
option through the MDX_RUN_NON_DETERMINISTIC
env variables (#208, @NathanReb)--syntax
is not set, and add 'markdown' as an alias to 'normal' (#222, @gpetiot)ocaml-mdx deps
command to be used by dune to compute file and dir dependencies of an
mdx file. (#217, @voodoos)INSIDE_DUNE
when executing shell commands by default (#224, @NathanReb)ocaml-mdx test
to crash on some include
in toplevel code blocks
(#202, @trefis)direction
option, only synchronize from .ml to .md files (#214, @gpetiot)On behalf of the dune team, I'm proud to announce the 2.3.0 release of dune. This release is particularly relevant for users of coq that use dune to build their theories, developers of coq that use dune to build their favorite theorem prover. I'd like to thank @ejgallego for all the hard work to improve dune in this regard.
I'd also like to point out the (strict_package_deps)
option that is now available in project files. This option will now ask dune to validate the package dependencies specified in the package
stanzas in your dune-project files.
Here's the full change list, and as always, happy hacking!
Improve validation and error handling of arguments to dune init
(#3103, fixes
#3046, @shonfeder)
dune init exec NAME
now uses the NAME
argument for private modules (#3103,
fixes #3088, @shonfeder)
Avoid linear walk to detect children, this should greatly improve performance when a target has a large number of dependencies (#2959, @ejgallego, @aalekseyev, @Armael)
[coq] Add (boot)
option to (coq.theories)
to enable bootstrap of
Coq's stdlib (#3096, @ejgallego)
[coq] Deprecate public_name
field in favour of package
(#2087, @ejgallego)
Better error reporting for "data only" and "vendored" dirs. Using these with
anything else than a strict subdirectory or *
will raise an error. The
previous behavior was to just do nothing (#3056, fixes #3019, @voodoos)
Fix bootstrap on bytecode only switches on windows or where -j1
is set.
(#3112, @xclerc, @rgrinberg)
Allow enabled_if
fields in executable(s)
stanzas (#3137, fixes #1690
@voodoos)
Do not fail if ocamldep
, ocamlmklib
, or ocaml
are absent. Wait for them
to be used to fail (#3138, @rgrinberg)
Introduce a strict_package_deps
mode that verifies that dependencies between
packages in the workspace are specified correctly. (@rgrinberg, #3117)
Make sure the @all
alias is defined when no dune
file is present
in a directory (#2946, fix #2927, @jeremiedimino)
dune test
is now a command alias for dune runtest
. This is to make the CLI
less idiosyncratic (#3006, @shonfeder)
Allow to set menhir flags in the env
stanza using the menhir_flags
field.
(#2960, fix #2924, @bschommer)
By default, do not show the full command line of commands executed
by dune
when dune
is executed inside dune
. This is to make
integration tests more reproducible (#3042, @diml)
dune subst
now works even without opam files (#2955, fixes #2910,
@fangyi-zhou and @diml)
Hint when trying to execute an executable defined in the current directory
without using the ./
prefix (#3041, fixes #1094, @voodoos).
Extend the list of modifiers that can be nested under
with-accepted-exit-codes
with chdir
, setenv
, ignore-<outputs>
,
with-stdin-from
and with-<outputs>-to
(#3027, fixes #3014, @voodoos)
It is now an error to have a preprocessing dependency on a ppx rewriter
library that is not marked as (kind ppx_rewriter)
(#3039, @snowleopard).
Fix permissions of files promoted to the source tree when using the shared cache. In particular, make them writable by the user (#3043, fixes #3026, @diml)
Only detect internal OCaml tools with .opt
extensions. Previously, this
detection applied to other binaries as well (@kit-ty-kate, @rgrinberg, #3051).
Give the user a proper error message when they try to promote into a source directory that doesn't exist. (#3073, fix #3069, @rgrinberg)
Correctly build vendored packages in -p
mode. These packages were
incorrectly filtered out before. (#3075, @diml)
Do not install vendored packages (#3074, @diml)
make
now prints a message explaining the main targets available
(#3085, fix #3078, @diml)
Add a byte_complete
executable mode to build programs as
self-contained bytecode programs
(#3076, fixes #1519, @diml)
Additions
Bugs fixed
--margin-check
to emit a warning if the formatted output exceeds the margin (#1110, @gpetiot)wrap-comments
is unset (#1138, #1159, @Julow)ocamlformat_reason
(#254, #1185, @emillon).
This tool has never been released to opam, has no known users, and overlaps
with what refmt
can do.ocamlformat-diff
(#1205, @gpetiot).
This tool has never been released to opam, has no known users, and overlaps
with what merge-fmt
can do.break-cases=fit
(#1167, @Julow).
This also fixes an unstable comment bug in or-patternsversion-check
(#1135, @Wilfred)break-separators=after-and-docked
(#1130, @gretay-js)