OCaml Changelog

RSS

Read the latest releases and updates from the OCaml ecosystem.

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
See full changelog
  • documentation:

    • updates of the emacs section of the readme by Ronan Lehy.
  • emacs:

    • bugfix for ac-mode: merlin-ac-prefix wasn't called.
    • better formatting for completion suggestions.
  • vim:

    • bugfix for the "selectPhrase" command, an overflow on 32b plateform was causing complete desynchronisation between vim and merlin.
    • better formatting for completion suggestions.

Merlin 1-4

See full changelog
  • backend:

    • lazy processing of open directives makes merlin much faster
    • simplified buffer management
    • tweak signal handling to improve windows compatibility
    • track verbosity of query: repeated queries are considered more "verbose"
    • type expansion: expand type aliases for verbose query
    • add support for OUnit-like Benchmark extension
    • more tolerant type checker, to provide completion on ill-typed expressions
    • proper version reporting with git revision
    • refactored logging subsystem
    • add support "val constructs" in implementation: report errors but add definition to current environment
    • add FLG, EXT and PRJ in .merlin
    • "locate" command now works in much more situations
    • one distribution for 4.00 and 4.01, introduced common interface between both, typers now live in https://github.com/def-lkb/merlin-typers
    • new implementation of the main merlin state tracking ast & types
    • better error reporting thanks to a contribution from Ronan Lehy
  • documentation:

    • started a wiki (https://github.com/def-lkb/merlin/wiki)
    • wrote 'from-scratch' guides to ease setting-up merlin in your editor
  • emacs

    • during completion with auto-complete, you can hit C-c C-l on a candidate to jump on its definition
    • made communication with merlin asynchronous (using transfer queues) hence improving responsiveness
    • when running a merlin command, the errors present in all phrases but the current one are displayed
    • fixed buffer cleaning
    • successive call to C-c C-t do not climb the typed tree but improve merlin's verbosity. To move inside the tree use C-down and C-up (which implements phrase movement if there is no enclosing started).
    • customize data for merlin
    • refactoring and numerous bugfixes

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

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

See full changelog

Oops, we went looking but didn't find the changelog for this release 🙈

Merlin 1-3

See full changelog
  • backend:

    • added a "locate" command to find the definition location of the given identifier works on the local buffer out of the box and at project level if it the build directories contain cmt files
  • emacs:

    • various bugfixes
    • aesthetic changes for highlighting
    • introduced "semantic movements": add commands (and keybindings) to go to the next/previous phrase
    • support for completion in emacs 23
    • reporting of syntax errors
    • removed "idle-typing" feature
    • asynchronous fetching of types so that long signatures won't make emacs hang
  • extensions:

    • add support for "type nonrec" declaration
    • add support for "with compare" from type-conv
    • add partial support for "with fields" from type-conv
  • misc:

    • added specific support for omake's polling mode
  • vim:

    • ':TypeOf' command now accepts an (optional) argument and tries to type it in the current context (i.e. at cursor position)
    • better catching of errors

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.