OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of January 13 to 20, 2026.

Table of Contents

Standard Library Team

Nicolas Ojeda Bar announced

Dear Community,

On behalf of the OCaml developer team, I am happy to announce the formation of a "Standard Library Team" which will take the lead in shepherding, reviewing and generally staying on top of standard library contributions in the service of the community. Its members (and GitHub handles) are:

  • Kate Deplaix @kit-ty-kate
  • Simon Cruanes @c-cube
  • Daniel Bünzli @dbuenzli
  • Léo Andrès @redianthus (previously @zapashcanon)
  • Nicolas Ojeda Bar @nojb (myself, acting as relay with the core dev team)

All of them are experienced users who have made great contributions to the standard library, and the community in general, over the years. Making them part of this team is a way of recognizing a role they already play in many ways. Besides crediting their valuable work, I hope this will encourage them to take even greater responsibility in the evolution of the standard library.

We hope that by putting this team together, we will be able to improve the way standard library contributions are handled: making sure that contributions are acted on in a timely fashion, that decisions are taken (instead of sometimes letting contributions languish without a clear decision), and that a coherent set of criteria and direction is applied to decide what gets integrated into the standard library.

Very much related to this, a document with design guidelines for standard library contributions is being proposed for integration in the compiler repository. This document, which is rather general in character, is meant to guide the work of this team. Everyone is welcome to peruse it.

https://github.com/ocaml/ocaml/pull/14459

Do not hesitate to get back to me or to any other member of the team if you have any questions.

Best wishes, Nicolas

OCaml Software Foundation: January 2026 update

gasche announced

This is an update on recent works of the OCaml Software Foundation, covering our 2025 actions – the previous update was in January 2025. (In the present thread I will mention things that we agreed to fund in 2025; many of the actions that actually happened in 2025 were approved in 2024 and are listed in the previous thread.)

The OCaml Software Foundation is a non-profit foundation that receives funding from industrial sponsors each year, and tries its best to spend it to support and strengthen the OCaml ecosystem and community.

The funding volume we receive each year is around 200K€. (For comparison: this is the yearly cost of one experienced full-time software engineer in many parts of the world.) We do not fund people full-time for long periods. Most actions receive from 3K€ to 20K€. The work to prepare and execute actions is mostly done by the (unpaid) Executive Committee. It is currently formed by Nicolás Ojeda Bär, Damien Doligez, Xavier Leroy, Kim Nguyễn, Virgile Prevosto and myself, with administrative personnel provided by INRIA and general assistance by Alan Schmitt.

Our current sponsors (thanks!) are ahrefs, Jane Street, Tezos, Bloomberg, Lexifi, SimCorp, MERCE and Tarides. (If your company would like to join as a sponsor, please get in touch. Unfortunately, we still cannot efficiently process small donations, so we are not calling for individual donations.)

Feel free to use this thread for questions/suggestions :-)

Education and outreach

