A Week of Platform Releases: Odig, Odoc, Opam Bundle and More!

Every year, May and June bring a hive of activity to the Computer Lab, and 2017 is no exception!

Our group is becoming more distributed across the globe, and we’ve taken extra steps to encourage communication by adopting the open-source Discourse forum for OCaml. The forum has become very active very quickly, and includes beginner questions, platform discussion and announcements of new releases.

It’s always fun bringing together OCaml contributors from all over the world to discuss their projects and ideas, and when possible, just getting everyone in the same physical room is the most effective boost for the progress of a project. This week we are hosting Daniel Bünzli, Jérémie Dimino, Thomas Refis and Frédéric Bour to explore new features they are adding, and also how to tackle future additions to the OCaml platform and wider toolchain.

Projects and Releases

Jbuilder and Core Jane Street Packages

  • Jbuilder

Jérémie demonstrated the new build system from Jane Street, specifically designed for use with both small and large scale projects, and outlined its future direction. You can view the recording, read a summary and view the manual to get more details.

  • Jane Street Core

We also collaborated with Jane Street on the release of Core v0.9.0: one of the biggest releases of their libraries with a total of 94 packages (32 more than the previous release). New packages covered a wide range of areas, such as shell programming, web programming, standard libraries, Emacs hacking and more. All of this was done using the new CI infrastructure developed by OCaml Labs, seen in #9250, #9187 and #9132 in the OPAM repository.

Documentation with Odig & Odoc

This week’s release of Odoc includes OCaml 4.04 support, and documentation of the tool itself will follow soon. Daniel Bünzli released odig 0.0.2, the command line tool to mine installed OCaml packages. Together with mining library APIs, odig also mines package metadata and generates cross-referenced API documentation for opam switches. Features specific to this release include:

  • Odoc generated API documentation

Odoc is now the default documentation backend for odig, replacing ocamldoc. Future versions of odig will not support ocamldoc, and we encourage users to compare the output from both tools to aid development. You can check the odoc output and ocamldoc output for MirageOS packages and report issues on the odoc tracker.

  • Experimental data-driven toplevel loaders

This feature aims to reduce the need for .ocamlinit files in your projects, and checks for modules in your build directory/package install base and loads the appropriate dependencies. As titled, it is an experimental feature, and issues are tracked here.

Packaging with Opam Bundle

Opam is progressing through a variety of beta releases, and our collaborator Louis Gesbert released opam-bundle 0.1 for self-contained, distributable source package bundles. This tool downloads all package dependencies and parcels them up into a bundle together with the tarball. You can provide feedback on the issue tracker and follow the project progress in the repository.

Proposed future features include bundle generation of pinned packages and/or local switch setups.

Related Posts

Author | Gemma Gordon

Gemma is the Operations Director for the OCaml Labs group in the Cambridge Computer Laboratory, and covers day-to-day management, investigates funding opportunities and organises events.