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.
We are pleased to announce that the new and improved OCaml Labs website is here!
This wiki will remain active while we transition our content to ocamllabs.io, but it will be retired eventually. The new site will have all the recent news and exciting developments from OCaml Labs together with links to related projects and people, so it will be easier than ever to keep up to date with everything we are doing.
We hope you enjoy the new site!
We have been refreshing the OCaml GitHub organisation in an effort to better manage the growing number of projects integral to the core OCaml distribution. We are happy to announce that in recognition of its importance to the OCaml language and ecosystem as a whole, Merlin has been promoted as a headline project of OCaml.
Merlin is the defacto editor tool for OCaml, with support for Vim, Emacs, Acme, Atom, Spacemacs, VSCode and Sublime Text. It is maintained by Frédéric Bour and Thomas Refis, and has contributions from over 30 individuals. We hope that Merlin's inclusion in the OCaml core organisation encourages further support and contribution from the community - join the discussion on the Merlin mailing list and get up to date with the current state and future plans using the project roadmap.
The OCaml AFL project started back at the first MirageOS hackathon in Marrakech earlier this year by Mindy Preston, and the patch provided by Stephen Dolan adds support to
ocamloptfor generating afl compatible instrumentation and minimal runtime support to communicate with the fuzzer.
We need more people to fuzz OCaml programs and highlight/fix the subsequent bugs. It's a great project to get started with, and Mindy Preston explains how to fuzz a program here
The new release of Merlin is now available on OPAM.
It can be installed with
opam install merlinor built from sources, available at from the repository.
We are always excited to host interns and visitors to the lab, and we have some new and familiar faces with us this term.
Olivier Nicole: After a very successful few months in the lab over the summer, and providing invaluable help at OCaml Workshop and ICFP, Olivier is back in the lab to continue work on his Macros implementation.
Maxime Lesourd: Maxime finished his Masters in Theoretical Computer Science at ENS de Lyon, and is here for 5 months to continue the previous work started by Armael on the compilation of effects in OCaml using a type directed selective CPS transform.
Takayuki Imada: Takayuki Imada is a researcher at Hitachi Ltd. Japan working on server virtualization hypervisor work. He has interests in Unikernel technology and IoT-related computing frameworks (Fog/edge computing) and is working on improving network performance on MirageOS.
OCaml Labs held the fifteenth compiler hack event on 9th November at Pembroke College with over 20 people in attendance. We opened it up to MirageOS users and developers ahead of the upcoming 3.0 release and welcomed a varied group of students and developers from a huge range of organisations. See the summaries and attendance list here.
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!
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.
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.
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.
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.
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.
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.
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!
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
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
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.
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!
- 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