We keep funding the OCaml meetups in Paris and Toulouse, France. The meetup in Chennai, India unfortunately seems to be inactive currently. A new meetup is starting in London ( https://discuss.ocaml.org/t/ann-caml-in-the-capital/17428 ), we are setting up funding. (If you want to start an OCaml meeting in some other place, please do not hesitate to get in touch!)

We sponsored the JFLA 2026, a functional programming conference in France. We also sponsored ICFP 2025 in Singapore, and provided financial support for the colocated OCaml Workshop 2025, for PC members and speakers who could not otherwise cover the travel and registration costs.

We recently started funding Thomas Leonard for his time writing excellent technical blog posts about OCaml. The first blog post covered by this support is on his new OCaml library and tool for linux mode setting (very technical!).

Research

The OCaml Software Foundation is typically not involved in funding research, focusing on actions that have a more immediate impact on the language and its community. We do provide recurrent funding to the Cambium research team at INRIA, which corresponds to the funding they received from the OCaml consortium before the OCaml Foundation was created.

This year we also agreed to fund a grant for a long internship on Cameleer, a program-verification tool for OCaml on top of the Why3 verification environment. Mário Perreira, funding recipient and author of Cameleer, also wrote a book on the tool with his student Pedro Gasparinho.

Finally, Jane Street agreed to provide additional funding (roughly one person-year) for the professional expenses of people at INRIA who work on the OCaml compiler.

Ecosystem

  • Compiler

    We supported Tarides for some (a small portion) of the time spent by David Allsopp and Olivier Nicole on compiler maintenance.

    We funded Clément Blaudeau to work on the implementation of the OCaml module system, as a more practical follow-up after his PhD on the OCaml module system. Clément found many small issues and started fixing them, and is now working on a much more ambitious plan for 'transparent ascriptions' in OCaml, which could improve module-checking performance and is a requirement for modular implicits.

    We funded Pierre Boutillier to work on the OCaml bytecode debugger. Pierre Boutillier wanted to provide built-in support for running ocamldebug from Dune, an equivalent of dune utop for a toplevel. He completed the compiler side of the work, but he moved to a different full-time job before attacking the Dune side.

    We funded Thomas Refis to review the "Type error recovery" PR from Xavier van de Woestyne (Tarides), which upstreams a part of the Merlin changes to the typechecker, to make Merlin maintenance easier in the future.

    We funded Jan Midtgaard to keep working on his multicoretests fuzzing suite, which has found various Multicore-related correctness issues in the OCaml runtime and standard library.

  • Infrastructure

    As in previous years, we funded the work of Kate Deplaix to check that the OCaml ecosystem is compatible with upcoming compiler releases.

    We are trying our best to support the work of opam-repository maintainers, through individual funding grants for the active maintainers. This year we supported Tarides for some of the time of Shon Feder on the opam-repository, and we fund Jan Midtgaard for opam-repository maintenance, with in particular a focus on Windows and FreeBSD support.

    Probably the biggest "infrastructure" change which involved the Foundation this year is the OCaml Security Team, which was created by the Foundation as a result of a proposal by Tarides, with in particular generous financial support of Bloomberg. The Security Team just published their own activity report.

  • Tools

    We funded the maintenance of ppxlib by Nathan Rebours.

    We funded development on the opam client by Raja Boujbel (OCamlPro).

    We funded contributions of Ali Caglayan to dune.

    We funded Jules Aiguillon (Tarides) to update ocamlformat for OCaml 5.5.

  • Libraries

    We supported the work of Petter Urkedal on the Caqti library, the main database connection library in the OCaml community.

    We supported the maintenance of the Ocsigen web toolkit.

    We funded the maintenance of ctypes.

    We funded Thomas Leonard to work on a Wayland window manager in OCaml.

    We supported the contributions of Daniel Bünzli to the OCaml ecosystem. This year, Daniel used this support to fund the development of

    • support for Unicode 17.0 in his Unicode libraries
    • bytesrw, a library of composable byte stream readers and writes, extended in version 0.3 for support with various TLS-related crypto algorithms.
    • the 0.4 release of Cmarkit, a CommonMark parser and renderer.
    • release 2.0.0 of the Cmdliner library for command-line argument parsing, bringing support for manpage installation and auto-completion.

Hannes Mehnert asked and gasche replied

Is it true that Tarides sponsors OCSF and at the same time Tarides receives money from OCSF?

It's a mistake on my part, Tarides was not among our sponsors for the reason you mentioned. (We have strict rules not to do this as paying someone who sponsors us could be interpreted as a tax-evasion scheme. This is the same reason why OCamlPro are not sponsors since a few years ago.) Their people are doing useful work that we want to be able to support, and we decided that it was more important than receiving their funding.

Dune 3.21.0

Shon announced

The Dune team is pleased to announce the release of dune 3.21.0.

This is a large release, including dozens of fixes, improvements, and additions, thanks to many contributors. See the full changelog for all changes and contributors.

If you encounter a problem with this release, please report it in our issues tracker.

We also note that @maiste has stepped away from the role of release manager: on behalf of the Dune team, I extend @maiste our thanks for his time doing this important work! :pray:

Raven Dev Meetings

Continuing this thread, Thibaut Mattio announced

We're moving the Raven dev meetings to a monthly basis. The next dev meeting will be Monday, February 2, 2026, at 10:00 AM CET with the same link: https://meet.google.com/giw-bsdy-sjf

We've seen limited interest in the dev meetings so far, so I'm considering discontinuing them after the current Outreachy internships. Let me know if you're in favor of keeping them, that will help gauge the community interest beyond the attendance of the first two meetings.

Ufind 0.2.0

sanette announced

Hello

I'm happy to announce that the Ufind library is now available on opam.

Ufind is a Utf8 search engine with parameterized case and accent sensibility.

Example: I use it daily at work for the following problem: I have lists of names (students, professors) where I Iike to keep all the correct accents (like "Ljubičić", or "Giáp Đông Nghị", or "Hélène", etc.) However, I often have to match these names against other lists from the University administration which, usually, have no or very few accents. I wrote Ufind for this.

Now I can search for "dong" and it will return "Giáp Đông Nghị" (with some ranking score)

See the README file or the documentation for more details.

Internally, ufind uses ubase for dealing with accents/diacritics.

Curious OCaml: Functional Programming in OCaml

Lukasz Stafiniak announced

Hi!

I’m happy to announce a translation of my Functional Programming (in OCaml) lectures into a textbook format, modernized to cover algebraic effects, is complete!

Claude Opus 4.5 did the bulk of the work; GPT-5.2 wrote chapter 10 and tackled the toughest challenges.

HTML version: https://lukstafi.github.io/curious-ocaml/new_book.html

PDF version: https://github.com/lukstafi/curious-ocaml/blob/main/pdfs/new_book.pdf

Website and Markdown original as README: https://github.com/lukstafi/curious-ocaml/tree/main

Enjoy!

Testo 0.3

Martin Jambon announced

Testo 0.3.4 is out!

Testo is an industry-grade test framework for OCaml. It is suitable for unit-testing OCaml code and for end-to-end testing command-line executables. Testo is an open-source project maintained by the OCaml community, with support from Semgrep.

Highlights of this release include:

  • better integration with Dune (testo-template, --chdir)
  • improved Windows support (internal CI checks, CRLF/LF diff highlighting)
  • quick start instructions and revised tutorial

Enjoy!

The dk0 build system

jbeckford announced

It is my pleasure to announce the first official release of dk0. It is a build system with the following features:

  • Written in OCaml with minimal dependencies. Its C code is portable (no depext). The main OCaml dependencies are fmlib-parse and spawn.
  • Language agnostic like Bazel/Buck2.
  • Repeatable builds (my made-up term for a weak form of reproducible builds).
  • Lua scripting for build rules. The Lua implementation is pure OCaml and extends Lua-ML (thanks @lindig et al). In dk0 Lua plays the same role as Starlark in Bazel and Buck2.
  • Dynamic dependencies. This is somewhat esoteric for build systems but important for some languages (OCaml, C++20).
  • Single file scripts. Think uv but for arbitrary languages.
  • Multi-platform federated binary caching with indexed downloads. Think nix binary package caching, but each package can do its own caching in GitHub Actions / etc.
  • Attestations (security)

But repeatable builds means repackaging common system packages (git, tar, etc.) and providing build rules for compilers (msvc, clang, ocamlopt, etc.). That is a difficult, time-consuming assignment, especially when packaging for multiple operating systems (Windows, macOS and Linux).

Status:

  • dk0 is ready enough for making useful packages. However, a few backwards incompatible changes still need to be made and that might require tweaks to packages.
  • Today I have a couple packages; realistically there needs to be 20-30 packages to be useful. OCaml in particular will need a lot of packages that do not exist today.
  • When I complete a new package I'll post an [ANN] similar to new opam packages.

Docs:

On the "site" link above you'll see an example for a single-file script with C# / .NET … that example exists because I needed the script but more importantly because .NET has minimal transitive dependencies. If development goes well I'll replace that with a more useful example that builds a Windows OCaml executable on macOS/Linux (using build rules that download/run wine, msvc, etc.).

If you are interested in contributing packages, I can setup video or audio time to get you or a group started quickly.

Lastly, I happen to like Dune (especially its watch mode) and the simplicity of Alice. Obviously I wouldn't have made dk0 if I didn't need to go beyond what exists today, but dk0 is open-source (libraries are Apache-2.0, executable is OSL-3.0) … I hope libraries can be shared across the different build systems! And because dk0 has dynamic dependencies, it is straightforward for dk0 to wrap other build systems (that is what I did with the .NET build system).

Thanks, Jonah

Opam 104: Sharing Your Code, by OCamlPro

OCamlPro announced

Greetings Cameleers,

We’ve just released a new blog post: Opam 104: Sharing Your Code

This article is the final entry in our opam deep-dives series, and it focuses on a key step in every OCaml project’s life: making it easy for others to work with your code — and sharing it with the wider community.

We cover two practical topics:

  • Quickly setting up a complete development environment for an existing project
  • Releasing your package to the official opam-repository

Along the way, we look at developer-focused opam install workflows, local switches, dependency locking with opam lock, and reproducible setups for teams and CI. We then walk through publishing a package using opam-publish, with a clear explanation of how releases actually make their way into opam.

The post stays hands-on and workflow-oriented, building on the previous Opam 101–103 articles, and wraps up the opam10x series with a full start-to-release pipeline.

:memo: Read it, and the rest of the opam deep-dives on the OCamlPro Blog !

Perfect for developers onboarding to an existing project, or for anyone preparing to publish their first OCaml package, and of course, the curious beginner Cameleer !

As always, feedback welcome!

— The OCamlPro Team

Other OCaml News

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.