* Building with OCaml < 4.02.3 is no longer supported
* Support compilation with a built-in mccs solver (removing run-time dependency
to aspcud). Integrated half-working "heuristics" dropped.
* Remove jsonm and transitive uutf dependency.
* Switch build systems to `jbuilder`, including `lib-ext` support
* Allow repeated and or'd arguments to the `list` command
* Many code and build system portability fixes (Windows, BSD)
* Add `switch export --full` to include package definitions
* Add `announce:` and `stamp:` fields to repositories (`repo` files)
* Add a global cache of git objects (greatly speeding up multiple cloning)
* Allow `opam pin URL` without a package name
* Many error handling, messages and corner case fixes
* Updated the versions of dependencies
* Removed the unused `features:` field, and proposal for a new syntax
* More informative exit codes, and documentation thereof
now as several packages rely on this version for building).
Changes include:
Changes prefixed with "(*)" are potentially breaking to scripts or existing
repositories (changes that are automatically handled by the format upgrade tools
are not marked).
2.0.0~beta3
* (*) Renamed `--soft-request` to `--best-effort`
* Fixed and improved speed of the package file tracking mechanism
* Added `--ignore-constraints-on` to temporarily bypass version constraints on
some dependencies
* Fields `build-test:`, `build-doc:` are now deprecated, in favor of specifying
conditions on the `with-test` and `with-doc` variables within the `build:`
field, and of the new `run-test:` field
* (*) The command-line options have been renamed accordingly to `--with-test`
and `--with-doc`
* Removed the `opam build` command
* Allow directories in place of package specifications for the `install`,
`remove`, `upgrade`, `reinstall` and `show` commands. `opam` files can also be
specified for `install` and `show`
* On local switch creation, check for package definitions and choose a
compatible compiler if possible
* Add `opam install|remove --destdir` to copy the package's installed files
somewhere else
* Allow `opam init --config=URL`
2.0~beta2
* Fixes (mainly to `opam build`)
* Faster coinstallability check
2.0~beta
* New, by-hash package archive caching system
* Simpler HTTP repository update
* Allow specification of multiple checksums per file
* Add `opam reinstall --pending`, to handle reinstallations of changed packages
* Support for defining trust anchors and repository validation hooks (for use
with Conex)
* (*) Added `opam install --working-dir`, removed "mixed mode" for pinned packages
* Added `opam install --soft-request`, a non-failing "do what can be done"
install mode
* Simplified, better conflict messages
* Added `opam list --coinstallable-with PKG`
* Added command `opam clean`
* Added `opam upgrade --all PKGS`, to do a full upgrade while guaranteeing
`PKGS` are kept installed
* Allow `&` in conflict version constraints, e.g. `conflicts: "foo" {>= "3" & <
"4"}`
* Added an `opam admin` command, with various, better organised repository admin
commands, and remove the `opam-admin` tool
* Added an `opam build` command, to handle `opam` files found in the current
directory
* Internally upgrade repositories in 1.2 format automatically to 2.0 (on `init`,
`update` or `repo add`)
2.0~alpha5
* Merge stdout and stderr of child processes by default
* Fixed regression on solver call times
* Added a few shorter command aliases: `opam var` `opam exec`, `opam env` for
the corresponding `opam config` commands
* (*) Simplified `opam repo` to only use `add` and `remove` in normal use,
always meaning the current switch (only) if not specified otherwise
* (*) Restrict package names and versions to a reasonable character set
* Added support for SHA256 and SHA512 checksums
* Separated the opam format lexer/parser/printers into a separate
`opam-file-format` library
* Reporting on package definition file errors only when the file will be used,
and on by default (rather than all-off by default, and optionally all-on)
* `opam lint` now accept multiple input files
* `opam pin` interface yet improved, allow pinning all at once when a source
directory contains multiple packages. `opam unpin <dir>` now allowed to cancel
`opam pin <dir>`
* Updated version of the dose lib dependency
* (*) All patch files used in package definitions are now assumed to apply with
`-p1`.
2.0~alpha4
* Added pre and post hooks for package command sections; allowed per-switch
configuration
* Re-packaged the libraries and opam into 7 individual packages
* Convert opam 1.2 files on the fly when pinning
* `opam list` can now match patterns on versions
* Allow switches to be created below arbitrary directories using `opam switch
create <dir>`. Automatically select a switch found in `$PWD`
* Add `install --reuse-build-dir` to be used together with `--keep-build-dir`
and allow incremental recompilations
* Add `install --inplace-build` to build locally pinned packages directly in
their source directory
2.0~alpha3
* (*) Refactored 'opam switch' command, creation of new switches no longer implicit
* (*) Allow per-switch selection of repositories
* Better update of the environment variables across switches or opam roots
* Add `opam install --restore` to recover packages that got removed due to
errors or interruptions
* Added `synopsis:` and `description:` fields to integrate package descriptions
in a single package definition file
* Removed the clever hack to skip downloads when uninstalling packages with
`ocamlfind remove`; this now needs to be explicit through the
`light-uninstall` flag.
* Provide `opam admin upgrade-format` to migrate package repositories to the new
format, and create the proper OCaml compiler package wrappers
* Allow initialisation parameters from a .opamrc file, possibly completely
overriding OCaml and opam.ocaml.org repository defaults
2.0~alpha2
* Extended the `opam lint` command-line options (package descriptions from opam
metadata, warnings selection)
* Allow to create a new switch with `opam switch import`
* (*) Rewritten, much more flexible `opam list` command, with composable filters and
output selection
* Delay the removals of packages as much as possible, avoiding most cases of
mass uninstalled packages after a build failure
* Use a specific `opam` user-agent for downloads
* Remove globalisation of compiler package variables and support for
`available:` constraints depending on those. Rewrite the repository
accordingly to use explicit dependencies towards the compiler version.
2.0~alpha
* Changed license to LGPL 2.1 with linking exception, like OCaml (#2573)
* Track files installed by packages for cleaner removal and listing, add `opam
search --owns-file` (#502, #1215) *this requires packages to properly separate
build and install*, or unrelated files could get removed on package uninstall.
* Allow command wrappers around package build/install/remove commands to be
defined in `~/.opam/config`; include sample Linux wrappers to restrict process
permissions (e.g. ensure `build:` doesn't install)
* (*) Reworked `opam show`, with more fields and the ability to select raw fields
from the opam file (#2122)
* Dropped ability to compile opam with OCaml earlier than 4.01.0
* Version constraints in `depopts:` allowed again, but with consistent semantics
* Allow mixing filters within dependency constraints
* More flexible `opam pin` command interface
* New internal file-lock handling, less obtrusive and safer
* New `switch export` format, now including local (pinned) package definitions
* No longer uses insecure arguments of curl/wget (#55, #2006, #2460)
* Installed package source and metadata are now handled per-switch, which is
more reliable
* `opam pin edit` now allows changing version and even URL; better editor
handling
* Discarded built-in variables based on polling OCaml (they are now defined by
the compiler package at installation)
* Discarded compiler files, `opam switch` now based on packages with the
`compiler` flag set
* Extended package configuration files
* Allow initialised opam without switch, initialised switch without compiler.
Better handling of compiler install failure
* (*) Large API rework, switch and repository state now handled separately, used in
functional style and avoiding many loads
* Git submodules are now automatically fetched by the git backend
* (*) Package definition files now prioritize `&` higher than `|`, like is most
common
* (*) `opam list -a` now lists all available packages, even if they can't be
installed (missing depends...), which is much faster (#2370)
* Added ability to reprint files with reduced diffs (#2363)
* Url and description can now be included within a single package definition
`opam` file (#2328)
* Internal switch state now all below `<switch-dir>/.opam-switch/`, state in a
single `switch-state` file (#2340)
* Add a `setenv:` field to package definitions, allowing to export environment
variables (#2337, #2361)
* Built-in support for alternative solver `mccs` (#2333)
* `opam upgrade pkg` now prompts to install `pkg` if absent (#2327)
* (*) Assume plugin package and exec names start with "opam-" (#2316, #2317)
* Reworked, cleaner and bidirectional file manipulation library (kind of lenses)
(#2325)
* Allow packages to specify extra remote overlay files within their definition
files
* Heuristic to detect bad solutions and print a hint when no solver is available
* (*) Proper URL handling with version-control + transport handling (e.g.
`git+https://`)
* Allow unescaped strings enclosed between `"""` markers in package definition
files
* Don't rely on '.zip' extension for downloaded archive handling (#2289)
* `opam config` extended with `set`, `unset`, `expand` subcommands, allows
variables in `exec` argument (#2268)
* `conflict:` field is now handled as a disjunction in all regards (#2267)
* Better handling of concurrent removal/build/install actions (#2161, #2266,
#2370)
* Allow fields `x-fieldname` in package definition files, for use by external
tools (#2265)
* Extended, more useful JSON output (including full package failure logs)
(#2236)
* Use the switch paths that are defined in the switch configuration file (#2185)
* Allow package definition files to reference the package's own variables
through "%{_:varname}%" (#2184)
* Initialise number of jobs from host's number of processors (#2180)
1.2.2
* Fixed wrong locks being taken during `switch reinstall` (#2051)
* Fixed `config report` that wasn't displaying the external solver (#2059)
* Follow glibc standard on detecting an UTF8 locale (#2065)
* Fixed issues with fish shell init scripts (#2063)
* Restored printing of commands with `--verbose` and `--dry-run`
* More concise printing of conflicts, with accurate version numbers
* Small improvements to the causes of actions
* Fixed issue causing the state cache not to be used on some OSes (OSX) (#2077)
* Added numbers to lint checks, and some new checks
* Restored the handling of a simple path to an `aspcud`-compatible executable
in variable OPAMEXTERNALSOLVER (#2085)
* Added package universe output to new PEF format for diagnostics
* Prioritise newer versions even when the latest can't be installed (#2109)
* Automatically install plugins on `opam plugin-name` (#2092)
* Fixed a fd leak on solver calls (#2134)
* Accept opam files with errors when no debug or strict options are set, for
easier format updates
* Add `opam list --resolve` to get dependencies as a consistent set of packages
* Provide the expected checksum to download commands
* Changed return code of `opam list` when no patterns are supplied and the list
is empty
1.2.1
* Non-system compiler definitions without source are now allowed
* Better handling of compiler "base" packages allows to move build instructions
from compiler definitions to packages
* Rewritten action resolution mechanism to be based on atomic actions.
Actions are not aborted anymore on first failure when there is no
inter-dependency
* Rewritten parallel command execution engine
* Better display of actions, lots of improved messages
* `opam upgrade pkg` now fails if no new version of `pkg` can be installed
* fixed shell configuration for various shells
* Updated Dose dependency to 3.3
* Fixed behaviour of `opam switch` and related commands when a switch
is locally set in a shell (through `OPAMSWITCH`)
* Better behaviour on failed `opam switch`
* New pinning mode: when pinning using version-control on a local path and
without a branch specified, use current file tree, but limited to
version-tracked files
* Faster and cleaner handling of downloads
* Now compiles with --safe-string on OCaml 4.02, better compatibility handling
* `opam unpin` now accepts multiple arguments
* `opam pin add <pkg>.<version> <target>` is now allowed to specify
the advertised version
* Fixed bug leading to a bad `CAML_LD_LIBRARY_PATH` when switching from system
* Better `opam lint`, reporting warnings and errors, including format errors
* `opam config setup` now takes `--shell=` instead of `--sh`, `--csh`, `--fish`,
`--zsh`
* Provisional feature: dependency flag `dev` is accepted (but does nothing)
* Provisional feature: field `features` in opam files implemented (beta), not
for use in production
* Better definition of the `filter` language within opam files: propagates
undefined values, bool-to-string converter syntax
* Provisional feature: `verbose` may be specified in package flags
* OPAM git-like plugins (commands of the form opam-xxx) are now searched in the
correct OPAM path
* ~/.opam/config doesn't refer to OPAM's patch-version anymore, to allow
downgrading
* Recognise <name>.opam files and directories when pinning a package to source
* Cleaned up debug and verbose messages, allow more control (`-v` can now be
repeated)
* Pinning URL can now be explicit in the form `VC+URL`, e.g. `git+ssh://`,
`hg+https://`...
* New flexible way to specify download and solver commands in `~/.opam/config`
or in variables `OPAMFETCH` and `OPAMEXTERNALSOLVER`
* Lots of bug-fixes