See full changelog
Added
- Support for OCaml 4.13 (#330, @emillon)
Official stable release announcements and updates from the OCaml compiler, OCaml infrastructure and the OCaml Platform Tools.
Additions
On behalf of the dune-release team I'm pleased to announce that we're releasing dune-release.1.5.0.
It has been quite a while since the last release so there are numerous changes and improvements in this one, along with a lot of bug fixes.
The two main new features in 1.5.0 are:
undraft command that will undraft both and update the opam file's url.src field accordingly. We believe this feature will prove helpful to maintainers of tools such as dune which releases are often watched by distribution maintainers. Draft releases allow you to wait until you have opam-repository's CI approval to actually create a GH release that will notify anyone watching the repository.
This feature is still a bit experimental, we have ideas on how to improve it but we wanted to get a first version out to collect feedback on how it is used and what you folks expect from it.check command that you can run ahead of a release to know if dune-release has all the information it needs in the repository, along with running the lint, build and test checks it normally runs after building the tarball.
We're aware that it can be frustrating to see dune-release fail right in the middle of the release process. We're trying to improve this situation and this is a first step in that direction.You can see the full changelog here
You'll note we also deprecated a few features such as delegates (as we announced in this post), opam 1.x and the --user option and corresponding config file field.
This release is likely to be the last 1.x release of dune-release except for important bug fixes as we'll start working on 2.0 soon.
Our main goals for 2.0 are to make the experience for github users as seemless as possible. We want the tool to do the right thing for those users without them having to configure anything. Delegates got in the way there and that's why we're removing them. We do care about our non github users and we've worked on making it as configurable as possible so that you can integrate it in your release workflow. The situation should already have improved quite a bit with this release as we fixed several bugs for non github hosted repositories. We want to make sure that these users will be happy with dune-release 2.0 as well. Hopefully in the future dune-release will support other release workflows such as handling gitlab hosted repositories but we want to make sure our main user base is happy with the tool before adding this.
We'll communicate a bit more on our plans for 2.0 in the next few months. Our hope is that it will hit opam before the end of this year.
We hope that you'll like this new version and wish you all successful and happy releases!
--no-auto-open to the default command. It was previously only available for
dune-release opam. (#374, @NathanReb)config create subcommand to create a fresh configuration if you don't have one yet
(#373, @NathanReb)--local-repo, --remote-repo and --opam-repo options to the default command,
they used to be only available for the opam subcommand (#363, @NathanReb)--token option to dune-release publish and dune-release opam commands
to specify a github token. This allows dune-release to be called through a Github
Actions workflow and use the github token through an environment variable.
(#284 #368, @gpetiot @NathanReb)--include-submodules flag to dune-release, dune-release bistro or
dune-release distrib (#300, @NathanReb)--draft for dune-release publish and dune-release opam submit commands.
(#248, @gpetiot)check to check the prerequisites of dune-release and
avoid starting a release process that couldn't be finished (#318, #351, @pitag-ha)--set-upstream to ease any further
update of the PR (#350, @gpetiot)opam submit instead of
reading the user separately. The information was redundant and could only lead to bugs
when unproperly set. (#372, @NathanReb).gitignore, .gitattributes and other such files from the archive.
(#299, @NathanReb)dune-release must guess which URI to pass to git push and may guess it wrong.
This change allows users to push the tag manually to avoid using that code. (#219, @Julow).git/.hg files and folders from the distrib
tarball (#300, @NathanReb)synopsis instead of description (#291, @kit-ty-kate)--user CLI options and configuration field, they were redundant with
the remote-repo option and field and could be set unproperly, leading to bugs (#372, @NathanReb)dune-release publish (#276, #302, @pitag-ha)dune-release distrib, it was previously effectively ignored. Now
it is required to add a (name <name>) stanza to
dune-project. (#327, @lehy)opam submit would look up a config file, even though all the required
information was provided on the command line. This would lead to starting the interactive
config creation quizz if that file did not exist which made it impossible to use it in a CI
for instance. (#373, @NathanReb)opam submit would fail on non-github repositories if the user had no
configuration file (#372, @NathanReb)opam submit preventing non-github users to create the opam-repo PR
via dune-release. (#359, @NathanReb)opam submit would try to parse the custom URI provided through
--distrib-uri as a github repo URI instead of using the dev-repo (#358, @NathanReb)--distrib-uri option in dune-release opam pkg.
It used to have lower precedence than the url file written by dune-release publish
and therefore made it impossible to overwrite it if needed. (#255, @NathanReb)dune-release opam pkg where you would need
the regular dune-release generated archive to be around even though you specified
a custom distrib archive file. (#255, @NathanReb)url file before filling the url.src field. This fixes an issue that caused the url.src field to be a multi-line string instead of single line. (#270, @gpetiot).) at the
repository from the distrib archive (#298, @NathanReb)dune-release tag cannot guess the project name (#319, @lehy)dune-release distrib (#325, @lehy). Otherwise uncommitted changes to
dune-project would be silently ignored by dune-release distrib.publish: Fix the process of inferring user name and repo from the dev repo uri (#348, @pitag-ha)--force
was set or they are conf packagesDear all, on behalf of the Dune team I'm pleased to announce the release of Dune 2.9.0. This is the last release on the Dune 2.x series and could be considered a maintenance release as it mostly consists on bug fixes and miscellaneous tweaks and features for sites, instrumentation, and mdx support.
Add (enabled_if ...) to (mdx ...) (https://github.com/ocaml/dune/pull/4434, @emillon)
Add support for instrumentation dependencies (https://github.com/ocaml/dune/pull/4210, fixes https://github.com/ocaml/dune/issues/3983, @nojb)
Add the possibility to use locks with the cram tests stanza (https://github.com/ocaml/dune/pull/4480, @voodoos)
Allow to set up merlin in a variant of the default context (https://github.com/ocaml/dune/pull/4145, @TheLortex, @voodoos)
Add (package ...) to (mdx ...) (https://github.com/ocaml/dune/pull/4691, fixes https://github.com/ocaml/dune/issues/3756, @emillon)
Handle renaming of coq.kernel library to coq-core.kernel in Coq 8.14 (https://github.com/ocaml/dune/pull/4713, @proux01)
Fix generation of merlin configuration when using (include_subdirs unqualified) on Windows (https://github.com/ocaml/dune/pull/4745, @nojb)
Fix bug for the install of Coq native files when using (include_subdirs qualified)
(https://github.com/ocaml/dune/pull/4753, @ejgallego)
Allow users to specify install target directories for doc and
etc sections. We add new options --docdir and --etcdir to both
Dune's configure and dune install command. (https://github.com/ocaml/dune/pull/4744, fixes https://github.com/ocaml/dune/issues/4723,
@ejgallego, thanks to @JasonGross for reporting this issue)
Fix issue where Dune would ignore (env ... (coq (flags ...)))
declarations appearing in dune files (https://github.com/ocaml/dune/pull/4749, fixes https://github.com/ocaml/dune/issues/4566, @ejgallego @rgrinberg)
Disable some warnings on Coq 8.14 and (lang coq (>= 0.3)) due to
the rework of the Coq "native" compilation system (https://github.com/ocaml/dune/pull/4760, @ejgallego)
Fix a bug where instrumentation flags would be added even if the instrumentatation was disabled (@nojb, https://github.com/ocaml/dune/pull/4770)
Fix https://github.com/ocaml/dune/issues/4682: option -p takes now precedence on environement variable
DUNE_PROFILE (https://github.com/ocaml/dune/pull/4730, https://github.com/ocaml/dune/pull/4774, @bobot, reported by @dra27 https://github.com/ocaml/dune/issues/4632)
Fix installation with opam of package with dune sites. The .install file is
now produced by a local dune install during the build phase (https://github.com/ocaml/dune/pull/4730, https://github.com/ocaml/dune/pull/4645,
@bobot, reported by @kit-ty-kate https://github.com/ocaml/dune/issues/4198)
Fix multiple issues in the sites feature (https://github.com/ocaml/dune/pull/4730, https://github.com/ocaml/dune/pull/4645 @bobot, reported by @Lelio-Brun https://github.com/ocaml/dune/issues/4219, by @Kakadu https://github.com/ocaml/dune/issues/4325, by @toots https://github.com/ocaml/dune/issues/4415)
Add sub-errors as "related" information in diagnostics (#457)
Add support for navigating to a symbol inside a workspace (#398)
Show typed holes as errors
Merlin has a concept of "typed holes" that are syntactically represented as _. Files
that incorporate typed holes are not considered valid OCaml, but Merlin and OCaml-LSP
support them. One example when such typed holes can occur is when on "destructs" a value,
e.g., destructing (Some 1) will generate code match Some 1 with Some _ -> _ | None -> _. While the first underscore is a valid "match-all"/wildcard pattern, the rest of
underscores are typed holes.
.ocamlinit (@hyphenrf @copy #338)Emacs mode fixes:
utop-query-arguments always returns (utop-arguments) whether
it sets the utop-command or not (@dansanduleac #347)dune-gen subcommand that generates testing code for Dune to build
and run with the new mdx stanza. (#305, @voodoos)Switch verbosity from 1 to 0. This is the same default that merlin uses.
The old value for verbosity (#433)
Get fresh diagnostics (warning and error messages) on a file save (#438)
Note: If you want the fresh diagnostics to take into account changes in other
files, you likely need to rebuild your project. An easy way to get automatic
rebuilds is to run dune in a watching mode, e.g.,[dune build --watch].
On behalf of the ocaml-lsp team, I'd like to announce version 1.6.0 of ocaml-lsp-server. The highlight of this release is the updated version of merlin which brings lots of new bug fixes.
Fix interface/implementation switching on Windows (#427)
Correctly parse project paths with spaces and other special characters that must be escaped.
Print types with -short-paths even if the project wasn't built yet
workdir configuration value when using the
dune ocaml-merlin configuration provider the same as when using
dot-merlin-reader so that ppxes behaves in the same way as before
(#1284, fixes ocaml/dune#4479, discussion in #1292)_), allow correct typing of these
holes and add a new holes command that returns the locations of all
holes in the current file along with their types (#1242, #1289)MerlinNextHole and MerlinPreviousHole commands to navigate
between holes. Jump to the first hole after destruct (#1287, #1303)merlin-next-hole and merlin-previous-hole commands to
navigate holes. Jump to the first hole after calling destruct. (#1291)holes command and AST node (#1242, #1289)Oops, we went looking but didn't find the changelog for this release 🙈
let open with closing-on-separate-line (#1612, @Julow)bisect_ppx (#1550, @tmattio)ocamlformat-rpc and a new library ocamlformat-rpc-lib (#1586, @gpetiot, @voodoos)Support 4.12 and drop support for all earlier versions
Update to the latest version of merlin
Fixed absence of executable bit for installed .cmxs (#4149, fixes #4148, @bobot)
Fix a race in Dune cache. It was particularly easy to hit this race when using the cache on Windows (#4406, fixes #4167, @snowleopard)
Backport fixes from merlin (#382, #383)
Encode request & notification params in a list. This is required by the
spec. (#351)
Make patdiff show refined diffs (#4257, fixes #4254, @hakuch)
Fixed a bug that could result in needless recompilation under Windows due to
case differences in the result of Sys.getcwd (observed under emacs).
(#3966, @nojb).
Restore compatibility with Coq < 8.10 for coq-lang < 0.3 , document
that (using coq 0.3) does require Coq 8.10 at least (#4224, fixes
#4142, @ejgallego)
Add a META rule for compiler-libs.native-toplevel (#4175, @altgr)
No longer call chmod on symbolic links (fixes #4195, @dannywillems)
Have dune communicate the location of the standard library directory to
merlin (#4211, fixes #4188, @nojb)
Workaround incorrect exception raised by Unix.utimes (OCaml PR#8857) in
Path.touch on Windows. This fixes dune cache in direct mode on Windows.
(#4223, @dra27)
dune ocaml-merlin is now able to provide configuration for source files in
the _build directory. (#4274, @voodoos)
Automatically delete left-over Merlin files when rebuilding for the first time
a project previously built with Dune <= 2.7. (#4261, @voodoos, @aalekseyev)
Fix ppx.exe being compiled for the wrong target when cross-compiling
(#3751, fixes #3698, @toots)
dune top correctly escapes the generated toplevel directives, and make it
easier for dune top to locate C stubs associated to concerned libraries.
(#4242, fixes #4231, @nojb)
Do not pass include directories containing native objects when compiling bytecode (#4200, @nojb)
Fix crash when META file for compiler-libs.toplevel is present
(@jeremiedimino, #4249)
String.get and similar calls used to be automatically rewritten to their corresponding infix form .(), that was incorrect when using the -unsafe compilation flag. Now the concrete syntax of these calls is preserved.merlin_analysis and merlin_utils libraryWe 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 aenv_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