Dune Package Management Updates

Hello! The Tarides team is writing to share updates on Dune package management.

Context

Dune package management aims to improve some developer workflows by simplifying the use of opam dependencies in projects built with Dune. To learn more, see the tutorial, OCaml Package Management With Dune.

It’s been too long since we shared an update, especially considering our gratitude for all the excellent feedback we have received. But Dune contributors have been hard at work fixing issues and solving tricky architectural snags present in the previous iteration.

Available now

Thanks to many contributors, the following functionalities are available on Linux and MacOS in the latest release of Dune (3.22):

Additionally, the following supporting utilities are available:

Current status and focus

Thanks to several regular users in the community and usage in many of the CI systems we maintain, we are gathering ongoing feedback and exercising the core functionality. However, our testing has shown the features are not yet mature enough to recommend wider use, beyond eager and early adopters. Consequently, all the documentation warns that this functionality is experimental and subject to change.

We are currently focused on maturing package management beyond its experimental status. This requires reworking the developer tooling support, supporting packages that use symlinks, and ensuring we can dogfood Dune package management in its own development. The best place to look for what we have planned in this current phase is Non-experimental package management · Milestone #62 · ocaml/dune.

Next up

After maturing the core functionality, we will turn our focus to extending the supported platforms and improving ecosystem integration. This work will include adding support for Windows, improving cross-compilation, supporting advanced vendoring workflows, and integrating Dune package management into the opam-ci. More updates and more accessible planning will follow.

Input and contributions

Please reach out if you find this work interesting and would like to help!

Hello! We have just made our roadmap for dune package management available on the wiki for dune: Dune Pkg Roadmap · ocaml/dune Wiki · GitHub.

About the roadmap

This living document aims to set out and explain the current status and the planned trajectory of our ongoing work. It should help to convey both what what we are working on and why we think it is important. It is not heavy on technical details, but aims to give a high level view of the project trajectory. For technical details, please click thru to the tracking issues: they are are in varying stages of discovery, but some are very well developed or provide a view into the history of completed work on the milestone.

We will keep this document up to date and it will be revised as needed, to keep our projections in line with our emerging understanding, and to incorporate feedback and guidance from interested stakeholders.

Support for the relocatable compiler in dune package management is now available in dune 3.24

As you will see on the roadmap, a substantial course of work led by @Alizter, and supported by @ElectreAAS (among others), has made the relocatable compiler available by default in dune package management, building on even more substantial prior work by @dra27. This makes use of David’s overlay compiler packages to provide relocatability for previous recent compiler versions.

In my personal experience, this has made a decisive improvement in the the UX of setting up projects with dune package management, and came along with many additional fixes improving opam package compatibility.

As a very welcome bonus, dune package management now supports the installation of packages that use symlinks in their sources!

Input and contributions

Please feel free to share any input or raise any questions! Input can be shared in this thread, or through our documented channels for feedback.