See full changelog
Oops, we went looking but didn't find the changelog for this release 🙈
Read the latest releases and updates from the OCaml ecosystem.
Oops, we went looking but didn't find the changelog for this release 🙈
After a few months of development, we are pleased to announce the
stable release of
Merlin 2.0.
Supported OCaml versions range from 4.00.1 to 4.02.1.
Merlin is a tool focused on helping you code in OCaml by providing features such as:
We provide integration into Vim and Emacs. An external plugin is also available for Sublime Text.
This release provides great improvements in robustness and quality of analysis. Files that changed on disk are now automatically reloaded. The parsing process is finer grained to provide more accurate recovery and error messages. Integration with Jane Street Core and js_of_ocaml has also improved.
Vim & Emacs are still the main targeted editors. Thanks to Luc Rocher, preliminary support for Sublime Text is also available, see Sublime-text-merlin. Help is welcome to improve and extend supported editing environments.
Windows support also received some fixes. Merlin is now distributed in WODI. Integration in OCaml-on-windows is planned.
This new version of Merlin is already available with opam using opam install merlin
, and can also be built from the sources which are available at
the-lambda-church/merlin.
This is a major release which we worked on for several months, rewriting many parts of the codebase. An exhaustive list of changes is therefore impossible to give, but here are some key points (from an user perspective):
This release also contains contributions from: Yotam Barnoy, Jacques-Pascal Deplaix, Geoff Gole, Rudi Grinberg, Steve Purcell and Jan Rehders.
We also thank Gabriel Scherer and Jane Street for their continued support.
Minor update to installation procedure
Oops, we went looking but didn't find the changelog for this release 🙈
This release also marks the apparition of a proper opam install script.
backend:
documentation:
emacs:
vim:
Most package managers support some pin functionality to ensure that a given package remains at a particular version without being upgraded. The stable OPAM 1.1 already supported this by allowing any existing package to be pinned to a target, which could be a specific released version, a local filesystem path, or a remote version-controlled repository.
However, the OPAM 1.1 pinning workflow only lets you pin packages that already exist in your OPAM repositories. To declare a new package, you had to go through creating a local repository, registering it in OPAM, and adding your package definition there. That workflow, while reasonably clear, required the user to know about the repository format and the configuration of an internal repository in OPAM before actually getting to writing a package. Besides, you were on your own for writing the package definition, and the edit-test loop wasn't as friendly as it could have been.
A natural, simpler workflow emerged from allowing users to pin new package names that don't yet exist in an OPAM repository:
opam pin add
in the development source treeTo make it even easier, OPAM can now interactively help you write the package definition, and you can test your updates with a single command. This blog post explains this new OPAM 1.2 functionality in more detail; you may also want to check out the new Packaging tutorial relying on this workflow.
For illustration purposes in this post I'll use a tiny tool that I wrote some time ago and never released: ocp-reloc. It's a simple binary that fixes up the headers of OCaml bytecode files to make them relocatable, which I'd like to release into the public OPAM repository.
The command opam pin add <name> <target>
pins package <name>
to
<target>
. We're interested in pinning the ocp-reloc
package
name to the project's source directory.
cd ocp-reloc
opam pin add ocp-reloc .
If ocp-reloc
were an existing package, the metadata would be fetched from
the package description in the OPAM repositories. Since the package doesn't yet exist,
OPAM 1.2 will instead prompt for on-the-fly creation:
Package ocp-reloc does not exist, create as a NEW package ? [Y/n] y
ocp-reloc is now path-pinned to ~/src/ocp-reloc
NOTE: if you are using beta4, you may get a version-control-pin instead, because we added auto-detection of version-controlled repos. This turned out to be confusing (issue #1582), because your changes wouldn't be reflected until you commit, so this has been reverted in favor of a warning. Add the
--kind path
option to make sure that you get a path-pin.
Now your package still needs some kind of definition for OPAM to acknowledge it;
that's where templates kick in, the above triggering an editor with a pre-filled
opam
file that you just have to complete. This not only saves time in
looking up the documentation, it also helps getting consistent package
definitions, reduces errors, and promotes filling in optional but recommended
fields (homepage, etc.).
opam-version: "1.2"
name: "ocp-reloc"
version: "0.1"
maintainer: "Louis Gesbert <louis.gesbert@ocamlpro.com>"
authors: "Louis Gesbert <louis.gesbert@ocamlpro.com>"
homepage: ""
bug-reports: ""
license: ""
build: [
["./configure" "--prefix=%{prefix}%"]
[make]
]
install: [make "install"]
remove: ["ocamlfind" "remove" "ocp-reloc"]
depends: "ocamlfind" {build}
After adding some details (most importantly the dependencies and
build instructions), I can just save and exit. Much like other system tools
such as visudo
, it checks for syntax errors immediately:
[ERROR] File "/home/lg/.opam/4.01.0/overlay/ocp-reloc/opam", line 13, character 35-36: '.' is not a valid token.
Errors in /home/lg/.opam/4.01.0/overlay/ocp-reloc/opam, retry editing ? [Y/n]
You probably want to try your brand new package right away, so
OPAM's default action is to try and install it (unless you specified -n
):
ocp-reloc needs to be installed.
The following actions will be performed:
- install cmdliner.0.9.5 [required by ocp-reloc]
- install ocp-reloc.0.1*
=== 1 to install ===
Do you want to continue ? [Y/n]
I usually don't get it working the first time around, but opam pin edit ocp-reloc
and opam install ocp-reloc -v
can be used to edit and retry until
it does.
How do you keep working on your project as you edit the source code, now that you are installing through OPAM? This is as simple as:
opam upgrade ocp-reloc
This will pick up changes from your source repository and reinstall any packages
that are dependent on ocp-reloc
as well, if any.
So far, we've been dealing with the metadata locally used by your OPAM
installation, but you'll probably want to share this among developers of your
project even if you're not releasing anything yet. OPAM takes care of this
by prompting you to save the opam
file back to your source tree, where
you can commit it directly into your code repository.
cd ocp-reloc
git add opam
git commit -m 'Add OPAM metadata'
git push
The above information is sufficient to use OPAM locally to integrate new code into an OPAM installation. Let's look at how other developers can share this metadata.
If another developer wants to pick up ocp-reloc
, they can directly use
your existing metadata by cloning a copy of your repository and issuing their
own pin.
git clone git://github.com/OCamlPro/ocp-reloc.git
opam pin add ocp-reloc/
Even specifying the package name is optional since this is documented in
ocp-reloc/opam
. They can start hacking, and if needed use opam pin edit
to
amend the opam file too. No need for a repository, no need to share anything more than a
versioned opam
file within your project.
We have been focusing on an unreleased package, but the same
functionality is also of great help in handling existing packages, whether you
need to quickly hack into them or are just curious. Let's consider how to
modify the omd
Markdown library.
opam source omd --pin
cd omd.0.9.7
...patch...
opam upgrade omd
The new opam source
command will clone the source code of the library you
specify, and the --pin
option will also pin it locally to ensure it is used
in preference to all other versions. This will also take care of recompiling
any installed packages that are dependent on omd
using your patched version
so that you notice any issues right away.
There's a new OPAM field available in 1.2 called
dev-repo
. If you specify this in your metadata, you can directly pin to the upstream repository viaopam source --dev-repo --pin
.
If the upstream repository for the package contains an opam
file, that file will be picked up
in preference to the one from the OPAM repository as soon as you pin the package.
The idea is to have:
opam
file that is versioned along with your source code
(and thus accurately tracks the latest dependencies for your package).opam
file that is published on the OPAM repository and can
be updated independently without making a new release of the source code.How to get from the former to the latter will be the subject of another post! In the meantime, all users of the beta are welcome to share their experience and thoughts on the new workflow on the bug tracker.
It has only been 18 months since the first release of OPAM, but it is already difficult to remember a time when we did OCaml development without it. OPAM has helped bring together much of the open-source code in the OCaml community under a single umbrella, making it easier to discover, depend on, and maintain OCaml applications and libraries. We have seen steady growth in the number of new packages, updates to existing code, and a diverse group of contributors.
OPAM has turned out to be more than just another package manager. It is also increasingly central to the demanding workflow of industrial OCaml development, since it supports multiple simultaneous (patched) compiler installations, sophisticated package version constraints that ensure statically-typed code can be recompiled without conflict, and a distributed workflow that integrates seamlessly with Git, Mercurial or Darcs version control. OPAM tracks multiple revisions of a single package, thereby letting packages rely on older interfaces if they need to for long-term support. It also supports multiple package repositories, letting users blend the global stable package set with their internal revisions, or building completely isolated package universes for closed-source products.
Since its initial release, we have been learning from the extensive feedback from our users about how they use these features as part of their day-to-day workflows. Larger projects like XenAPI, the Ocsigen web suite, and the Mirage OS publish OPAM remotes that build their particular software suites. Complex applications such as the Pfff static analysis tool and Hack language from Facebook, the Frenetic SDN language and the Arakoon distributed key store have all appeared alongside these libraries. Jane Street pushes regular releases of their production Core/Async suite every couple of weeks.
One pleasant side-effect of the growing package database has been the contribution of tools from the community that make the day-to-day use of OCaml easier. These include the utop interactive toplevel, the IOCaml browser notebook, and the Merlin IDE extension. While these tools are an essential first step, there's still some distance to go to make the OCaml development experience feel fully integrated and polished.
Today, we are kicking off the next phase of evolution of OPAM and starting the journey towards building an OCaml Platform that combines the OCaml compiler toolchain with a coherent workflow for build, documentation, testing and IDE integration. As always with OPAM, this effort has been a collaborative effort, coordinated by the OCaml Labs group in Cambridge and OCamlPro in France. The OCaml Platform builds heavily on OPAM, since it forms the substrate that pulls together the tools and facilitates a consistent development workflow. We've therefore created this blog on opam.ocaml.org to chart its progress, announce major milestones, and eventually become a community repository of all significant activity.
Major points:
OPAM 1.2 beta available: Firstly, we're announcing the availability of the OPAM 1.2 beta, which includes a number of new features, hundreds of bug fixes, and pretty new colours in the CLI. We really need your feedback to ensure a polished release, so please do read the release notes below.
In the coming weeks, we will provide an overview of what the OCaml Platform is (and is not), and describe an example workflow that the Platform can enable.
Feedback: If you have questions or comments as you read these posts, then please do join the platform@lists.ocaml.org and make them known to us.
We are proud to announce the latest beta of OPAM 1.2. It comes packed with new features, stability and usability improvements. Here the highlights.
We now have binary packages available for Fedora 19/20, CentOS 6/7, RHEL7, Debian Wheezy and Ubuntu! You can see the full set at the OpenSUSE Builder site and download instructions for your particular platform.
An OPAM binary installation doesn't need OCaml to be installed on the system, so you can initialize a fresh, modern version of OCaml on older systems without needing it to be packaged there. On CentOS 6 for example:
cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:ocaml/CentOS_6/home:ocaml.repo
yum install opam
opam init --comp=4.01.0
For this version, we focused on improving the user interface and workflow. OPAM is a complex piece of software that needs to handle complex development situations. This implies things might go wrong, which is precisely when good support and error messages are essential. OPAM 1.2 has much improved stability and error handling: fewer errors and more helpful messages plus better state backups when they happen.
In particular, a clear and meaningful explanation is extracted from the solver whenever you are attempting an impossible action (unavailable package, conflicts, etc.):
$ opam install mirage-www=0.3.0
The following dependencies couldn't be met:
- mirage-www -> cstruct < 0.6.0
- mirage-www -> mirage-fs >= 0.4.0 -> cstruct >= 0.6.0
Your request can't be satisfied:
- Conflicting version constraints for cstruct
This sets OPAM ahead of many other package managers in terms of user-friendliness. Since this is made possible using the tools from irill (which are also used for Debian), we hope that this work will find its way into other package managers. The extra analyses in the package solver interface are used to improve the health of the central package repository, via the OPAM Weather service.
And in case stuff does go wrong, we added the opam upgrade --fixup
command that will get you back to the closest clean state.
The command-line interface is also more detailed and convenient, polishing and
documenting the rough areas. Just run opam <subcommand> --help
to see the
manual page for the below features.
More expressive queries based on dependencies.
$ opam list --depends-on cow --rec
# Available packages recursively depending on cow.0.10.0 for 4.01.0:
cowabloga 0.0.7 Simple static blogging support.
iocaml 0.4.4 A webserver for iocaml-kernel and iocamljs-kernel.
mirage-www 1.2.0 Mirage website (written in Mirage)
opam2web 1.3.1 (pinned) A tool to generate a website from an OPAM repository
opium 0.9.1 Sinatra like web toolkit based on Async + Cohttp
stone 0.3.2 Simple static website generator, useful for a portfolio or documentation pages
Check on existing opam
files to base new packages from.
$ opam show cow --raw
opam-version: "1"
name: "cow"
version: "0.10.0"
[...]
Clone the source code for any OPAM package to modify or browse the interfaces.
$ opam source cow
Downloading archive of cow.0.10.0...
[...]
$ cd cow.0.10.0
We've also improved the general speed of the tool to cope with the much bigger size of the central repository, which will be of importance for people building on low-power ARM machines, and added a mechanism that will let you install newer releases of OPAM directly from OPAM if you choose so.
Packaging new libraries has been made as straight-forward as possible. Here is a quick overview, you may also want to check the OPAM 1.2 pinning post.
opam pin add <name> <sourcedir>
will generate a new package on the fly by detecting the presence of an opam
file within the source repository itself. We'll do a followup post next week
with more details of this extended opam pin
workflow.
The package description format has also been extended with some new fields:
bug-reports:
and dev-repo:
add useful URLsinstall:
allows build and install commands to be split,flags:
is an entry point for several extensions that can affect your package.Packagers can limit dependencies in scope by adding one
of the keywords build
, test
or doc
in front of their constraints:
depends: [
"ocamlfind" {build & >= 1.4.0}
"ounit" {test}
]
Here you don't specifically require ocamlfind
at runtime, so changing it
won't trigger recompilation of your package. ounit
is marked as only required
for the package's build-test:
target, i.e. when installing with
opam install -t
. This will reduce the amount of (re)compilation required
in day-to-day use.
We've also made optional dependencies more consistent by removing version
constraints from the depopts:
field: their meaning was unclear and confusing.
The conflicts
field is used to indicate versions of the optional dependencies
that are incompatible with your package to remove all ambiguity:
depopts: [ "async" {>= "109.15.00"} & "async_ssl" {>= "111.06.00"} ]
becomes:
depopts: [ "async" "async_ssl" ]
conflicts: [ "async" {< "109.15.00"}
"async_ssl" {< "111.06.00"} ]
There is an upcoming features
field that will give more
flexibility in a clearer and consistent way for such complex cases.
Efforts were made on the build of OPAM itself as well to make it as easy as possible
to compile, bootstrap or install. There is no more dependency on camlp4 (which has
been moved out of the core distribution in OCaml 4.02.0), and the build process
is more conventional (get the source, run ./configure
, make lib-ext
to get the few
internal dependencies, make
and make install
). Packagers can use make cold
to build OPAM with a locally compiled version of OCaml (useful for platforms where
it isn't packaged), and also use make download-ext
to store all the external archives
within the source tree (for automated builds which forbid external net access).
The whole documentation has been rewritten as well, to be better focused and easier to browse. Please leave any feedback or changes on the documentation on the issue tracker.
The public beta of OPAM 1.2 is just out. You're welcome to give it a try and give us feedback before we roll out the release!
We'd be most interested on feedback on how easily you can work with the new pinning features, on how the new metadata works for you... and on any errors you may trigger that aren't followed by informative messages or clean behaviour.
If you are hosting a repository, the administration scripts may help you quickly update all your packages to benefit from the new features.
backend:
emacs:
C-c l
previously bound to merlin-use
C-c r
previously bound to merlin-restart-process
C-c t
previously bound to merlin-type-expr
C-<up>
and C-<down>
as these already have a
meaning in emacs ( #129 )
They were bound to merlin-type-enclosing-go-up
and
merlin-type-enclosing-go-down
respectively.extensions:
vim:
Async_core
to
Async_kernel
#load_rec
the same way as #load
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.
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.
From the changelog:
opam-admin make <packages> -r
(#990)opam-admin depexts
(#997)OpamSolver.empty_universe
for flexible universe instantiation (#1033)OpamFormula.eval_relop
and OpamFormula.check_relop
(#1042)OpamCompiler.compare
to match Pervasives.compare
(#1042)OpamCompiler.eval_relop
(#1042)OpamPackage.Name.compare
(#1046)version_constraint
and version_formula
to OpamFormula
(#1046)info
an alias for show
and added the alias
uninstall
(#944)opam init --root=<relative path>
(#1047)opam info
(#1052).install
files usable outside of opam (#1026)--resolve
option to opam-admin make
that builds just the archives you need for a specific installation (#1031)which
by a more portable call (#1061)opam config report
to help with bug reports (#1034)opam upgrade <pkg>
(#1001)opam init
to a non-empty root directory (#974)backend:
emacs:
extensions
vim:
-require
command line argument to specify packages on the
command line$OCAML_TOPLEVEL_PATH/autoload
at
startup. Can be disabled with autoload: false
in ~/.utoprc
or
-no-autoload
.#typeof
to values and modules. Thanks to Thomas Refis for
this feature#utop_prompt_XXX
#require
when passing multiple packages#
to $
to match the standard
toplevelUTop.show_box
to allow one to hide the completion
bar_
. This can be disabled with
UTop.set_hide_reserved false
.Enter
in the middle of a comment-short-paths
options for OCaml >= 4.01.0
(and make it the default)Toploop
utop-full
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
Oops, we went looking but didn't find the changelog for this release 🙈
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.
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.
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:
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 :
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.
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) dependenciesmessages
, 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 formulasAlso, 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.
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.
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.
Using the binary installer:
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 :
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)
dependenciesmessages
, 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 formulasdocumentation:
emacs:
vim:
backend:
documentation:
emacs
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:
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 :
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.
opam update -u
equivalent to opam update && opam upgrade --yes
opam-admin
tool, bundling the features of opam-mk-repo
and
opam-repo-check
+ new 'opam-admin stats' toolavailable
: field in opam files, superseding ocaml-version
and os
fieldsopam config env
now detects the current shell and outputs a sensible default if
no override is provided.opam pin
stability and start display information about dev revisionsman
field in .install
files.install
filesstublibs
field in .install
filesopam 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.ocamlot
)--sexp
option to opam config env
to load the configuration under emacs~/.opam/log
on each invocation of OPAMversion+patches
are now handled as if this
was simply version
OpamVCS
functor to generate OPAM backendsopam update
opam search
now also searches through the tagsAPI.list
and API.SWITCH.list
messages
field--jobs
command line option and add %{jobs}%
to be used in OPAM filesopam info
command (more information, non-zero error code when no patterns match)opam reinstall
when reinstalling a package wich is a dependency of installed packagesOPAMSWITCH
to be able to call OPAM in different switchesopam-client
can now be used in a toplevel-n
now means --no-setup
and not --no-checksums
anymore../ocaml/
~/.opam/opam-init/variable.sh
after a switchMinor release, but merlin is now compatible with ocaml versions > 4.00.1. The only noticeable changes since 1.3 is the use of short paths even with version 4.00.1 of ocaml.
Oops, we went looking but didn't find the changelog for this release 🙈
backend:
emacs:
extensions:
misc:
vim:
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:
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
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.
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
The full change-log since the beta release in January:
1.0.0 [Mar 2013]
0.9.6 [Mar 2013]
~/.profile
when using dash (eg. in Debian/Ubuntu)0.9.5 [Mar 2013]
opam remove <pkg> --keep-build-dir
keeps the folder if a source archive is extractedopam config exec "CMD ARG1 ... ARGn" --switch=SWITCH
to execute a command in a subshellopam update
wrt. pinned packagesopam config setup
)~/.ocamlinit
when running opam init
0.9.4 [Feb 2013]
-a
type
instead of which
to detect existing commands)depends
and depopts
fields in opam info
opam info pkg.version
shows the metadata for this given package versiondoc
fields in .install
filesopam list
now only shows installable packages0.9.3 [Feb 2013]
0.9.2 [Jan 2013]
opam repo remove repo-name
opam config env
opam-foo
scripts (which can be called using opam foo
)0.9.1 [Jan 2013]