What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP / Oct 2025
This is part 5 of a See also in the ICFP25 series: chairing PROPL25, the OxCaml tutorial, multicore at Jane Street and Docker, post-POSIX IO and what I learnt.
In addition to giving a bunch of talks about
Read full note... (2017 words)
It's time to go post-POSIX at ICFP/SPLASH 2025 / Oct 2025
This is part 4 of 5 of a See also in the ICFP25 series: chairing PROPL25, the OxCaml tutorial, multicore at Jane Street and Docker, post-POSIX IO and what I learnt.
After the excitement of presenting my
I'd started to believe it was time for change in the way we approach IO about 12 years ago when I talked about wierd IO behaviour to a packed audience at FOSDEM, and now I believe it's even more true in 2025.
So I made one key argument to the audience: it's time to accept that standards such as POSIX are now holding back the development of good language runtimes, and we need to embrace the diversity of highly concurrent, shared-memory interfaces. And unfortunately, there's no portable subset amongst these, and so this may require a rethink of our frontend language interfaces as well.

Jane Street and Docker on moving to OCaml 5 at ICFP/SPLASH 2025 / Oct 2025
This is part 3 of 5 of a See also in the ICFP25 series: chairing PROPL25, the OxCaml tutorial, multicore at Jane Street and Docker, post-POSIX IO and what I learnt.
It's been about six years since we wrote the papers on parallelism and
Meanwhile, big OCaml users have also been adapting their codebases to shift from OCaml 4 to 5. Jane Street have expanded their tools and compiler team and driven through their production switch to the multicore runtime, and Docker for Desktop is progressing with their switch to direct-style code via Eio for hundreds of millions of users! Read on to learn more...
Read full note... (1839 words)
Holding an OxCaml tutorial at ICFP/SPLASH 2025 / Oct 2025
This is part 2 of 5 of a See also in the ICFP25 series: chairing PROPL25, the OxCaml tutorial, multicore at Jane Street and Docker, post-POSIX IO and what I learnt.
Several extensions to "oxidize" OCaml (Rust performancew with ML ergonomics!) have been developing rapidly in a fork called OxCaml. I helped an intrepid crew from Jane Street, IIT-M, Tarides, Brown and Cambridge pull together a really fun tutorial in ICFP 2025 that you can try out too! TL;DR: Work through the online slides, try the activities, and take the quiz to give us feedback.

