OCaml Changelog

RSS

Read the latest releases and updates from the OCaml ecosystem.

We are proud to announce that OPAM 1.1.1 has just been released.

This minor release features mostly stability and UI/doc improvements over OPAM 1.1.0, but also focuses on improving the API and tools to be a better base for the platform (functions for opam-doc, interface with tools like opamfu and opam-installer). Lots of bigger changes are in the works, and will be merged progressively after this release.

Installing

Installation instructions are available on the wiki.

Note that some packages may take a few days until they get out of the pipeline. If you're eager to get 1.1.1, either use our binary installer or compile from source.

The 'official' package repository is now hosted at opam.ocaml.org, synchronised with the Git repository at http://github.com/ocaml/opam-repository, where you can contribute new packages descriptions. Those are under a CC0 license, a.k.a. public domain, to ensure they will always belong to the community.

Thanks to all of you who have helped build this repository and made OPAM such a success.

See full changelog

From the changelog:

  • Fix opam-admin make <packages> -r (#990)
  • Explicitly prettyprint list of lists, to fix opam-admin depexts (#997)
  • Tell the user which fields is invalid in a configuration file (#1016)
  • Add OpamSolver.empty_universe for flexible universe instantiation (#1033)
  • Add OpamFormula.eval_relop and OpamFormula.check_relop (#1042)
  • Change OpamCompiler.compare to match Pervasives.compare (#1042)
  • Add OpamCompiler.eval_relop (#1042)
  • Add OpamPackage.Name.compare (#1046)
  • Add types version_constraint and version_formula to OpamFormula (#1046)
  • Clearer command aliases. Made info an alias for show and added the alias uninstall (#944)
  • Fixed opam init --root=<relative path> (#1047)
  • Display OS constraints in opam info (#1052)
  • Add a new 'opam-installer' script to make .install files usable outside of opam (#1026)
  • Add a --resolve option to opam-admin make that builds just the archives you need for a specific installation (#1031)
  • Fixed handling of spaces in filenames in internal files (#1014)
  • Replace calls to which by a more portable call (#1061)
  • Fixed generation of the init scripts in some cases (#1011)
  • Better reports on package patch errors (#987, #988)
  • More accurate warnings for unknown package dependencies (#1079)
  • Added opam config report to help with bug reports (#1034)
  • Do not reinstall dev packages with opam upgrade <pkg> (#1001)
  • Be more careful with opam init to a non-empty root directory (#974)
  • Cleanup build-dir after successful compiler installation to save on space (#1006)
  • Improved OSX compatibility in the external solver tools (#1074)
  • Fixed messages printed on update that were plain wrong (#1030)
  • Improved detection of meaningful changes from upstream packages to trigger recompilation

After a while staged as RC, we are proud to announce the final release of OPAM 1.1.0!

Thanks again to those who have helped testing and fixing the last few issues.

Important note

The repository format has been improved with incompatible new features; to account for this, the new repository is now hosted at [opam.ocaml.org][], and the legacy repository at [opam.ocamlpro.com][] is kept to support OPAM 1.0 installations, but is unlikely to benefit from many package updates. Migration to [opam.ocaml.org][] will be done automatically as soon as you upgrade your OPAM version.

You're still free, of course, to use any third-party repositories instead or in addition.

Installing

NOTE: When switching from 1.0, the internal state will need to be upgraded. THIS PROCESS CANNOT BE REVERTED. We have tried hard to make it fault- resistant, but failures might happen. In case you have precious data in your ~/.opam folder, it is advised to backup that folder before you upgrade to 1.1.0.

Using the binary installer:

  • download and run http://www.ocamlpro.com/pub/opam_installer.sh

Using the .deb packages from Anil's PPA (binaries are [currently syncing][1]): add-apt-repository ppa:avsm/ppa apt-get update sudo apt-get install opam

For OSX users, the homebrew package will be updated shortly.

or build it from sources at :

  • http://www.ocamlpro.com/pub/opam-full-1.1.0.tar.gz
  • https://github.com/ocaml/opam/releases/tag/1.1.0

For those who haven't been paying attention

OPAM is a source-based package manager for OCaml. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow. OPAM is edited and maintained by OCamlPro, with continuous support from OCamlLabs and the community at large (including its main industrial users such as Jane-Street and Citrix).

The 'official' package repository is now hosted at [opam.ocaml.org][], synchronised with the Git repository at [http://github.com/ocaml/opam-repository][repo], where you can contribute new packages descriptions. Those are under a CC0 license, a.k.a. public domain, to ensure they will always belong to the community.

Thanks to all of you who have helped build this repository and made OPAM such a success.

See full changelog

Too many to list here, see https://raw.github.com/OCamlPro/opam/1.1.0/CHANGES

For packagers, some new fields have appeared in the OPAM description format:

  • depexts provides facilities for dealing with system (non ocaml) dependencies
  • messages, post-messages can be used to notify the user eg. of licensing information, or help her troobleshoot at package installation.
  • available supersedes ocaml-version and os constraints, and can contain more expressive formulas

Also, we have integrated the main package repository with Travis, which will help us to improve the quality of contributions (see Anil's post).

OPAM 1.1.0 is ready, and we are shipping a release candidate for packagers and all interested to try it out.

This version features several bug-fixes over the September beta release, and quite a few stability and usability improvements. Thanks to all beta-testers who have taken the time to file reports, and helped a lot tackling the remaining issues.

Repository change to opam.ocaml.org

This release is synchronized with the migration of the main repository from ocamlpro.com to ocaml.org. A redirection has been put in place, so that all up-to-date installation of OPAM should be redirected seamlessly. OPAM 1.0 instances will stay on the old repository, so that they won't be broken by incompatible package updates.

We are very happy to see the impressive amount of contributions to the OPAM repository, and this change, together with the licensing of all metadata under CC0 (almost pubic domain), guarantees that these efforts belong to the community.

If you are upgrading from 1.0

The internal state will need to be upgraded at the first run of OPAM 1.1.0. THIS PROCESS CANNOT BE REVERTED. We have tried hard to make it fault- resistant, but failures might happen. In case you have precious data in your ~/.opam folder, it is advised to backup that folder before you upgrade to 1.1.0.

Installing

Using the binary installer:

  • download and run http://www.ocamlpro.com/pub/opam_installer.sh

You can also get the new version either from Anil's unstable PPA: add-apt-repository ppa:avsm/ppa-testing apt-get update sudo apt-get install opam

or build it from sources at :

  • http://www.ocamlpro.com/pub/opam-full-1.1.0.tar.gz
  • https://github.com/OCamlPro/opam/releases/tag/1.1.0-RC
See full changelog

Too many to list here, see https://raw.github.com/OCamlPro/opam/1.1.0-RC/CHANGES

For packagers, some new fields have appeared in the OPAM description format:

  • depexts provides facilities for dealing with system (non ocaml) dependencies
  • messages, post-messages can be used to notify the user or help her troubleshoot at package installation.
  • available supersedes ocaml-version and os constraints, and can contain more expressive formulas

We are very happy to announce the beta release of OPAM version 1.1.0!

OPAM is a source-based package manager for OCaml. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow which. OPAM is edited and maintained by OCamlPro, with continuous support from OCamlLabs and the community at large (including its main industrial users such as Jane-Street and Citrix).

Since its first official release last March, we have fixed many bugs and added lots of new features and stability improvements. New features go from more metadata to the package and compiler descriptions, to improved package pin workflow, through a much faster update algorithm. The full changeset is included below.

We are also delighted to see the growing number of contributions from the community to both OPAM itself (35 contributors) and to its metadata repository (100+ contributors, 500+ unique packages, 1500+ packages). It is really great to also see alternative metadata repositories appearing in the wild (see for instance the repositories for Android, Windows and so on). To be sure that the community efforts will continue to benefit to everyone and to underline our committment to OPAM, we are rehousing it at https://opam.ocaml.org and switching the license to CC0 (see issue #955, where 85 people are commenting on the thread).

The binary installer has been updated for OSX and x86_64:

  • http://www.ocamlpro.com/pub/opam_installer.sh

You can also get the new version either from Anil's unstable PPA: add-apt-repository ppa:avsm/ppa-testing apt-get update sudo apt-get install opam

or build it from sources at :

  • http://www.ocamlpro.com/pub/opam-full-1.1.0-beta.tar.gz
  • https://github.com/OCamlPro/opam/releases/tag/1.1.0-beta

NOTE: If you upgrade from OPAM 1.0, the first time you will run the new opam binary it will upgrade its internal state in an incompatible way: THIS PROCESS CANNOT BE REVERTED. We have tried hard to make this process fault-resistant, but failures might happen. In case you have precious data in your ~/.opam folder, it is advised to backup that folder before you upgrade to 1.1.

See full changelog
  • Automatic backup before any operation which might alter the list of installed packages
  • Support for arbitrary sub-directories for metadata repositories
  • Lots of colors
  • New option opam update -u equivalent to opam update && opam upgrade --yes
  • New opam-admin tool, bundling the features of opam-mk-repo and opam-repo-check + new 'opam-admin stats' tool
  • New available: field in opam files, superseding ocaml-version and os fields
  • Package names specified on the command-line are now understood case-insensitively (#705)
  • Fixed parsing of malformed opam files (#696)
  • Fixed recompilation of a package when uninstalling its optional dependencies (#692)
  • Added conditional post-messages support, to help users when a package fails to install for a known reason (#662)
  • Rewrite the code which updates pin et dev packages to be quicker and more reliable
  • Add {opam,url,desc,files/} overlay for all packages
  • opam config env now detects the current shell and outputs a sensible default if no override is provided.
  • Improve opam pin stability and start display information about dev revisions
  • Add a new man field in .install files
  • Support hierarchical installation in .install files
  • Add a new stublibs field in .install files
  • OPAM works even when the current directory has been deleted
  • speed-up invocation of opam config var VARIABLE when variable is simple (eg. prefix, lib, ...)
  • opam list now display only the installed packages. Use opam list -a to get the previous behavior.
  • Inverse the depext tag selection (useful for ocamlot)
  • Add a --sexp option to opam config env to load the configuration under emacs
  • Purge ~/.opam/log on each invocation of OPAM
  • System compiler with versions such as version+patches are now handled as if this was simply version
  • New OpamVCS functor to generate OPAM backends
  • More efficient opam update
  • Switch license to LGPL with linking exception
  • opam search now also searches through the tags
  • minor API changes for API.list and API.SWITCH.list
  • Improve the syntax of filters
  • Add a messages field
  • Add a --jobs command line option and add %{jobs}% to be used in OPAM files
  • Various improvements in the solver heuristics
  • By default, turn-on checking of certificates for downloaded dependency archives
  • Check the md5sum of downloaded archives when compiling OPAM
  • Improved opam info command (more information, non-zero error code when no patterns match)
  • Display OS and OPAM version on internal errors to ease error reporting
  • Fix opam reinstall when reinstalling a package wich is a dependency of installed packages
  • Export and read OPAMSWITCH to be able to call OPAM in different switches
  • opam-client can now be used in a toplevel
  • -n now means --no-setup and not --no-checksums anymore
  • Fix support of FreeBSD
  • Fix installation of local compilers with local paths endings with ../ocaml/
  • Fix the contents of ~/.opam/opam-init/variable.sh after a switch

I am very happy to announce the first official release of OPAM!

Many of you already know and use OPAM so I won't be long. Please read http://www.ocamlpro.com/blog/2013/01/17/opam-beta.html for a longer description.

1.0.0 fixes many bugs and add few new features to the previously announced beta-release.

The most visible new feature, which should be useful for beginners with OCaml and OPAM, is an auto-configuration tool. This tool easily enables all the features of OPAM (auto-completion, fix the loading of scripts for the toplevel, opam-switch-eval alias, etc). This tool runs interactively on each opam init invocation. If you don't like OPAM to change your configuration files, use opam init --no-setup. If you trust the tool blindly, use opam init --auto-setup. You can later review the setup by doing opam config setup --list and call the tool again using opam config setup (and you can of course manually edit your ~/.profile (or ~/.zshrc for zsh users), ~/.ocamlinit and ~/.opam/opam-init/*).

Please report:

  • Bug reports and feature requests for the OPAM tool: http://github.com/OCamlPro/opam/issues
  • Packaging issues or requests for a new packages: http://github.com/OCamlPro/opam-repository/issues
  • General queries to: https://lists.ocaml.org/listinfo/platform
  • More specific queries about the internals of OPAM to: https://lists.ocaml.org/listinfo/opam-devel

Install

Packages for Debian and OSX (at least homebrew) should follow shortly and I'm looking for volunteers to create and maintain rpm packages. The binary installer is up-to-date for Linux and Darwin 64-bit architectures, the 32-bit version for Linux should arrive shortly.

If you want to build from sources, the full archive (including dependencies) is available here:

http://www.ocamlpro.com/pub/opam-full-latest.tar.gz

Upgrade

If you are upgrading from 0.9.* you won't have anything special to do apart installing the new binary. You can then update your package metadata by running opam update. If you want to use the auto-setup feature, remove the "eval opam config env line you have previously added in your ~/.profile and run opam config setup --all.

So everything should be fine. But you never know ... so if something goes horribly wrong in the upgrade process (of if your are upgrading from an old version of OPAM) you can still trash your ~/.opam, manually remove what OPAM added in your ~/.profile (~/.zshrc for zsh users) and ~/.ocamlinit, and start again from scratch.

Random stats

Great success on github. Thanks everybody for the great contributions!

https://github.com/OCamlPro/opam: +2000 commits, 26 contributors https://github.com/OCamlPro/opam-repository: +1700 commits, 75 contributors, 370+ packages

on http://opam.ocamlpro.com/ +400 unique visitor per week, 15k 'opam update' per week +1300 unique visitor per month, 55k 'opam update' per month 3815 unique visitor since the alpha release

See full changelog

The full change-log since the beta release in January:

1.0.0 [Mar 2013]

  • Improve the lexer performance (thx to @oandrieu)
  • Fix various typos (thx to @chaudhuri)
  • Fix build issue (thx to @avsm)

0.9.6 [Mar 2013]

  • Fix installation of pinned packages on BSD (thx to @smondet)
  • Fix configuration for zsh users (thx to @AltGr)
  • Fix loading of ~/.profile when using dash (eg. in Debian/Ubuntu)
  • Fix installation of packages with symbolic links (regression introduced in 0.9.5)

0.9.5 [Mar 2013]

  • If necessary, apply patches and substitute files before removing a package
  • Fix opam remove <pkg> --keep-build-dir keeps the folder if a source archive is extracted
  • Add build and install rules using ocamlbuild to help distro packagers
  • Support arbitrary level of nested subdirectories in packages repositories
  • Add opam config exec "CMD ARG1 ... ARGn" --switch=SWITCH to execute a command in a subshell
  • Improve the behaviour of opam update wrt. pinned packages
  • Change the default external solver criteria (only useful if you have aspcud installed on your machine)
  • Add support for global and user configuration for OPAM (opam config setup)
  • Stop yelling when OPAM is not up-to-date
  • Update or generate ~/.ocamlinit when running opam init
  • Fix tests on *BSD (thx Arnaud Degroote)
  • Fix compilation for the source archive

0.9.4 [Feb 2013]

  • Disable auto-removal of unused dependencies. This can now be enabled on-demand using -a
  • Fix compilation and basic usage on Cygwin
  • Fix BSD support (use type instead of which to detect existing commands)
  • Add a way to tag external dependencies in OPAM files
  • Better error messages when trying to upgrade pinned packages
  • Display depends and depopts fields in opam info
  • opam info pkg.version shows the metadata for this given package version
  • Add missing doc fields in .install files
  • opam list now only shows installable packages

0.9.3 [Feb 2013]

  • Add system compiler constraints in OPAM files
  • Better error messages in case of conflicts
  • Cleaner API to install/uninstall packages
  • On upgrade, OPAM now perform all the remove action first
  • Use a cache for main storing OPAM metadata: this greatly speed-up OPAM invocations
  • after an upgrade, propose to reinstall a pinned package only if there were some changes
  • improvements to the solver heuristics
  • better error messages on cyclic dependencies

0.9.2 [Jan 2013]

  • Install all the API files
  • Fix opam repo remove repo-name
  • speed-up opam config env
  • support for opam-foo scripts (which can be called using opam foo)
  • 'opam update pinned-package' works
  • Fix 'opam-mk-repo -a'
  • Fix 'opam-mk-repo -i'
  • clean-up pinned cache dir when a pinned package fails to install

0.9.1 [Jan 2013]

  • Use ocaml-re 1.2.0
If you want to contribute to a new release announcement, check out the Contributing Guide on GitHub.