The little type that could too much
The little type that could too much originally published at https://raphael-proust.github.io/code/the-little-type-that-could-too-much.html Part 1: Hashtbl, Mashtbl, Smashtbl, Slashtbl, Clashtbl …
@ocaml
Publisher
80
Posts
The little type that could too much originally published at https://raphael-proust.github.io/code/the-little-type-that-could-too-much.html Part 1: Hashtbl, Mashtbl, Smashtbl, Slashtbl, Clashtbl …
I was on holiday for most of week 29, so just a few high-priority issues to report on.
styled-ppx is a ppx and a library that brings styled components to Melange and OCaml/Reason with type-safe CSS and static extraction.Previously styled-ppx re...
Discover the data-race-freedom modes of OxCaml, and how we tested them on a multicore branch of OCaml's editor service Merlin!
I'm happy to announce that ocaml-wire 1.0.0 is now on opam, installable with opam install wire.
Headline activities have included resolving the scraping attacks, fixing obuilder bugs, and Tessera AMX optimisations.
The week 26 summary worked well, so I’m doing it again. This is really a nine-day week as the last weekly post was on 26 June.
In March 2025 we announced that the Ocsigen project (ocsigenserver, Eliom, ocsigen-toolkit, ocsigen-start, os_template) was experimenting the migration from Lwt to Eio. Through summer 2025 and the second half of 2025 we ran that migration: branch to-eio2 of Eliom (≈5,000 lines changed across 178...
Last week I updated the OpenBSD workers to OCaml 5.5.0 and took that opportunity to deploy OpenBSD 7.8. Shortly after, issue#1061 was opened as jobs randomly failed with an opam parse error.
One of the notable features of the just announced OCaml 5.5 are module-dependent functions, a.k.a. modular explicits. It is a welcome addition: it lets us express higher-ranked types in the simplest way, and is particularly good for typed tagless-final code.
Spoke at CHIA's annual conference on AI for a changing world, as well as the first Cloud-Native Geospatial Forum outside the US, and started moving TESSERA's embeddings onto Source Cooperative.
While I typically write posts as I go, I’ve only managed one this week because there’s been a lot going on. To catch up, I’m going to try to write a summary of the week instead.
The FreeBSD CI workers get slower over time. Is this a build-up on ZFS snapshots or something else?
It’s been a couple of months since the last neocaml release, and the reason is simple — for a while there I was genuinely out of ideas. Back when I shipped 0.6 I declared (again!) that I was done with new features, and this time I almost meant it. But ideas have a way of creeping back in, and 0.9...
The astute reader has probably noticed in the definition above that, in OCaml 5.4.0, the typechecker does accept
2026-06-23 — The Ocsigen team
What's new in OCaml's latest 5.5 update? New features, performance improvements, and bug fixes.
I have now finally finished almost all of the end-of-term duties, incuding marking of 128 Foundations of Computer Science exam questions. Phew! It ended up being quite a week, with the unwelcome additional burden of having my car written off due to a minor prang.
Ten years of the CCI with Sir David Attenborough, Andrew's Royal Society Environment Medal lecture, and the third PROPL at PLDI, while wrapping a local DeepSeek agent in OCaml and a first stab at getting Eio fleshed out on Windows.
2026-06-19 — The Ocsigen team
This post explores two more sustainable solutions to the crawler bots issue affecting opam-repo-ci
Grafana is a visualization of metrics, we use it heavily for observing MirageOS unikernels
Jan reported that opam-repo-ci, opam.ci.ocaml.org, had become unresponsive.
On the base image builder, we have recently seen a significant increase in the number of times we hit the Docker rate limits on manifest pushes. Most of these work on the second attempt, but this week, a new class of permanent manifest push failures has emerged.
Jane Street is known for being an OCaml shop, but for years now Python has been our second major programming language, acting as the primary tool for data an...
A post lives in doc/blog/posts/ and is named YYYY-MM-DD-slug.mld: the date in the file name is its publication date, and wodoc lists the posts newest first, both in the navigation on the left and on this page. The author comes from the standard odoc @author tag.
Made professor at Cambridge, shipped TESSERA v1.1, bound a local DeepSeek into OCaml after Fable cut out, and filled the gaps in io_uring and Eio.
Using a local DeepSeek model as an ordinary OCaml library and building sandboxed agents from simple primitives
TESSERA v1.1 is a drop-in retrained model that fixes the tiling artefacts of v1.0, with embeddings now being served from AWS S3 and model weights up on Hugging Face.
The Windows workers in the windows-x86_64 pool have a habit of quietly falling off the cluster. The ocluster-worker service is still RUNNING, but the scheduler lists the worker as disconnected.
Development update for ocgtk (a set of GTK4 bindings for OCaml), including upcoming support for signals and interfaces, expanded GLib type coverage, and packaging improvements to support other operating systems.
Hello fellow users of OCaml, If you or your students have defended a PhD in 2025 on a topic related to functional programming, then you may apply for the (new) Richard Bird Distinguished Dissertation Award. Announcement copied below.
After deploying the QEMU RISC-V machines, the base image builder ran into issues on the first Docker build.
How we refreshed self-hosted Recoil email with our own RIPE-allocated IPv4 block, and deployed Postfix/rspamd/Dovecot to get full SPF/DKIM/DMARC deliverability.
Scaleway provide the RISC-V workers for OCaml CI, and they have been down for about a week with no real evidence that they’ll be back anytime soon. I can’t provision any new ones as they are “temporarily out of stock”.
By now, you’ll know that I’ve been looking at OCaml CI more than I ever had before and was confused by the solver jobs, which seemed to hang around in the job queue.
While looking at OCaml CI for the FD leak, I noticed some odd pending events in the OCaml CI build graph.
Rewilding the Web workshop in Edinburgh, an OCaml io_uring binding refresh, and GeoTessera 0.9 moves the embeddings to AWS alongside a fresh HuggingFace org.
Mollymawk can now adjust log levels and metric reporting on a per-unikernel basis.
Notes from a wonderfully interdisciplinary Edinburgh workshop on 'Rewilding the Web', ranging coopetition and biological variety through the philosophy of self-organisation, polycrisis governance, protopian science fiction, and moderation seen through the lens of artisanal cheese.
Over the last few weeks, I have restarted the OCaml-CI web container every 3 or 4 days because users are encountering HTTP 502 errors.
After the BBC/ITV media run we had a talk at Pint of Science, two cracking Part II dissertations on CE/TESSERA and OxCaml vector RAG, and put TESSERA v1.1 weights on HuggingFace.
Native OxCaml system packages for Debian/Ubuntu, Fedora, Arch and Homebrew — plus reviving a 2013 GPG key that modern tooling rejects for SHA-1, and using agentic coding to collapse the opam build into one tarball.
Consolidating my OCaml trees for easier OxCaml deployment, shipping native system packages for OxCaml which then got into space, and remembering Peter Neumann
On 23 April, Borealis booted in orbit on DPhi Space's ClusterGate-2: a pure-OCaml CCSDS protocol stack with end-to-end-encrypted command and control and post-quantum key rotation. OxCaml is what comes next.
An update on the voluntary AI disclosure proposal, digesting the security, quality and legal feedback, and some concrete next steps around maintenance intent, multi-repository tooling, and reputation.
The O in OCaml is for its object-oriented extension, but I needed a way to emulate the constraints of inheritance without it. This raised some interesting design questions about how to do it using only the core ML language.
A few days after retiring opam 2.0 from the build pipeline, ocaml-ci Jon noticed that some jobs were failing. I immediately concluded that the removal was to blame, but it wasn’t.
I am delighted to announce the release of miou.0.6.0. This release mainly adds two new features:
Get a comprehensive overview of the definitions, benefits, trade-offs, and use cases of functional programming.
Over the past two weeks I've been mainly wrestling with odoc.
Celebrating David Attenborough's 100th birthday at a Conservation Research Institute retreat in Norwich, a Parliament POST briefing on Evidence for Nature Recovery lands, and a TESSERA talk at the Cambridge Ring alumni evening at Jane Street.
The inspiration for this post came from Dave’s Garage YouTube Channel. It featured dbrll/ATTN-11, which used machine learning on a PDP-11 to reverse a sequence of numbers. I’m not (quite) old enough to remember the PDP-11, but the idea of a minimal machine learning example was intriguing, particu...
ocurrent/docker-base-images publishes the ocaml/opam:* Docker images which the OCaml CI systems use. For each distro, it tracks 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, and master opam release branches in parallel and produces both an opam-version-suffixed tag (e.g. debian-13-ocaml-5.4_opam-2.5) and an un-s...
Running ver in a Windows container doesn’t report the version number that you expect.
Our REDD+ over-crediting paper hits Nature Communications just as Microsoft retreats from removals, we talk responsible evidence synthesis while LLMs appear in UK planning, and oi grows a self-update bootstrap.
Even though I was focussed only on generating GTK bindings for OCaml, I still had to consider all the other libraries it depends on.
When I (mostly) unvendored ocaml-ci’s submodules a few days ago. Four out of the five were published in the opam-repository, but solver-service was not, so it ended up as a pin-depends block in ocaml-ci.opam.template pinned at the same SHA the submodule had pointed at.
Today, looking at my OxCaml inference engine, I wanted to see whether day10 build . could build an OxCaml project.
FreeBSD 15.0 has been out for a while, with issue#1036 pending resolution. The CI update is easy, but the CI worker rosemary needed an upgrade and new base images first.
The same OCaml build matrix updates which where deployed in opam-repo-ci have now been applied to ocaml-ci.
OCurrent has always been Lwt-based but what would it take to migrate it to Eio? The pipeline DSL itself is incremental computation over Current.t, but the engine, the cache, every plugin’s BUILDER/PUBLISHER, the web UI, and capnp-rpc were all built on Lwt.t.
A two week update this week. Most of this fortnight has been spent on different sides of the same problem: getting OCaml documentation into a state where an LLM (or a human) can actually rely on it — search, packaging, performance, and infrastructure.
Updates to opam-repo-ci which pull in the latest ocaml-version and ocaml-dockerfile releases trim the build matrix and add in the latest releases of Alpine and Ubuntu.
Welcoming Akshay to Cambridge, TESSERA AWS sync done, oi now self-hosts this site, and a new 4C forest leakage preprint appears.
Our 2025 ICFP paper was named Publication of the Year by the Cambridge Ring. The story behind how OCaml unikernels ended up running the networking stack inside Docker Desktop.