From the OCaml Labs wiki
Jump to: navigation, search

OCaml Labs[edit]

OCaml Labs is an initiative within the Cambridge Computer Laboratory set up in 2012 to promote research, growth and collaboration within the wider OCaml community. We manage the day-to-day OCaml maintenance load and align research agendas with real-world projects in order to progress the language and make it available and applicable to a larger audience.

Building on 40 years of language development, together with INRIA our goal is to freely release and integrate all work upstream, allowing all prospective users access to the efficient, expressive and practical language of OCaml. The OCaml Labs team is comprised of researchers at the University of Cambridge Computer Laboratory, our industrial partners, student interns, and individual collaborators.


21 October 2016: ICFP Roundup: Talk Summaries and OCaml Workshop -- Gemma Gordon (talk)

ICFP 2016 is over!

OCaml Labs participated heavily in the conference this year, with 7 presentations at the OCaml Workshop, 7 talks across the co-located workshops, and the OCaml Tutorial afternoon. Thank you to all of our student interns who volunteered at the conference, liveblogged and presented their work!

18 September 2016: ICFP 2016 liveblog available -- Anil Madhavapeddy (talk)

The annual ICFP conference begins today, with the initial workshops kicking off 100s of talks and paper presentations, including several from OCaml Labs.

We've created a liveblog unikernel to keep track of the proceedings, at icfp2016.mirage.io. This is powered by the Canopy system built by Enguerrand Decorne during his internship at OCaml Labs. It uses much of the software pieces built for MirageOS, including Irmin to track the Git data and live update the blog in response to pushes.

If you are at ICFP this week and would like to contribute to the liveblog, your contributions would be most welcome! Just send in a pull request to the Git repository at github.com/ocamllabs/icfp2016-blog or get in touch with a member of OCL to give you direct write access (e.g. ping @avsm on Twitter).

14 September 2016: Effective parallelism with Reagents @ London Facebook Faculty Summit -- Gemma Gordon (talk)

KC was invited to speak at the most recent London Facebook Faculty Summit alongside other faculty guests, Facebook engineers and researchers to discuss recent developments in ML and programming languages.

Lightning talks from guests and hosts kickstarted the day, followed by scheduled talks including Media:Effective_Parallelism_with_Reagents.pdf where KC presented the latest progress in the OCaml Multicore project. Algebraic effects allow cooperative concurrency whilst the Reagents library presents composable lock-free synchronisation using a compare-and-swap method.

15 August 2016: International Summer School on Metaprogramming -- Gemma Gordon (talk)

The Orchard
Hard at work

This summer we hosted the first International Summer School for Metaprogramming at Robinson College, Cambridge. The event was a huge success and it would not have been possible without the generous financial support from our industrial parters: Facebook, Microsoft, Oracle and OCaml Labs. We were fortunate to have an overwhelming number of people register interest, and we welcomed students and speakers from 12 different countries, all with varying expertise and experience in the metaprogramming field. The goal of the school was to present recent research and development in the relatively modest field and we hoped to encourage discussion and collaboration amongst a diverse group of users and researchers.

10 August 2016: Multicore OCaml and Reagents: LDN Functionals @ Jane Street -- Gemma Gordon (talk)


The recent LDN Functionals event at Jane Street was a sell-out with a waiting list, so thankfully Functional Works arranged another packed evening of talks on 2nd August. Yaron Minsky, Sebastian Funk and our own KC Sivaramakrishnan all spoke to an active crowd.

19 July 2016: MirageOS Summer Hackathon Roundup -- Gemma Gordon (talk)

Our first Cambridge-based MirageOS hackathon took place last week - and what a fantastic day it was! The torrential rain may have halted our punting plans, but it didn't stop progress in the Old Library! Darwin College was a fantastic venue, complete with private islands linked by picturesque wooden bridges and an unwavering wifi connection.

Check out the post for more details!

28 June 2016: FP Meetup: OCaml, Facebook and Docker at Jane Street -- Gemma Gordon (talk)

