forked from ocaml/opam
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES
620 lines (577 loc) · 30.9 KB
/
CHANGES
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
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~beta3
* Renamed `--soft-request` to `--best-effort`
* Fixed and improved speed of the package file tracking mechanism
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
1.2.0
* Handle locally installed self-upgrade opam binary (#1257)
* Added `opam list --depends-on` to show reverse dependencies (#693)
* More consistent checks on user-specified packages (#1241)
* Handle version constraints from the command line (`package>=version`) (#380)
* Output clear and concise messages on non solvable requests (#595, #1238)
* Much better internal parser. File locations in error messages (#1260, #1222)
* Removed dependency on camlp4 (#917)
* Fixed orphan packages handling (installed packages with no upstream) (#1198)
* Solver: optimize default preferences, depending on the solver version. New
--criteria option (#1208)
* Better PATH modifications handling, add 'opam config env --inplace-path'
(#1189, #1749)
* Specify variable overrides with environment OPAMVAR_name (#1153)
* Much better overall failsafe behaviour. Error reports on interruption (#1202,
#1125, #1188...)
* Better action processing, with downloads first (#984)
* Much improved and faster interface with the Cudf solver (#1185, #1179)
* Ask the user to confirm actions whenever non-trivial (#1165)
* Added option --show-actions, made --dry-run simulate actions (#1142)
* Now prints meaningful causes explaining the actions (#1174)
* Fixed the stats displayed after update (#1161)
* Added variables to query ocaml native tools and arch (#979)
* Enable packagers to specify mirrors in url files (#807)
* Cleaned up the command-line interface (#1250, #1170, #1472). Incompatible
changes:
- 'opam config exec': takes command args directly rather than as a string (use
-- for command arguments)
- 'opam switch import|export': now have a mandatory FILE argument. '-f' no
longer accepted.
- 'opam pin' now takes a subcommand 'add', 'remove', 'list' or 'edit'.
- 'opam config -env': no longer accepted for 'opam config env'
- '--no-aspcud' is now '--use-internal-solver'.
- Removed unused `opam config -I`, `opam config {asm,byte}{comp,link}`
- '-r' isn't accepted anymore for '--root'
* Much extended pinning features, with the ability to use opam files from the
source, pin packages that don't exist in a repository, fill a local opam
file from a template, etc.
* Improved the internal solver to handle much larger problems (#1358)
* Use Unix.lockf for more reliable internal repository locks (#1299)
* Large performance improvements (#1363)
* Upgraded external dependencies to dose 3.2.2, ocamlgraph 1.8.5, cmdliner
0.9.4, cudf 0.7
* Switch export file now include pinning data. Pinned package restored through
'opam switch import' (#1393)
* Meaningful messages explaining why packages aren't available (#1419, #1398)
* More informative 'opam config list', more complete 'opam config var'
* Added 'opam config cudf-universe' for use in external tools
* opam files: added a 'dev-repo' field, and the experimental 'flags' field
(#1217, #1472)
* Generate an opam-admin.top to easily apply scripts on a package repository
(#1454). Provide scripts to ease adding new metadata ('dev-repo', etc.)
* Added 'opam upgrade --fixup' to save the day if your installed package set
gets inconsistent.
* Fixed some return codes
* Added option to query (recursive) (reverse) dependencies and external
dependencies to 'opam list
* Fixed opam init for some shells
* OPAM search now includes the 'syntax' and 'libs' fields in the search, as well
as 'findlib' files
* 'opam source' command to get the package archive or upstream source easily
* Added an 'install' field in opam files, to separate from build
* Added the 'build', 'test' and 'doc' dependency flags to limit the scope
of some dependencies
* Added Check for common dependencies at init time
* Pinning to a local git directory pins as path, but advertises pinning as git
will now automatically select the pin kind to 'git' (#1555)
* Fixed init scripts for fish and csh (#952)
* More reliable and faster usage of git branches in the git backend
* Friendlier env variable handling (true/1/yes or false/0/no/"" for true and
false) (#1608)
* Specify what is not rather than 'already up-to-date' when some packages
couldn't be upgradedd (#1645)
* Override Make variables in sub-processes (#1617)
* 'opam update' no longer needed after 'opam repo add'
* Attempt to read files in 'permissive mode' when they claim a newer OPAM
version (#1662)
* Fixed ignore of SIGPIPE in sub-processes (#1681)
* New shell completion scripts
* Added 'opam lint' to perform checks on opam files
* Use the published version of jsonm rather than include it (#1574)
* Changed findlib package name from 'opam' to 'opam-lib'
* Hundreds of smaller fixes and UI improvements
1.1.2
* Rewritten, more compatible build system based on Makefiles (#1362, #1424)
1.1.1
* 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
1.1.0 [Oct 2013]
* Fix update of dev packages (#962)
* Add support for zip source archives (#958)
* Add `OPAMCURL` environment variable to control invocation of curl (#960)
* Ensure repository redirects only happen for http remotes (#955)
* Turn malformed package files into warnings instead of hard errors (#957)
* Improve robustness of pinned package update (#949)
* Finish conversion of default repository to <https://opam.ocaml.org> (#948)
* Fix regression in handling archives with no extension (treat them as tar again) (#972)
* Fixed stale archives causing packages to be marked as NEW when they weren't (#945)
1.1.0RC1 [Oct 2013]
* Add `make cold` target to build OPAM without a system OCaml installed (#910)
* More informative error messages from `curl` (#905)
* Document use of `OPAMCOLOR` for optional ANSI coloring
* Add `opam-admin depexts` utility to rewrite OPAM files with external dependencies
* Added `repo` files for repository meta-information
* Added support for repo redirections
* Added scripts for automated testing in Travis
* Fixed bug in opam-admin that could keep not up-to-date archives
* Added an `opam-admin depexts` script to ease handling of external dependencies
* Added the `--deps-only` option to `opam install`
* Fixed upgrade with corner-cases of orphan packages
* Added a `note` display form
* Better handling of external solver failures, and added a `--no-aspcud` option
* Fixed unpinning of some installed packages
* Fixed upgrade of metadata from 1.0 when there are orphan custom compilers
1.1.0-beta [Sept 2013]
* 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 chanages 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 improvments in the solver heuristics
* By default, turn-on checking of certificates for downloaded dependency archives: use `./configure --disable-certificate-check` to go back to the previous behavior
* 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 (regression introduced in 0.9.5)
* 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 for FreeBSD
* Fix installation of local compilers with local paths endings with `.../ocaml/`
* Fix the contents of `~/.opam/opam-init/variable.sh` after a switch
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
0.9.0 [Jan 2013]
* add a new `--fake` option to simulate build and installation of packages. Use this option this care, it can easily corrupt the state of OPAM.
* Better messages in case of error
* OPAM proposes better solutions to the user
* support for installed roots and auto-clean of unused packages
* rename `--cores` to `--jobs`
* better error messages for wrong argument of 'opam init'
* show the root causes of actions done by OPAM
* opam import and export now uses -f to specify the filename, and uses stdin and stdout if no filename is specified
* Fix environment initialisation for some corner-cases
* Add a way to specify how to run tests and build documentation for the packages
* Display homepage, authors, doc link, license with 'opam info'
* Improve `opam remove` efficiency when using `ocamlfind` command(s) only
* Git pinning now works with commits/tags/branches
* `opam init` works without preinstalled compiler
* Support for DARCS backends
* Each global command-line flag `xxx` as can be set using the `OPAMxxx` environment variable instead
* Better display of compiler switch (+ read compiler descriptions)
* Clearer error message when trying to pin a non-existing package
* Fix issue with pinning to version number
* Add a `shared` location to be used in OPAM files
* Improve (but break) the command-line interface by using cmdliner
0.8.2 [Dec 2012]
* Fix an issue with `opam reinstall` where packages were reinstalled in reverse order
0.8.1 [Nov 2012]
* Simplify string substitution in OPAM files
* Recompile the installed packages when the system compiler is upgraded
* Fix various regressions in pinned and dev packages introduced in 0.8.0
0.8.0 [Nov 2012]
* Improvements in the solver interface and API
* The solver now use an external SAT-solver (aspcud) if found in the path
* More expressive constraints in optional dependencies
* Clean-up the build directory when build succeeds
0.7.7 [Oct 2012]
* Add an `--alias` global command-line argument to overwrite the default alias value
* Allow more concurrency between no conflicting opam commands
* Upgrade to the latest version of DOSE and CUDF (solver libraries)
* Add repository priorities
* Create the default directories (`bin/`, `lib/` ...) when installing a new compiler
0.7.6 [Oct 2012]
* major internal API refactoring
* repositories are now versionned, and we try to auto-update when possible
* more expressive compiler constraints in opam files
0.7.5 [Oct 2012]
* dependencies can now be expressed by any formula (instead of just CNF)
* It's easier to compose the value of environment variable (ie. to write `%{lwt+ssl:enable}%`)
* Fix regression on init for rsync repositories
0.7.4 [Oct 2012]
* improve `opam pin`: the code is more robust and it is now possible to pin a package to a git repository
* add support for patches per package
* add `opam switch -import file` and `opam switch -export file`
0.7.3 [Sep 2012]
* Better user-message when no solution is found
* Improve the minimality of installed packages
0.7.2 [Sep 2012]
* Fix regression in init introcuced in 0.7.0
* Fix regression in update introduced in 0.7.0
0.7.1 [Sep 2012]
* Remove forgotten debug statement
0.7.0 [Sep 2012]
* report upgrade statistic on update
* do no ask y/n when installing compiler's base packages
* improve opam-mk-repo
* fix `opam search` to be caseless
* ability to filter some commands (depending on some predicates) in opam file
* improvments when packages disapear upstream
* check for ocaml 3.12.1 on configure
* tell the user to unset some potentially dangerous variables when running opam
* fix few git backend issues
0.6.0 [Sep 2012]
* semantics changes in `opam switch`
* solver improvements in case of install and remove
* better error reporting
* fix caching of package archives
* fix `~/.opam/repo/index` priorities
0.5.0 [Sep 2012]
* add opam search
* add opam reinstall
* ability to upgrade only a subset of packages
* lot of bug fixes in the rsync and curl backend
* better `--help` messages
* better information displayed to the user
0.4.0 [Aug 2012]
* better layout of repository files
* (partial) possibility to specify archive checksums
* if the archive is not on ocamlpro.com, download it upstream
* suffix +opam to the versions of archives available on ocamlpro.com
* prompt the user to evaluate `opam config -env` more often
* changes in meta-data aren't picked up by the CURL backen
* more modulare repository system: the 'kind' of repository is no more linked
to the kind of package archives
0.3.2 [Aug 2012]
* fix regression for `opam switch` introduced in 0.3
* fix deletion of optional dependencies
* support for pinned packages
* fix compilation for ocaml 4.00
* fix compilation for *BSD
0.3.1 [Jul 2012]
* fix regression for `opam install` introduced in 0.3
0.3.0 [Jul 2012]
* improve parallel compilation of packages
* better recovery on compilation/installation errors
* first draft of version pinnig
* fix`'opam config -env` for old shells
* install the latest version of packages when possible
* more robust `opam update` (ie. old files are gc-ed)
* add a (more or less) generic way to install and use topfind
0.2.0 [Jul 2012]
* more robust switch command
* more robust parallel build (not yet activated by default)
* support for compiler-constraints in packages
* new solver heuristics
* improved performance on init with the rsync backend
0.1.0 [Jun 2012]
* Initial version