[opam-devel] opam 1.3 status

Louis Gesbert louis.gesbert at ocamlpro.com
Fri Dec 18 07:47:53 GMT 2015

This is a summary of what's going on for 1.3, for all those who were wondering.
This is not complete, and I may have forgotten stuff, don't hesitate to complete
and comment.

I think a more redacted version of this would have its place on the platform
blog, to show there is activity.

Note that I've also been busy helping out on the flambda compiler patch, which
explains that things have been a bit slower on opam lately, but I am getting
back on it full-time soon.

# Ongoing changes for 1.3

Lots has been going on, signature of the repository was the main goal for this
release but it was then decided to prioritise some architectural changes and
improvements and add signature on top of that for the release just after. So I
feel there is a need to clarify all that's going on and what to expect for

- Simplification of the ~/.opam architecture, store switch state in a single
  file (done, but more changes pending)

- Refactoring of file handling, for better error reporting, more reliable code
  and ease to extend (done)

- Much cleaner and flexible URL handling (including VC targets and specific
  transports) (done)

- Refactoring of OpamState, lots of simplification on state loading, pinned
  package handling. This should make it much easier to understand and maintain,
  and also much more efficient (ongoing)

- Compilers as packages and disappearance of the .comp files, through making the
  opam files much more generic. In practice, switch creation and compiler
  installation are now internally treated as two different operations (ongoing,
  most of it done but lacks a proper interface at the moment)

- Tracking of package installed files and reliable automatic removal (planned,
  but the hard part is done)

- Setup of package configuration variables (planned)

### Package definitions

- Inclusion of url and descr in the opam file format, to describe a package with
  a single file (done)

- Better definition of package variables, self-references (done)

- Support for "dev" dependencies (done)

- Allow packages to define environment variables, possibly depending on other
  variables or features (`setenv:` field) (done)

- Allow fields for use by external tools: `x-fieldname:` (done)

- Conflicts now consistently treated as disjunction (i.e. a formula that must
  not be true) (done)

- Add `extra-sources:` for packages needing more than a single archive (e.g.
  compiler packages) (planned)

- Allow to quote strings with pythonesque `"""` delimiters, for easier
  integration of package descriptions (done)

- Possibility to depend on the hash on an arbitrary file on the system and
  trigger reinstallation, e.g. to detect an updated system compiler (ongoing)

- New "canonical" and "format-preserving" printers, resp. for signing and
  batch-editing files (done)

### Other, smaller changes

- Ability to override switch default dirs using
  switch/config/global-config.config. `opam config set` command (done)

- Support (and doc) for many different external solvers besides aspcud (done)

- Json output including command logs that could be usedd to browse the status

- More flexibility for install, reinstall, upgrade commands when the package
  isn't in the expected state (already installed or not installed) (done)

There are also plans on easing cross-compilation and allowing operations across
switches which are well underway (in large part thanks to Pietro Abate's
efforts), but these are intended for the next minor release (e.g. 1.3.1).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.ocaml.org/pipermail/opam-devel/attachments/20151218/b9f56542/attachment.sig>

More information about the opam-devel mailing list