Functional Works hosted their most recent LDN Functionals meetup #7 at Jane Street London on June 14th, and we spent the evening watching some great talks from people representing Facebook, Docker and Jane Street, and chatting with a full house of functional programmers from all backgrounds.

The event was a sell out (possibly in part due to the amazing view from the London office!) thanks to the excellent talks from Sebastian Funk on "Why Functional Programming Doesn't Matter", Josh Watzman from Facebook's Hack team talking about parallelising the Hack typechecker, and Anil representing Docker by delving into the OCaml insides of Docker for Mac and Windows.

16 June 2016: Merlin 2.5.0 released with OCaml 4.03.0 support -- Gemma Gordon (talk)

Frederic Bour has announced the release of Merlin 2.5.0 which is available now on OPAM.

You can see the full list of changes here, but the highlights include:

  • Support for OCaml 4.03 and 4.02
  • OCaml frontend patches rewritten from scratch
  • Custom preprocessor plugin support (currently used in the Reason project)

13 June 2016: Lock-free programming for the masses -- Gemma Gordon (talk)

Progress with multicore is moving forward nicely, and along with submitting PRs for native code support KC has introduced reagents: a composable, lock-free concurrency library for expressing fine-grained parallel programs on multicore OCaml. See the full blog post here.

9 June 2016: A busy spring week at OCL: multicore progress, releases, interns and visitors galore! -- Gemma Gordon (talk)

Spring is an exciting time of year in the lab as we traditionally host a lot of visitors, hold interesting events, and it provides a great opportunity to get collaborators to meet and discuss their ideas and project plans.

This week marked the start of our steady stream of visitors to the lab, and it was great to welcome both new and well-known faces to Cambridge. It's been interesting introducing new interns to the existing group, and watching ideas develop and consolidate over time. It's been a busy few weeks of new projects starting, new releases and updates to existing infrastructure, and our 13th compiler hacking event at the Old Library in Pembroke College provided the perfect venue and opportunity to discuss these ideas.

3 June 2016: International summer school on metaprogramming - Cambridge, UK: 8-12 August -- Gemma Gordon (talk)

Jeremy Yallop and Ohad Kammar are hosting a summer school on metaprogramming this year, at Robinson College, Cambridge. There are 7 great lecturers scheduled to talk about staged and generic programming, including Philip Wadler from the University of Edinburgh, Simon Peyton Jones from MSR, and Oleg Kiselyov from Tohoku University.

Metaprogramming techniques treat program fragments as values to be manipulated, and the summer school seeks to explore state-of-the-art in this approach and its wider application, covering both theory and practice.

The summer school runs from 8-12 August 2016, and will be held at Robinson College. More details, including registration, costs and timetable here.

3 June 2016: Ctypes 0.6 released: async FFI support and improved cross compilation -- Anil Madhavapeddy (talk)

Jeremy Yallop announced the 0.6.0 release of ocaml-ctypes, which is now available on OPAM.

Besides several new features such as support for asynchronous foreign function calls and improved cross compilation support, this release introduces a number of

backwards-incompatible changes, which are described below. If your code is available on OPAM and is affected by these changes then you should have received a pull request with a fix. If you have questions about how to update your code, please feel free to post to the mailing list.

20 May 2016: ARM-ed with Reason -- KC Sivaramakrishnan (talk)

I've been enjoying working with Reason, and looking at ways to combine ARM, Reason and Docker. Check out this tutorial on how to build Reason apps for an ARM target using the Docker for Mac beta program. Reason is packaged as a Docker image, so local installation is unnecessary, and Docker's multiarch support means no need for cross-compilation - what a breeze!

18 May 2016: Pipelines with OCaml: Managing version-controlled data with Datakit -- Gemma Gordon (talk)

Today at OSCON Docker open-sourced (in real-time!) Datakit, Hyperkit and VPNKit - all components of their beta application Docker for Mac and Windows. The app is incredibly popular (with 30,000 signups in the first 24 hours), and releasing the internals allows us to see why.

17 May 2016: A new Reason for OCaml -- Gemma Gordon (talk)

