[ANN] opam 2.4.0~alpha1

Hi everyone,

We are happy to announce the first alpha release of opam 2.4.0.

This version is an alpha, we invite users to test it to spot previously unnoticed bugs as we head towards the stable release.

What’s new? Some highlights:

  • :dragon_face: On opam init the compiler chosen for the default switch will no longer be ocaml-system (#3509)
    This was done because the system compiler (as-is your ocaml installed system wide, e.g. /usr/bin/ocaml) is known to be under-tested and prone to a variety of bugs and configuration issues.
    Removing it from the default compiler allows new-comers a more smooth experience.
    Note: if you wish to use it anyway, you are always able to do it explicitly using opam init --compiler=ocaml-system

  • :camel: GNU patch and the diff command are no longer runtime dependencies. Instead the OCaml patch library is used (#6019, #6052, #3782, ocaml/setup-ocaml#933)
    Doing this we’ve removed some rarely used features of GNU Patch such as the support of Context diffs.
    The new implementation only supports Unified diffs including the git extended headers, however file permission changes via said extended headers have no effect.

  • :snowflake: Add Nix support for external dependencies (depexts) by adding support for stateless package managers (#5982). Thanks to @RyanGibb for this contribution

  • :cockroach: Fix opam install <local_dir> with and without options like --deps-only or --show-action having unexpected behaviours (#6248, #5567) such as:

    • reporting Nothing to do despite dependencies or package not being up-to-date
    • asking to install the wrong dependencies
  • :ocean: Many more UI additions and improvements, bug fixes, performance improvements, …

:open_book: You can read our blog post for more information about these changes and more, and for even more details you can take a look at the release note or the changelog.

Try it!

The upgrade instructions are unchanged:

For Unix systems

bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.4.0~alpha1"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.4.0~alpha1"

Please report any issues to the bug-tracker.

Happy hacking,
<> <> The opam team <> <> :camel:

22 Likes

I’ve written a small explainer of this at Opam's Nix system dependency mechanism and am happy to receive feedback on this mechanism!

4 Likes