Hello Here is the latest OCaml Weekly News, for the week of June 09 to 16, 2026. Table of Contents ───────────────── A line-by-line translation of the OCaml runtime from C to Rust First release candidate for OCaml 5.5.0 OCaml 4.14.3 for Plan 9 Miou, a simple scheduler for OCaml 5 OCaml 4.14.4 released Old CWN A line-by-line translation of the OCaml runtime from C to Rust ══════════════════════════════════════════════════════════════ Archive: Michael Bacarella announced ─────────────────────────── The Rust community owes the OCaml community a debt of gratitude, the first Rust compiler was written in OCaml. In this post we rewrite the OCaml runtime in Rust. Consider it our down payment on repaying the debt. :saluting_face: No Marks Shinwell were harmed[1] /Editor’s note: the post being too long to reproduce in this newsletter, I encourage you to read it online./ First release candidate for OCaml 5.5.0 ═══════════════════════════════════════ Archive: octachron announced ─────────────────── The release of OCaml 5.5.0 is imminent. As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week. If you find any bugs, please report them on the [OCaml's issue tracker]. Compared to the first beta, this release candidate contains two runtime fixes, two standard library fixes, six miscellaneous fixes and one documentation update. The full change log for OCaml 5.5.0 is [available on GitHub]. Happy hacking, Florian Angeletti for the OCaml team. [OCaml's issue tracker] [available on GitHub] Installation instructions ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: ┌──── │ opam update │ opam switch create 5.5.0~rc1 └──── The source code for the release candidate is also directly available on: • GitHub: • OCaml archives at Inria: Fine-tuned compiler configuration ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ If you want to tweak the configuration of the compiler, you can switch to the option variant with: ┌──── │ opam update │ opam switch create ocaml-variants.5.5.0~rc1+options └──── where `' is a space-separated list of `ocaml-option-*' packages. For instance, for a `flambda' and `no-flat-float-array' switch: ┌──── │ opam switch create 5.5.0~rc1+flambda+nffa ocaml-variants.5.5.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array └──── All available options can be listed with `opam search ocaml-option'. Changes since the first beta release ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ◊ Runtime fixes • [#14820]: caml_ba_alloc must account for memory it allocated itself. CAML_BA_SUBARRAY (introduced in 5.2) with data=NULL would result in the Gc accounting for the allocation as 0 bytes, which can eventually lead to OOM. This condition never occurs in the compiler itself, but occurs in external C bindings that attempt to create a new bigarray in the shape of an existing one. For backwards compatibility ignore CAML_BA_SUBARRAY when data is NULL. (Edwin Török, review by Damien Doligez) • …, +[#14722]: runtime, fix in the orphaning of ephemerons (Gabriel Scherer, review by Olivier Nicole and Damien Doligez, report by Jan Midtgaard) [#14820] [#14722] ◊ Standard library fix • [#14853], CVE-2026-41083, OSEC-2026-05: fix quoting of filenames passed to `Filename.quote_command' on Windows. (David Allsopp, report by Andrew Nesbitt, review by Florian Angeletti) • …, +[#14715]: Use POSIX thread-safe getgrnam_r, getgrgid_r, getpwnam_r, getpwuid_r, gmtime_r, localtime_r, getlogin_r, and fix mktime error checking. (Antonin Décimo, review by Florian Angeletti, David Allsopp, Stefan Muenzel, Gabriel Scherer, and Miod Vallat) [#14853] [#14715] ◊ Compiler user-interface fix • [#14702]: Fix hidden directory files leaking into the visible load path table. When a hidden directory contained a file whose basename was already present, the file could be incorrectly added to the visible table. (Hugo Heuzard, review by Florian Angeletti) [#14702] ◊ Compilerlibs fix • [#14797]: avoid dropping attributes attached to package types when pretty printing in surface syntax. (Chet Murthy, review by Nicolás Ojeda Bär) [#14797] ◊ Configuration fixes • [#14484]: Set `_WIN32_WINNT' to require Windows 8/Server 2012 Windows header SDK support. (Antonin Décimo, review by David Allsopp) • [#14760], [#14802], [#14846]: Correct the detection of argument defaults in configure, fixing an incorrect error message when installing OCaml through opam on OpenSUSE with the site-config package installed. (David Allsopp, report and review by Edwin Török) [#14484] [#14760] [#14802] [#14846] ◊ Documentation fix • [#14684], [#14782], [#14838]: Improve ocamlc's and ocamlopt's manual pages and fix small issues in the manual (Samuel Hym, review by Florian Angeletti, Antonin Décimo, Gabriel Scherer and Nicolás Ojeda Bär) [#14684] [#14782] [#14838] ◊ Internal fix • …, +[#14550]: Add the not-root builtin ocamltest action. This allows to skip tests that fail if the current user is root (superuser). (Kate Deplaix, review by Gabriel Scherer, Nicolás Ojeda Bär, and Antonin Décimo) [#14550] OCaml 4.14.3 for Plan 9 ═══════════════════════ Archive: Continuing this thread, Eduardo Cavazos announced ───────────────────────────────────────────────── Here's a demo of the ocaml repl in the acme editor in plan9 and some integration features: The acme-repl demonstrated there is here: Miou, a simple scheduler for OCaml 5 ════════════════════════════════════ Archive: Calascibetta Romain announced ───────────────────────────── I am delighted to announce the release of [miou.0.7.0]. Whilst this release isn’t quite as impressive as previous ones, it now provides us with a pure OCaml implementation of SSH for our unikernels! This release notably introduces `Miou.get', which allows you to wait for and retrieve a task saved in an orphan: for this, we refer you to our documentation available [here]. This release also strengthens our ecosystem in general: following `http', `tls', `tcp/ip', `smtp', `dns' and `ntp', we can now add `ssh' to the protocols available for our unikernels (as well as for OCaml applications in general). It is largely thanks to @hannes’s [work] on migrating from `Cstruct.t' (which we are now deprecating) to `string' (a process we began several years ago following observations of [performance issues with Cstruct.t]) that we have managed to complete `mnet-ssh'. And so, thanks to our work on `notty~/~nottui' (and [~lwd~](github.com/let-def/lwd)), SSH support for unikernels, and one of our MirageOS retreats, we have revived a project developed by @reynir: [banawa-chat]. It is a unikernel that offers "a chat room for everyone" via SSH; you simply need to connect to it to chat with others (a mini IRC) and it provides a TUI even though the unikernel does not recognise the concept of a terminal! The project is available [here] (and an `opam pin' is all you need to obtain `banawa.hvt'). This consolidation is now taking shape with the emergence of a few unikernels and tools, and we’re taking this opportunity to introduce you to a few that are now available: • another older unikernel has just reappeared: [pasteur] and its deployment . It brings our efforts to [`vif'] and demonstrates how to create a simple web application in the form of a unikernel. • [`aussi'] is a small experimental project that can be used with Docker to deploy Solo5 unikernels quite simply (a simple `docker run' is enough now!). However, we still recommend using [albatross] for production deployment. • [`chaos'] has finally crossed the Rubicon. Having started this project a year ago to experiment with our new workflow, this NTP server ("[Chrony]-style") is now available at `osau.re:123' We therefore continue to offer unikernels and actively use them in order to improve them. As such, we would like to thank everyone who provides us with (any kind of) feedback on what we are developing, enabling us to collectively improve what our cooperative can offer the OCaml community (and, more broadly, the users of our unikernels). If you like what we do, you can support us via a donation ([directly] or via [GitHub]). Happy hacking! [miou.0.7.0] [here] [work] [performance issues with Cstruct.t] [banawa-chat] [here] [pasteur] [`vif'] [`aussi'] [albatross] [`chaos'] [Chrony] [directly] [GitHub] OCaml 4.14.4 released ═════════════════════ Archive: octachron announced ─────────────────── We have the pleasure of celebrating the anniversary of the first flight of Ariane 4 by announcing the release of OCaml version 4.14.4[^1]. This release is a collection of safe bug fixes and security fixes for the standard library, cherry-picked from the OCaml 5 branch. The 4.14 branch is expected to receive episodic updates until at least the end of 2026. However, the end of its extended maintenance period is on the horizon. Consequently, please mention to us any obstacle remaining to your migration to OCaml 5. In the meanwhile, do not hesitate to report any bugs on the [OCaml issue tracker]. See the list of changes below for more details. Happy hacking, Florian Angeletti for the OCaml team. — [OCaml issue tracker] Installation Instructions ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ The base compiler can be installed as an opam switch with the following commands: ┌──── │ opam update │ opam switch create 4.14.4 └──── The source code for the release candidate is also directly available on: • [GitHub] • [Inria archive] — [GitHub] [Inria archive] Changes in OCaml 4.14.4 (15 June 2026) ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ◊ Build system: • [#12372], [#14572]: Pass option -no-execute-only to the linker for OpenBSD >= 7.3 so that code sections remain readable, as needed for closure marshaling. Originally backported in 4.14.2, but the flag was accidentally not passed when linking the .so versions of the OCaml runtime libraries or when linking .cmxs files. (Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and Sébastien Hinderer) [#12372] [#14572] ◊ Bug fixes: • [#14599], [#14606]: on ARM64 platforms, ocamlopt was under-estimating the sizes of some instructions. This could lead to overflows in relative branch offsets, reported as errors by the assembler. (Xavier Leroy, review by Vincent Laviron, report by Raphaël Proust) • [#14607]: Fix linking with libasmrun_shared.so on Risc-V (undefined symbol declared riscv.o) (David Allsopp, review by Nicolás Ojeda Bär) • [#14661]: Build dllthreads.so with pthreads flags (removed in [#13018]). For normal programs there's no semantic difference, because ocamlrun and ocamlc.opt are always linked with pthreads, but it was a regression to require programs wishing to dlopen dllthreads.so to have already linked with pthreads themselves. (David Allsopp, review by Gabriel Scherer) • [#14655], [#14691], CVE-2026-34353, OSEC-2026-04: check for size overflow in caml_ba_reshape (Stephen Dolan, review by Xavier Leroy) • [#14853], CVE-2026-41083, OSEC-2026-05: fix quoting of filenames passed to Filename.quote_command on Windows. (David Allsopp, report by Andrew Nesbitt, review by Florian Angeletti) [^1]: The release of OCaml 5.5.0 is planned later this week. [#14599] [#14606] [#14607] [#14661] [#13018] [#14655] [#14691] [#14853] 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]