Reason is a collaborative open source project released by Facebook today (HN thread) - and we are incredibly excited to be part of it! Reason is a new approachable interface to the OCaml language, with the long-term goal of improving the developer experience by providing a functional syntax and toolchain for writing, building and sharing code quickly and easily.

10 May 2016: The missing Links compiler - with multi-shot effect handlers -- Gemma Gordon (talk)

Daniel Hillerström visited OCaml Labs for the last two weeks to work on a native backend for Links with effect handlers, based on KC's multicore work in OCaml. It was a very productive couple of weeks, and Daniel managed to implement a compiler for an interesting subset of Links with multi-shot effect handlers.

4 May 2016: MirageOS Hackathon - Trip Reports -- Gemma Gordon (talk)

The first MirageOS hackathon took place this March in Marrakech, and it was a resounding success! With talk of the hackathon ongoing, we collected trip reports from some of those who attended. Read accounts of sun, tajine, cats and hacking!

30 April 2016: Seeing double! Mirage 2.8 and 2.9 released -- Gemma Gordon (talk)

April was a busy month and saw two new MirageOS releases: 2.8 on April 6th, and 2.9 on April 29th.

  • Mirage 2.9 focussed on the tooling around logging, and built on work started at the MirageOS Hackathon. 2.9 includes the mirage command-line tool that allows log reporters to be configured at configuration and runtime, and the ability to disable command-line parsing at runtime.
  • Mirage 2.8 was Mindy's first release and it went without a hitch! It was released alongside TCP/IP 2.8.0 and was a small changeset affecting the STACKV4 module type.

29 April 2016: Firming Up HardCaml -- Mort (talk)

HardCaml was introduced by Andy Ray last year as a way to write RTL hardware descriptions. An OCaml Labs intern, Chaitanya Mangla, spent some time working with HardCaml to go from OCaml code to RTL descriptions to actual FPGA device.

29 April 2016: Migrating to PPX -- Anil Madhavapeddy (talk)

There has been a recent push to migrate libraries away from Camlp4 to the new PPX extension mechanism. I have started a PPX page that gathers together information about how to migrate to PPX.

News Archives 2012-2015

Main Focus[edit]

Progressing the language of OCaml and improving the general ecosystem are the priorities of OCaml Labs, and we strive to do so by having a wide lens on many areas:

The Core OCaml System[edit]

The core system refers to the core compiler toolchain and runtime. This includes language improvements such as new syntax additions, and multicore support for parallelism and concurrency. Recent projects include flambda testing, algebraic effects, modular implicits and AFL.

The OCaml Platform[edit]

Libraries, tooling and documentation are the main features of the Platform, and we aim to maintain and improve these areas, with direction and assistance from our industrial partners, Jane Street, Facebook and Citrix. Current projects include MirageOS, Irmin, TLS, Ctypes, an improved web framework, Docker builds, Codoc and OPAM.


There are many OCaml-related research projects underway at OCaml Labs, and the Computer Laboratory offers the perfect environment for research collaborations, proposal and paper writing and PhD study. Individuals from the group submit research papers often, and present accepted papers at renowned Computer Science, Networking and Systems conferences across the world.

We are currently working on the Databox Project which aims to enable and empower individuals to have more control of their personal data.

Community and Outreach[edit]

The OCaml Labs Team also appear in non-academic circles, presenting talks and demonstrations to the wider community including programming groups, students and financial institutions. We regularly host events both at the lab, in central Cambridge and also London. The Real World OCaml book was released in 2013, and still serves as a popular and useful teaching text for new and seasoned OCaml users alike.

We are always keen on collaboration and if you'd like to work together on a project, please get in touch!

Related Websites[edit]

  • ocaml.org: Main OCaml website maintained by the OCaml community. Try out OCaml with tutorials, and get up to date with documentation and release information
  • opam.ocaml.org: The dedicated OPAM resource for releases, information about packages and documentation
  • INRIA: French Institute for Research in Computer Science and Automation. See the most recent User Manual: 4.03
  • MirageOS: Main site for the MirageOS library operating system including recent feature releases, documentation, package list and collaboration details
  • Docker: An open platform for distributed applications for developers

Notes on OCaml[edit]