[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2026-01-20T09:19:26Z

[-- Attachment #1: Type: text/plain, Size: 24220 bytes --]

Hello

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

Table of Contents
─────────────────

Standard Library Team
OCaml Software Foundation: January 2026 update
Dune 3.21.0
Raven Dev Meetings
Ufind 0.2.0
Curious OCaml: Functional Programming in OCaml
Testo 0.3
The dk0 build system
Opam 104: Sharing Your Code, by OCamlPro
Other OCaml News
Old CWN

Standard Library Team
═════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-standard-library-team/17691/1>

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
══════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-software-foundation-january-2026-update/17692/1>

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 :-)

[OCaml Software Foundation] <http://ocaml-sf.org/>

[January 2025]
<https://discuss.ocaml.org/t/ocaml-software-foundation-january-2025-update/15951/6>

[industrial sponsors] <http://ocaml-sf.org/#sponsors>

[Executive Committee] <http://ocaml-sf.org/about-us/>

[INRIA]
<https://en.wikipedia.org/wiki/French_Institute_for_Research_in_Computer_Science_and_Automation>

[ahrefs] <https://ahrefs.com/>

[Jane Street] <https://janestreet.com/>

[Tezos] <https://tezos.com/>

[Bloomberg] <https://bloomberg.com/>

[Lexifi] <https://lexifi.com/>

[SimCorp] <https://simcorp.com/>

[MERCE] <https://www.mitsubishielectric-rce.eu/>

[Tarides] <https://tarides.com/>

[get in touch] <http://ocaml-sf.org/becoming-a-sponsor/>

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!).

[JFLA 2026] <https://jfla.inria.fr/jfla2026.html>

[OCaml Workshop 2025]
<https://ocaml.org/conferences/ocaml-workshop-2025>

[blog post] <https://roscidus.com/blog/blog/2025/11/16/libdrm-ocaml/>

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.

[Cameleer] <https://mariojppereira.github.io/cameleer.html>

[a book] <https://cameleerbook.github.io/CameleerBook/>

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.

[plan for 'transparent ascriptions']
<https://github.com/ocaml/RFCs/pull/54>

[multicoretests] <https://github.com/ocaml-multicore/multicoretests/>

◊ 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].

[OCaml Security Team]
<https://discuss.ocaml.org/t/ann-ocaml-security-team/16902>

[their own activity report]
<https://discuss.ocaml.org/t/ocaml-security-team-2025-end-of-year-report/17689>

◊ 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.

[Caqti] <https://github.com/paurkedal/ocaml-caqti/>

[ctypes] <https://github.com/yallop/ocaml-ctypes/>

[support]
<https://discuss.ocaml.org/t/ann-unicode-17-0-0-update-for-uucd-uucp-uunf-and-uuseg/17236>

[bytesrw]
<https://discuss.ocaml.org/t/ann-bytesrw-0-3-0-the-cryptographic-edition/17450>

[Cmarkit]
<https://discuss.ocaml.org/t/ann-cmarkit-0-4-0-commonmark-parser-and-renderer-for-ocaml/17435>

[release 2.0.0] <https://discuss.ocaml.org/t/ann-cmdliner-2-0-0/17324>

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
═══════════

Archive: <https://discuss.ocaml.org/t/ann-dune-3-21-0/17700/1>

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:

[the release of dune 3.21.0]
<https://github.com/ocaml/dune/releases/tag/3.21.0>

[the full changelog] <https://github.com/ocaml/dune/releases/tag/3.21.0>

[our issues tracker] <https://github.com/ocaml/dune/issues>

Raven Dev Meetings
══════════════════

Archive: <https://discuss.ocaml.org/t/ann-raven-dev-meetings/17596/7>

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
═══════════

Archive: <https://discuss.ocaml.org/t/ann-ufind-0-2-0/17704/1>

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.

[Ufind] <https://github.com/sanette/ufind>

[README]
<https://github.com/sanette/ufind?tab=readme-ov-file#utf8-search-engine-with-parameterized-case-and-accent-sensibility>

[documentation] <https://sanette.github.io/ufind/>

[ubase] <https://github.com/sanette/ubase>

Curious OCaml: Functional Programming in OCaml
══════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/book-curious-ocaml-functional-programming-in-ocaml/17705/1>

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
═════════

Archive: <https://discuss.ocaml.org/t/ann-testo-0-3/17706/1>

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!

[Testo] <https://testocaml.net/>

[open-source project] <https://github.com/semgrep/testo>

The dk0 build system
════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-the-dk0-build-system/17709/1>

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:

• spec: <https://github.com/diskuv/dk/blob/V2_5/docs/SPECIFICATION.md>
• site:
<https://github.com/diskuv/dk?tab=readme-ov-file#dk---a-build-system>

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

[Lua-ML] <https://github.com/lindig/lua-ml>

Opam 104: Sharing Your Code, by OCamlPro
════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/blog-opam-104-sharing-your-code-by-ocamlpro/17710/1>

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

[Opam 104: Sharing Your Code]
<https://ocamlpro.com/blog/2026_01_08_opam_104_sharing_your_code/>

[OCamlPro Blog] <https://ocamlpro.com/blog/>

Other OCaml News
════════════════

>From the ocaml.org blog
───────────────────────

Here are links from many OCaml blogs aggregated at [the ocaml.org
blog].

• [Base Image Builder]
• [Updating ARM64 Workers to Ubuntu Noble]
• [Moving to opam 2.5]
• [Base Fibonacci]
• [More OCaml on Pi Pico 2 W]

[the ocaml.org blog] <https://ocaml.org/blog/>

[Base Image Builder]
<https://www.tunbury.org/2026/01/16/base-image-builder/>

[Updating ARM64 Workers to Ubuntu Noble]
<https://www.tunbury.org/2026/01/16/arm64-workers/>

[Moving to opam 2.5] <https://www.tunbury.org/2026/01/12/opam-25/>

[Base Fibonacci] <https://www.tunbury.org/2026/01/11/base-fibonacci/>

[More OCaml on Pi Pico 2 W]
<https://www.tunbury.org/2026/01/10/ocaml-pico/>

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] <mailto:alan.schmitt@polytechnique.org>

[the archive] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

[Alan Schmitt] <https://alan.petitepomme.net/>

[-- Attachment #2: Type: text/html, Size: 36791 bytes --]