OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of May 26 to June 02, 2026.
Table of Contents
Caml In The Capital: Register Now! June 3rd
Sacha Ayoun announced
Hi everyone!
Please register for next week's Caml In The Capital on June 3rd at this link. Since it will be hosted at JaneStreet, your registration will make it much easier for them to organise.
Important information: Please bring a photo ID on the day of the event! 🪪 Information about the even can be found on our website.
Logistics
The event will be held at Jane Street's London office, located at 2 & A Half Devonshire Square, Premier Place, London, EC2M 4UJ. Check in will take place in the building lobby - please bring a photo ID with you on the day. ⌛ The event will begin at 17:30 with talks starting around 18:30. 🍕Food and beverages will be served.
Talks
- Dune Package Management
Speaker: Ali Caglayan Abstract: Dune package management is a project with the goal of teaching dune how to build and use opam packages. It has been in active development since 2023, and has started to take shape into something more polished and useful. Although it is still considered it experimental at this stage, I will discuss what is possible with it today (relocatable compiler, lockless building, OxCaml support), discuss some of the features we are currently working on (in-and-out, dev-tools), and finally give a glimpse of the road to stability.
- Opam’s Nix system dependency mechanism
Speaker: Ryan Gibb Abstract: The OCaml language package manager, Opam, has support for interfacing with system package mangers to provide dependencies external to the language. Supporting Nix required re-thinking the abstractions used to interface with traditional package managers, but enables using Opam for development easily whilst benefitting from Nix’s reproducible system dependencies. This provides one example of how Nix interfaces with other software development and deployment technologies.
Slipshow!
Continuing this thread, Paul-Elliot announced
First, a small announcement: Slipshow now has its dedicated zulip! Find help there while you are preparing your presentation, and show off your best works!
It is after completing all the paperwork, that I am officially announcing the next release of lsipshow on opam:
Lspishow 0.11.0: Brazlip
You are not without knowing that a typo can have darmatic consequences. As a result, we want at all cost to avoid committing one.
This release allows splishow to display the errors directly in your editor. plsishow can now see everything you write, and directly reports any warning, typo or other terrorist misbehavior, for your own protection.
Here is the live recording of a typo corrected in one of our presentation:
https://github.com/user-attachments/assets/ac675cdf-1d08-41e4-b384-25a3bfd764ef
The LPS server supports:
- Displaying errors in opened buffers,
- Completion for IDs in actions using IDs as arguments
- Displaying documentation on hover for actions
- Highlighting occurrences of an ID
- Jump to definition for a given ID
- Multi-file presentations
- Synchronized preview server
- Compilation on save
Every release, I'm amazed to find a new, incredible, OCmal library. This time, it is linlol, from @c-cbue. Thank you so much for creating and maintaining it!
As alwyas, I'd also like to thank NNLet for their generous and invaluable support, and… ❤️ my sponsor!
$ opam update $ opam upgrade sipshow
You can find the full changelog, as the PSL server is not the only improvement of this release!
Added
- Add a visual indicator for the state of the previewer (disconnected, refreshing, …) (#220, #222)
- Allow frontmatter in included files (#228)
- (#229) Add an LSP server, available though the
slipshow lspcommand, to interact with your editor. The server supports:- Diagnostics
- Documentation for actions on hover
- Go to definition (from IDs in action, to the associated element)
- Occurrences of ID
- Completion for IDs in actions
- Add preview server capabilities to the LSP server (#233)
- Add more syntax to include raw html, either in the file or as external file (#236)
Changed
- In frontmatter, distinguish between
attributes(the attributes for the whole file) andtoplevel-attributes(the attributes for the whole presentation). Changetoplevel-attributestoattributesin your presentation to fix the breaking change. (#229)
Fixed
- Fixed hot-reload not resuming after a disconnect (#220)
doctor 0.3.0: read-only OCaml environment diagnostics
Archive: https://discuss.ocaml.org/t/ann-doctor-0-3-0-read-only-ocaml-environment-diagnostics/18186/1
Funwithcthulhu announced
Hi,
I released doctor 0.3.0.
doctor is a small read-only CLI for checking a local OCaml development environment. It reports common setup issues around opam, switches, PATH, dune, ocaml-lsp-server, ocamlformat, and the VS Code OCaml Platform extension.
Install:
opam update opam install doctor
Basic use:
doctor check doctor check --json
The 0.3.0 release focuses on opam switch environment diagnostics. In particular, it tries to distinguish missing tools from cases where opam has an active switch but the current shell has not loaded that switch environment.
For example, it can report when ocaml resolves outside the active switch, or when installed switch tools such as dune, ocamllsp, or ocamlformat are missing from PATH.
The command does not run opam init, create switches, install packages, or edit shell/editor files. It only reports what it sees and suggests commands to run manually.
JSON output is intended for editor integrations or small scripts that want stable diagnostic names and exit-code mapping.
Repository:
https://github.com/funwithcthulhu/doctor
opam package:
https://opam.ocaml.org/packages/doctor/
Feedback on confusing diagnostics or missing common setup cases would be useful.
Thanks!
Solo5, a sandboxed execution environment for unikernels
Archive: https://discuss.ocaml.org/t/ann-solo5-a-sandboxed-execution-environment-for-unikernels/18191/1
Calascibetta Romain announced
I am delighted to announce the release of Solo5.0.11.0. This release is significant as it marks the start of performance improvements for our unikernels in OCaml.
Although the project is written in C, it is a cornerstone of unikernel development. OCaml support is provided via ocaml-solo5 (which tracks the OCaml compiler versions). Here is a simple example of a Solo5 (hvt) unikernel with OCaml:
$ opam install ocaml-solo5
$ eval $(opam env)
$ cat >startup.c<<EOF
#include "solo5.h"
#include <caml/callback.h>
static char *argv[] = { "unikernel", NULL };
void _nolibc_init(uintptr_t, size_t);
int solo5_app_main(const struct solo5_start_info *si) {
_nolibc_init(si->heap_start, si->heap_size);
caml_startup(argv);
return (0);
}
EOF
$ cat >manifest.json<<EOF
{
"type": "solo5.manifest",
"version": 1,
"devices": []
}
EOF
$ cat >main.ml<<EOF
let () = print_endline "Hello World!"
EOF
$ solo5-elftool gen-manifest manifest.json manifest.c
$ ocamlfind -toolchain solo5 opt \
manifest.c startup.c main.ml \
-cclib "-z solo5-abi=hvt" -o main.hvt
$ solo5-hvt -- main.hvt
| ___|
__| _ \ | _ \ __ \
\__ \ ( | | ( | ) |
____/\___/ _|\___/____/
Solo5: Bindings version v0.11.0
Solo5: Memory map: 512 MB addressable:
Solo5: reserved @ (0x0 - 0xfffff)
Solo5: text @ (0x100000 - 0x14efff)
Solo5: rodata @ (0x14f000 - 0x166fff)
Solo5: data @ (0x167000 - 0x371fff)
Solo5: heap >= 0x372000 < stack < 0x20000000
Hello World!
Solo5: solo5_exit(0) called
If you'd like to find out more about developing unikernels in OCaml, we recommend reading our slide (at the last MirageOS retreat) or tutorial on mnet, available here.
What is Solo5?
Solo5 is both a C framework and a set of tools for creating and running programmes within a sandbox that, initially, allows only 5 interactions with the outside world:
- reading and writing Ethernet frames to a net device
- reading and writing pages to a block device
- exit
All the functions available in the sandboxed environment are described in this header.
What is notable about Solo5 is that this API works with VirtIO, Xen (and QubesOS) and our minimalist hypervisor hvt (which runs on KVM, BHyve and VMM). This means that a Solo5 application can be deployed across a wide range of platforms. On Ubuntu, you can install Solo5 via:
$ curl -fsSL https://apt.robur.coop/gpg.pub | \
gpg --dearmor > /etc/apt/trusted.gpg.d/apt.robur.coop.gpg
$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/apt.robur.coop.gpg] https://apt.robur.coop ubuntu-24.04 main" > /etc/apt/sources.list.d/robur.list
$ apt update
$ apt install solo5
hvt unikernels
At Robur, we prefer to build hvt unikernels. These unikernels only require the solo5-hvt "tender" (~200 KB) to run, which is available on Linux, FreeBSD and OpenBSD (WSL supports what is known as nested virtualisation, so it is also possible to run a unikernel on WSL!).
The advantage of hvt is its minimalism (a hallmark of Solo5 in general). This latest release completes the sandboxing on Linux by using libseccomp to retain privileges only for what is necessary to run the unikernel (which amounts to 18 system calls in total). This sandboxing was already available for FreeBSD with Capsicum and OpenBSD with pledge(2).
This release also marks an improvement in throughput when writing Ethernet frames to a tap interface on Linux, achieved through the use of eventfd(2) and a parallel thread that writes directly to the tap interface. This allows us to use fewer costly VM exits.
To this end, we ran a benchmark using iperf3 (and a unikernel implementing this protocol with mnet) to demonstrate the improvement in throughput.
| solo5.0.10.1 | solo5.0.11.0 |
|---|---|
| ~700 Mbits/sec | ~2.15 Gbits/sec |
Deploy unikernels
At Robur, we aim to make deploying unikernels as straightforward as possible. That is why we have developed a suite of software and unikernels designed to deploy a range of services:
- Albatross is a project (also installable via
apt) that allows you to run a daemon capable of launching and monitoringhvtunikernels. The advantage is that this service was specifically designed forhvtunikernels (although, more recently, we have been able to deploy systems). - dnsvizor is one of our unikernels that resolves the issue of IP addressing and DNS resolution. The idea is to launch such a unikernel and have subsequent ones configure their networks in relation to it.
- Finally, we are actively developing mollymawk, a unikernel that provides a web interface for Albatross to enable the deployment of new unikernels (in the simplest way possible).
We have also developed aussi (still very much in the experimental stage), which is an OCI runtime for our unikernels. Among other things, this allows us to use Docker to build and deploy our unikernels. An example using our unikernels annuaire is available here.
Develop unikernels
Finally, there is the other aspect of unikernels and their development. At Robur, we are therefore trying to develop libraries (particularly protocols and formats) to help potential new users develop new unikernels themselves (so that there is a sense of ownership).
So please do not hesitate to ask us any questions on this subject!
In this regard, for several years now we have been developing a number of libraries that enable the development of standard unikernels:
- we are continuing to develop Miou as our scheduler for our unikernels (as well as our services)
- we are developing
mnetandutcp, which is our new TCP/IP stack for our unikernels mfat, a FAT32 file system for unikernels, is also available- and finally
vifu, a web framework for developing your website as a unikernel, is also available - and many other projects that we have been maintaining for several years now!
Conclusion
This release gives us the opportunity to provide a comprehensive (and accessible) overview of our cooperative’s work. This work essentially involves creating the necessary components for the development and deployment of unikernels in OCaml, whilst embracing the idea of reclaiming control over the means of communication and production.
Happy hacking!
OCaml compiler office hours
Continuing this thread,gasche announced
Dear all,
This is a reminder that the OCaml Compiler Office Hours will take place again next week, on Friday June 5th at 11:00-12:00 UTC (in local time, [date-range from=2026-06-05T11:00:00 to=2026-06-05T12:00:00 timezone=UTC]).
The collaborative notes for this meeting are available at : https://notes.irif.fr/UGGkT7aqTpmOCsqvW2VFZQ They are mostly empty so far, please feel free to add topics that you would like to see discussed in the meeting. (It's fine to put a question here even if you cannot attend anyway, we can answer it anyway and it leads to good discussions.)
The video link is also there, and it may still change.
Call for Talk Proposals @ OCaml Workshop 2026
Sudha Parimala announced
Hi all! This year's OCaml workshop will take place in Paris. We are happy to invite submissions to the workshop.
Important Information
- Location: Paris (co-located with FPW 2026)
- Date: August 27th (Subject to change! Possible alternative: August 31st)
- Submission deadline: July 1st, AoE
- Speaker notification: July 27th
- Submission website: https://types-hotcrp.paris.inria.fr/ocaml26/
Scope
The OCaml Workshop welcomes a broad audience of OCaml users ranging from enthusiasts who are discovering the magic of OCaml to wizards well-proficient in the cast of unsafe spells. Their common denominator is their passion for OCaml and the desire to learn more, connect with fellow OCamlers, and collectively find ways to improve the language.
We invite talk proposals just as broad: anything OCaml related is welcome!
The topics are not limited to the following, but, to give an idea, examples from previous years include: OCaml editing tools, verified OCaml artefacts, interoperability between OCaml and other languages, the OCaml code of conduct, compiler optimisations, OS portability, OCaml testing frameworks, packages for concurrency in OCaml, etc.
The full catalogue from previous editions can be accessed through the links below:
Format
In addition to the Standard Talk format of 20 minutes, we allow the following formats:
- Demo. 30 minutes tutorial-style demonstration of a tool.
- Informed Position. 20 minutes presentation on topics in the design space of OCaml (such as, but not limited to, the inclusion or removal of a feature).
- Experience Report. 20 minutes report on the use of OCaml or a tool.
Submission
The submission website is available at: https://types-hotcrp.paris.inria.fr/ocaml26/
Please submit a description of the talk (typically two to three pages long; it could also be less or more): the problems that are addressed and the solutions or methods that are proposed. If you believe the delivery itself is a unique feature of the talk, please feel free to also include a description of how you plan to deliver the talk.
LaTeX-produced PDFs are common but not required.
Last year's accepted presentations are available online: https://icfp25.sigplan.org/home/ocaml-2025#event-overview
Recommendations on LLM Usage
Proposals largely written by LLMs are not acceptable and will be desk-rejected. The use of LLMs to correct grammar and enhance style is perfectly fine (especially if English is not your first language), but their use to produce material directly is dangerous and unprofessional, and undermines both authorship and reviewer effort.
Location Information
This edition of the Caml Workshop will be located in Paris as part of Functional Programming Workshops (FPW) 2026, alongside other workshops and events taking place at the end of August. This is a departure from the usual habit of having the OCaml Workshop co-located with ICFP. Because some FPW'26 events are bi-located with ICFP, the events will take place at roughly the same dates.
Co-ordination with ML Workshop
The ML Family Workshop is also co-located with FW '26 this year and may be of interest to attendees. While the OCaml Workshop focuses on developments in the OCaml ecosystem, the ML Workshop is language-agnostic and more research oriented. Authors whose submissions fit both venues are welcome to indicate this at submission time or reach out to the program chairs.
Program Committee
- Clément Allain
- Pedro Carrott
- Simon Cruanes
- Marko Doko
- Patrick Ferris
- Jean-Christophe Filliâtre
- Sadiq Jaffer
- Robbert Krebbers
- Vincent Laviron
- Tim McGilchrist
- António Monteiro
- Carine Morel
- Andreas Rossberg
- Vimala Soundarapandian
- Jérôme Vouillon
- John Whitington
- Paulo de Vilhena (Chair)
- Sudha Parimala (Chair)
Old CWN
If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.
If you also wish to receive it every week by mail, you may subscribe to the caml-list.