OCaml Changelog

RSS

Read the latest releases and updates from the OCaml ecosystem.

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

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
If you want to contribute to a new release announcement, check out the Contributing Guide on GitHub.