Read full note... (1485 words)
mlgpx is the first Tangled-hosted package available on opam / Aug 2025
Since I wrote about the new
First, and most excitingly, they've added continuous integration via Spindles which are built in a nice ATProto style:
When you push code or open a pull request, the knot hosting your repository emits a pipeline event (sh.tangled.pipeline). Running as a dedicated service, spindle subscribes to these events via websocket connections to your knot.
The pipelines are Nix-only right now, so I braved using it ...with the help of my trusty local Nixer Ryan Gibb. Noone should ever Nix by themselves.
Secondly, the service has added support for JJ stacked pull requests, which are the closest I've seen to the Jane Street Iron diff workflow which I've been wanting to try in open source for ages. You can see the interdiff review process on a recent PR by Winter who add support for engine-agnostic Spindle workflows, which should pave the path for a Docker or BuildKit engine alongside the existing Nixery-based one.
And thirdly, the general quality-of-life of the web frontend has improved dramatically, with a nice timeline, repo list, and profile pages. I'm running two knots right now (one on Recoil, and one in the Cambridge Computer Lab), and both have been very painfree. I wrote one of the earliest Dockerfiles for it, but there's now a community-maintained Knot Docker setup which I've switched to. Doesn't take very long at all; give it a try!
Because I've been using Tangled so much, I added support for Tangled metadata to Dune to make OCaml package maintainence easier. This will appear in Dune 3.21 in a few months, but in the meanwhile enjoy the first Tangled.sh package on opam. It's a simple GPX library I used in my dune-project will be:
(lang dune 3.21)
(name mlgpx)
(generate_opam_files true)
(source (tangled @anil.recoil.org/ocaml-gpx))
The only major thing I'm missing from Tangled is support for private repositories now, but I'm very content using it for public content today. Beware as usual that it's still in alpha, so don't trust super-ultra-mega-important stuff to it unless you've git mirrored elsewhere.
Cresting the OCaml AI humps / Jul 2025
I've been hacking with
We jotted down our notes in a draft paper to keep track of everything going on, including summarising previous experiments with Qwen3 for FoCS. Since then, there's been a flurry of extra activity from others which we need to integrate!
Marcello Seri started pushing to my vibe coded OCaml MCP library, making him user number 2 of that!- Then
Thibaut Mattio announced a bunch of software, starting with a collection of libraries and tools for numerical computing and machine learning and also another MCP server. I haven't had a chance to try the MCP server yet, but I hope I can retire mine... Thomas Gazagnaire started hacking on an agent-friendly merlint tool that spots common problems in style and choices and gives CLI feedback in a style easily consumed by claude. I've started using it despite its pre-alpha status.Jon Ludlam 's been getting the opam embeddings into shape to be suitable as an MCP server that can search the entire opam ecosystem. odoc v3 has also gone live after lots of work, andDavid Sancho 's support for Markdown odoc output on which makes this process easier.
This is all fairly straightforward MCP work that improves the short-term experience. We'll get to the RL-VR ideas later... If anyone else is hacking on something agent related do post on OCaml Discuss and let us know! I'm hoping to update the paper later in August to roundup the efforts above.
Webassembly on exotic architectures (a 2025 roundup) / Apr 2025
It's about the time of the academic year to come up with project ideas!
Read full note... (1130 words)
Unikernels wins the ASPLOS most influential paper award / Apr 2025
I was gobsmacked to get a note from the SIGARCH ASPLOS steering committee that our 2013 paper "
Read full note... (1524 words)
Socially self-hosting source code with Tangled on Bluesky / Mar 2025
I've been an avid user of GitHub since its launch, and it really has revolutionised how communities come together to work on open source. In recent years though, I find myself utterly overwhelmed by its notifications and want to experiment with alternative workflows. This experimentation also has a more serious undertone due to the increasing need for data sovereignty and so I'm starting to move my source code to self-hosted solutions that are less reliant on centralised services.
This has also come up persistently over the years in the OCaml community, with questions over why participation in packaging requires a GitHub account ever since the
"Tangled" is a new service launched (just yesterday!) by opilli and icyphox to manage Git repositories. I'm having a lot of fun trying it out, even in its early alpha stages! The coolest thing about Tangled is that you can self-host your own knots, which control where the source code repositories are actually stored.
Read full note... (1104 words)
Are you still using OCaml 4.08 or earlier? If so, we need to know (via ocaml.org) / Mar 2025
I started pushing OCaml Docker images over to the Docker Hub in around 2017, to support the burgeoning automated build infrastructure around the use of the language. Back then, OCaml 4.06 was the latest release, and so I wrote an ocaml-version library to track the release metadata. It has been a bit of a success disaster, as that library now tracks every release of OCaml in the modern era, and also backs the automatic building of a huge array of compiler versions and variants across Linux and Windows.
The problem is...we're now building the full set of images from OCaml 4.02 onwards through to the latest OCaml 5.3.0 release, which is unsustainable for obvious reasons; despite the hosting being kindly sponsored by Docker, we must also consider the carbon footprint of our infrastructure. So the question for the OCaml community: are there are any remaining users who still need images earlier than OCaml 4.08 or can we can stop pushing those now?
Oh my Claude, we need agentic copilot sandboxing right now / Mar 2025
TL;DR: Claude Coder generated working OCaml code almost from scratch, ranging from C bindings to high-level OCaml interface files and even Cmdliner terms, but needs a more sophisticated sandboxing model before something goes horribly wrong. So much potential and so much danger awaits us. Coincidentally
Read full note... (2125 words)
Using AT Proto for more than just Bluesky posts / Feb 2025
While Bluesky is taking off like a rocket, a number of us
Programming FPGAs using OCaml / Feb 2025
With the vast amount of data we have these days for our
FPGAs are a very flexible way to execute boolean combinatorial logic, but are notoriously difficult to program. We have two possible angles to explore to address this. One is to design more declarative DSLs for data processing that compile to the FPGAs, such as
Read full note... (1214 words)
How to publish custom Homebrew taps for OCaml / Jan 2025
Now that I've
I mainly use a variety of macOS and Linux hosts Let's leave OpenBSD support to another day!brew install avsm/ocaml/srcsetter" and have it install a working binary version of my CLI utility. In this case, it's srcsetter, a simple tool I knocked up to generate the responsive images on this website. Luckily, Homebrew has made this really easy for us! They have a BrewTestBot that integrates with GitHub Actions to automate the compilation of binary packages for us, all from a convenient PR-like workflow.
Foundations of Computer Science / Jan 2025
Here are the various repos used to create the interactive
Programming for the Planet / May 2024
I was invited by Mary Sheeran to deliver a keynoted at Lambda Days, and I decided to go along to talk about my work on
State of the OCaml Platform 2023 / Sep 2023
We deliver the annual presentation about the OCaml Platform in the OCaml Workshop at ICFP 2023.
This paper reflects on a decade of progress and developments within the OCaml Platform, from its inception in 2013 with the release of opam 1.0, to today where it stands as a robust toolchain for OCaml developers. We review the last three years in detail, emphasizing the advancements and innovations that have shaped the OCaml development landscape and highlighting key milestones such as the migration to Dune as the primary build system, and the development of a Language Server Protocol (LSP) server for OCaml.
Eio 1.0 – Effects-based IO for OCaml 5 / Sep 2023
An update on the OCaml EIO library at the OCaml Workshop 2023. Tom Leonard led this presentation on the release of Eio 1.0, which brings effects-based IO to OCaml 5. This is a big deal for the OCaml ecosystem as it provides a modern approach to concurrent programming using algebraic effects rather than monads or callbacks. The library has been under development for a while and reaching 1.0 is a significant milestone. It's particularly exciting because it takes advantage of OCaml 5's new effect handlers to provide a clean, composable interface for IO operations that feels natural in the language.
OCaml wins the ACM Programming Language Software award (via ACM) / Jun 2023
I was honoured to be included in the OCaml team that won the ACM Programming Languages Software Award for 2023.
The Association for Computing Machinery (ACM), the world's largest association of computing professionals, today gave the 2023 SIGPLAN Award to a group of developers for their work on the functional programming language OCaml.
The award was presented at the annual SIGPLAN Programming Language Design and Implementation Conference to a group of researchers and developers including our colleague Anil Madhavapeddy, Professor of Planetary Computing here.
The prestigious Programming Languages Software Award is given annually "to an institution or individual(s) to recognise the development of a software system that has had a significant impact on programming language research, implementations, and tools," ACM says.
See also the main ACM Award Page citation:
The OCaml Compiler Distribution is the reference implementation of the OCaml language, a dialect of ML that aims to be pragmatic, both in language features and implementation, encouraging a simple programming style that yields good performance and usability. It has a large user base in industry, research, and education throughout the world, and was used to implement a number of other impactful systems, notably in verification: Coq proof assistant, CompCert verified compiler, Why3 verified programming environment, Frama-C, Astrée and Gillian static analyzers, Infer, Hack and Flow projects at Meta, SLAM/SDV and F* at Microsoft, etc. -- ACM SIGPLAN
The 2nd ed of Real World OCaml is available in shops / Oct 2022
I'm delighted to report that the second edition of Real World OCaml is now available from Cambridge University Press! It's also freely available online, and CUP also kindly agreed that the PDF version could be freely available online thanks to sponsorship from Tarides.
Homogeneous Builds with OBuilder and OCaml / Sep 2022
Paper on our incremental computation DSL OCurrent presented at OCaml Workshop 2022 with Tim McGilchrist, David Allsopp, Patrick Ferris, and others. OCurrent provides a declarative way to express CI/CD pipelines as incremental computations that automatically track dependencies and cache results. Combined with OBuilder for reproducible builds, it enables homogeneous build infrastructure across different platforms - the foundation powering OCaml-CI and other OCaml ecosystem infrastructure.
OCaml Multicore Monthly: heading towards OCaml 5.0 (via OCaml.org) / Apr 2022
We're getting closer to a stable release of OCaml 5.0, including reenabling support for the BSDs and introducing ARM64 multicore support.
OCaml Multicore Monthly: post merge activites (via OCaml.org) / Feb 2022
After we got the massive OCaml 5.0 pull request merged, we've taken some time to consolidate the trunk branch of OCaml and start down the release path towards getting OCaml 5.0 out of the door.
OCaml Multicore Monthly: code review complete with Inria (via OCaml.org) / Dec 2021
We've been working hard on OCaml multicore support, and went over to Paris to sit down with some core developers from Inria and work through code review of our proposed patches.
What is an Operating System? (via Signals and Threads) / Nov 2021
I am the latest person to feature on the first season of the Signals and
Threads podcast
hosted by
Anil Madhavapeddy is an academic, author, engineer, entrepreneur, and OCaml aficionado. In this episode, Anil and Ron consider the evolving role of operating systems, security on the internet, and the pending arrival (at last!) of OCaml 5.0. They also discuss using Raspberry Pis to fight climate change; the programming inspiration found in British pubs and on Moroccan beaches; and the time Anil went to a party, got drunk, and woke up with a job working on the Mars Polar Lander. -- Signals and Threads
I think I might be the first non- Jane Street person to be on their podcast! Quite the honour.