2013_09_20_opam_1.1.0_beta_released.md 5.57 KB
Newer Older
Raja Boujbel's avatar
Raja Boujbel committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
title=OPAM 1.1.0 beta released
authors=Thomas Gazagnaire

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][1], we have fixed many
bugs and added lots of [new features and stability improvements][2]. 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][3], [Windows][4] and [so on][5]). 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
`http://opam.ocaml.org` and switching the license to CC0 (see [issue #955][6],
where 85 people are commenting on the thread).

The binary installer has been updated for OSX and x86_64:
- `https://github.com/ocaml/opam/blob/master/shell/opam_installer.sh` 
Raja Boujbel's avatar
Raja Boujbel committed
35 36 37 38 39 40 41

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 :
- `https://github.com/OCamlPro/opam/releases/tag/1.1.0-beta`
Raja Boujbel's avatar
Raja Boujbel committed
43 44 45 46 47 48 49 50

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**.

[1]: /blog/2013_03_15_opam_1.0.0_released
Raja Boujbel's avatar
Raja Boujbel committed
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
[2]: https://github.com/OCamlPro/opam/issues?milestone=17&page=1&state=closed
[3]: https://github.com/vouillon/opam-android-repository
[4]: https://github.com/vouillon/opam-windows-repository
[5]: https://github.com/search?q=opam-repo&type=Repositories&ref=searchresults
[6]: https://github.com/OCamlPro/opam-repository/issues/955

## Changes ##

* 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