Dune 1.11.0
On behalf of the dune team, I'm pleased to announce the release of dune 1.11.0. This release contains quite a few new interesting features such as custom dialects: anyone can define their own OCaml based syntax. Is anyone up to revive the revised syntax? :slight_smile: I'd also like to highlight the the re-launch of variants feature in a sounder form, a new build-info library that queries build information, and that dune init can initialize an entire project. But of course, by far the most important thing is that the compiler's colours are now back :champagne:
See full changelog
-
Don't select all local implementations in
dune utop. Instead, let the default implementation selection do its job. (#2327, fixes #2323, @TheLortex, review by @rgrinberg) -
Check that selected implementations (either by variants or default implementations) are indeed implementations. (#2328, @TheLortex, review by @rgrinberg)
-
Don't reserve the
Ppxtoplevel module name for ppx rewriters (#2242, @jeremiedimino) -
Redesign of the library variant feature according to the #2134 proposal. The set of variants is now computed when the virtual library is installed. Introducing a new
external_variantstanza. (#2169, fixes #2134, @TheLortex, review by @jeremiedimino) -
Add proper line directives when copying
.ccand.cxxsources (#2275, @rgrinberg) -
Fix error message for missing C++ sources. The
.ccextension was always ignored before. (#2275, @rgrinberg) -
Add
$ dune init projectsubcommand to create project boilerplate according to a common template. (#2185, fixes #159, @shonfeder) -
Allow to run inline tests in javascript with nodejs (#2266, @hhugo)
-
Build
ppx.exeas compiling host binary. (#2286, fixes #2252, @toots, review by @rgrinberg and @jeremiedimino) -
Add a
cinapsextension and stanza for better integration with the cinaps tool tool (#2269, @jeremiedimino) -
Allow to embed build info in executables such as version and list and version of statically linked libraries (#2224, @jeremiedimino)
-
Set version in
METAanddune-packagefiles to the one read from the vcs when no other version is available (#2224, @jeremiedimino) -
Add a variable
%{target}to be used in situations where the context requires at most one word, so%{targets}can be confusing; stdout redirections and "-o" arguments of various tools are the main use case; also, introduce a separate fieldtargetthat must be used instead oftargetsin those situations. (#2341, @aalekseyev) -
Fix dependency graph of wrapped_compat modules. Previously, the dependency on the user written entry module was omitted. (#2305, @rgrinberg)
-
Allow to promote executables built with an
executablestanza (#2379, @jeremiedimino) -
When instantiating an implementation with a variant, make sure it matches virtual library's list of known implementations. (#2361, fixes #2322, @TheLortex, review by @rgrinberg)
-
Add a variable
%{ignoring_promoted_rules}that istruewhen--ingore-promoted-rulesis passed on the command line and false otherwise (#2382, @jeremiedimino) -
Fix a bug in
future_syntaxwhere the characters@and&were not distinguished in the names of binding operators (let@was the same aslet&) (#2376, @aalekseyev, @jeremiedimino) -
Workspaces with non unique project names are now supported. (#2377, fix #2325, @rgrinberg)
-
Improve opam generation to include the
dunedependencies with the minimum constraint set based on the dune language version specified in thedune-projectfile. (2383, @avsm) -
The order of fields in the generated opam file now follows order preferred in opam-lib. (@avsm, #2380)
-
Fix coloring of error messages from the compiler (@jeremiedimino, #2384)
-
Add warning
66to default set of warnings starting for dune projects with language verison >=1.11(@rgrinberg, @jeremiedimino, fixes #2299) -
Add (dialect ...) stanza (@nojb, #2404)
-
Add a
--contextargument todune install/uninstall(@jeremiedimino, #2412) -
Do not warn about merlin files pre 1.9. This warning can only be disabled in 1.9 (#2421, fixes #2399, @emillon)
-
Add a new
inline_testsfield in the env stanza to control inline_tests framework with a variable (#2313, @mlasson, original idea by @jeremiedimino, review by @rgrinberg). -
New binary kind
jsfor executables in order to explicitly enable Javascript targets, and a switch(explicit_js_mode)to require this mode in order to declare JS targets corresponding to executables. (#1941, @nojb)