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 Slipshow! doctor 0.3.0: read-only OCaml environment diagnostics Solo5, a sandboxed execution environment for unikernels OCaml compiler office hours Call for Talk Proposals @ OCaml Workshop 2026 Old CWN Caml In The Capital: Register Now! June 3rd ═══════════════════════════════════════════ Archive: 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]. [this link] [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! ═════════ Archive: 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: 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! [dedicated zulip] [linlol] [sponsor] 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 lsp' command, 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/) and `toplevel-attributes' (the attributes for the whole *presentation*). Change `toplevel-attributes' to `attributes' in 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: 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: opam package: Feedback on confusing diagnostics or missing common setup cases would be useful. Thanks! Solo5, a sandboxed execution environment for unikernels ═══════════════════════════════════════════════════════ Archive: 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< │ │ 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<main.ml<= 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]. [Solo5.0.11.0] [`ocaml-solo5'] [slide] [`mnet'] [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: 1) reading and writing Ethernet frames to a _net_ device 2) reading and writing pages to a _block_ device 3) 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 └──── [header] [VirtIO] [Xen] [QubesOS] [BHyve] [VMM] `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 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [Robur] [Capsicum] [pledge(2)] [eventfd(2)] [`iperf3'] [a unikernel] [`mnet'] 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: 1) [Albatross] is a project (also installable via `apt') that allows you to run a daemon capable of launching and monitoring `hvt' unikernels. The advantage is that this service was specifically designed for `hvt' unikernels (although, more recently, we have been able to deploy systems). 2) [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. 3) 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]. [Robur] [Albatross] [dnsvizor] [mollymawk] [`aussi'] [OCI] [Docker] [`annuaire'] [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 [`mnet'] and [`utcp'], 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! [Miou] [`mnet'] [`utcp'] [`mfat'] [`vifu'] 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 ═══════════════════════════ Archive: 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 : 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 ═════════════════════════════════════════════ Archive: 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/] [FPW 2026] [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: • 2025: [https://ocaml.org/conferences/ocaml-workshop-2025] • 2024: [https://ocaml.org/conferences/ocaml-workshop-2024] • 2023: [https://ocaml.org/conferences/ocaml-workshop-2023] • 2022: [https://ocaml.org/conferences/ocaml-workshop-2022] • 2021: [https://ocaml.org/conferences/ocaml-workshop-2021] [https://ocaml.org/conferences/ocaml-workshop-2025] [https://ocaml.org/conferences/ocaml-workshop-2024] [https://ocaml.org/conferences/ocaml-workshop-2023] [https://ocaml.org/conferences/ocaml-workshop-2022] [https://ocaml.org/conferences/ocaml-workshop-2021] 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] [https://types-hotcrp.paris.inria.fr/ocaml26/] [https://icfp25.sigplan.org/home/ocaml-2025#event-overview] ◊ Evaluation Criteria We will evaluate submissions according to: • Relevance for the OCaml community • Rigor and soundness • Novelty • Clarity • Potential to deliver an engaging and informative presentation 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. [Functional Programming Workshops (FPW) 2026] 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. [ML Family Workshop] 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]. [Alan Schmitt] [send me a message] [the archive] [RSS feed of the archives] [caml-list] [Alan Schmitt]