OCaml Changelog

RSS

Read the latest releases and updates from the OCaml ecosystem.

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.

Installing

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.

See full changelog

From the changelog:

  • 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
See full changelog
  • OCaml 4.01.0 warnings fix
  • fixed indent of lwt try/finally
  • sort Jane Street tests by priority
  • added support for BENCH syntax
  • added support for the new {xx| |xx} quotation syntax
  • emacs mode: cleaner loading
  • emacs mode: fixed the 'syntax' option
  • emacs mode: workaround an auto-complete.el display bug
  • emacs and vim modes: install in editor-specific directories
  • refactored build system. Install through opam-installer, register libs as ocamlfind sub-packages

Merlin 1.5

See full changelog
  • backend:

    • better handling of paths (both sources and build)
    • split build path into cmi and cmt path. New directives "CMI" and "CMT" are now available in .merlin files ("B" still works as previously)
    • doesn't get confused anymore when the user switch between buffers (the state is cleaned)
  • emacs:

    • adds ability to enable/disable extensions manually
    • adds a command to clear all the errors from a buffer
    • displaying of errors can now be disabled
  • extensions

    • updated bin_prot for version >= 109.45.00
    • bugfix for [with compare] in presence of parametrized types
    • added support for "here" (when activated adds [val here : Lexing.position])
    • added support for [assert_lwt]
    • fixed typing of [while_lwt]
  • vim:

    • vim plugin can be installed into a custom directory and has its own makefile target (contribution from Vsevolod Velichko)
    • added "ClearEnclosing" command to remove merlin's overlay after a call to TypeOf.

Utop 1.10

See full changelog
  • add the -require command line argument to specify packages on the command line

Utop 1.9

See full changelog
  • automatically load all files in $OCAML_TOPLEVEL_PATH/autoload at startup. Can be disabled with autoload: false in ~/.utoprc or -no-autoload.
  • fix #38: handle errors from custom camlp4 ast filters
  • fix #7: avoid a stack overflow in UTop_lexer
See full changelog
  • license change: lessening the GPL to make ocp-indent easier to use as a library
  • removed indent by default after most common operators (when align_ops is set)
  • removed extra-indent in some pattern-matching cases
  • fixed a few bugs related to records, lazy as pattern, "module with"
  • added support for the cstruct syntax extension
  • fixed Makefile to properly install all cmi files, working around an ocp-build bug

Utop 1.8

See full changelog
  • handle new syntax errors
  • extend #typeof to values and modules. Thanks to Thomas Refis for this feature

Utop 1.6

See full changelog
  • hide topfind messages by default
  • more predefined prompts available via #utop_prompt_XXX
  • fix a bug in #require when passing multiple packages
  • display errors in ~/.lambda-term-inputrc nicely
  • doc update
  • fix an issue when using first-class modules

Utop 1.5

See full changelog
  • when evaluating a region/buffer in emacs, evaluate all phrases instead of just the first one. Thanks to Matthias Andreas Benkard for this feature
  • change the default prompt from # to $ to match the standard toplevel
  • add the option UTop.show_box to allow one to hide the completion bar
  • enhance the lwt/async hooks for automatically waiting on a thread/deferred. Hooks were not triggered when the type of the expression was a type alias

Utop 1.4.0

See full changelog
  • hide identifiers starting with _. This can be disabled with UTop.set_hide_reserved false.
  • automatically load camlp4 parsing (with original syntax) when trying to load a syntax extension
  • fix a small bug when using camlp4, causing an exception to be raised when pressing Enter in the middle of a comment

Utop 1.3.0

See full changelog
  • allow to automatically wait for ascync deferred values
  • added the -short-paths options for OCaml >= 4.01.0 (and make it the default)

Utop 1.2.1

See full changelog
  • fix: do not expunge Toploop
  • install a non-expunged version of utop: utop-full
See full changelog
  • Large API rewrite, offering much more flexibility and functionality
  • Still some bug fixes (comments at end, nested ocamldoc tags, etc.)
  • Man-page fixes (thanks to Kaustuv Chaudhuri)
  • Temporarily disabled the non-functional state-marshalling function
  • Emacs mode: auto-disabling indent-tabs-mode by default, it's not compatible anyways.
See full changelog
  • Fixed critical bug with the parsing of the --syntax option
  • a few indent fixes (functor sigs, comments in expressions)
See full changelog
  • Fixed bugs with GADTs, comments at end of modules
  • Fixed compilation with OCaml trunk (warnings as errors)
  • New vim script, contributed by Jonathan Derque
  • New option "strict_else" to allow unindenting after else
See full changelog
  • Lots of fixes
  • Switched most operators and constructs with parentheses to column aligned by default (can be disabled with option align_ops)
  • Better handling of records
  • Some code cleanup (record fields with meaningful names)
  • Documentation and manpage (now relying on cmdliner)
  • Added an option (max_indent) to limit over-indent in the most annoying cases
  • Syntax extensions can now be enabled from the configuration files
See full changelog
  • Small fixes, stabilised ocamldoc indentation
  • Support for configuration files, either user or project-wide
See full changelog
  • Supporting indentation of ocamldoc. In particular, code within ocamldoc blocks {[...]} should be automatically indented
  • Fixed the emacs mode not to set the mark
  • A few new configuration options (strict_with, strict_comments, align_params)
  • A few tweaks and improvements (better empty line indent, etc.)
  • Bugfixes (#43, #47)
See full changelog
  • Indentation of comments now follows ocamldoc conventions properly
  • Partial indent adapts more closely to manual indentation
  • Various small fixes (indent on empty lines, freeform comments...)

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

If you want to contribute to a new release announcement, check out the Contributing Guide on GitHub.