OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of March 10 to 17, 2026.

Table of Contents

Public securiy meeting

Hannes Mehnert announced

Dear everyone,

as a reminder – next week Thursday (March 19th) 14:00 CEST, there will be a public OCaml security meeting hosted by the https://ocaml.org/security team. We will meet at https://meet.bornhack.dk/OCamlSecurityPublicMeeting

Our agenda and notes will be at https://pad.data.coop/Ie5voBePSiKvjZdEko6otQ#

If you're curious, the notes from our last meeting are at https://pad.data.coop/7-Ic5rG6ToynsW02hJsndg

Hope to see you there!

Google OR-Tools: CP-SAT Subset

Timothy Bourke announced

The Google OR-Tools are a suite of tools for solving optimization problems. They include, in particular, CP-SAT, which is a powerful constraint solver and optimizer for integer linear programming and boolean satisfiability problems.

The ocaml-ortools package provides an OCaml interface to a subset of CP-SAT constraints. It comprises two parts `ortools`, which allows modelling constraint problems in OCaml and translating them to a protocol buffer format (thanks to ocaml-protc), and `ortools_solvers`, which allows an embedded version of CP-SAT to be called directly from OCaml. Both parts can be installed using opam or built with dune. The latter includes the source of OR-Tools 9.15 which is built together with most of its libraries and installed as part of the opam package.

Some simple examples can be found in the online documentation and source code. They can be built using the following commands.

opam install ortools ortools_solvers
ocamlfind ocamlopt -o prog -package ortools -package ortools_solvers -linkpkg prog.ml

I would be happy to accept pull requests for the missing CP-SAT constraints (I think it best to develop the interface together with real applications, and I only need the ILP and boolean parts at the moment), to translate more of the standard example programs (an easy way to contribute), and to include other solvers from the suite (likely to involve solving tedious compilation and compatibility problems across multiple platforms).

Thanks to @nojb, @Rucikir , and others for their help with dune, and @xvw and @panglesd for their help with odoc. Thanks to @jmid , @mseri , and @avsm for discussing and merging my opam-repository pull requests.

Neocaml-mode (A modern Emacs major mode for OCaml) is looking for testers

Continuing this thread, Bozhidar Batsov announced

FYI - https://github.com/bbatsov/neocaml/releases/tag/v0.4.0

You'll need to update your Tree-sitter grammars due to some upstream (breaking) changes in the TS OCaml grammar.

oui: multi-platform binary installers

Nathan Rebours announced

We are happy to announce the first release of oui!

oui is a tool that generates multi-platform binary installers for your OCaml applications. It can generate installers for Windows, Linux and MacOS. We hope it will help all of you out there developping applications for non OCaml developers, allowing your users to install your programs without having to install OCaml and/or opam, thus greatly simplifying their user experience.

You can install oui with the following command:

opam install oui

We made it as generic as possible to ensure it works for everyone. You invoke it as follows:

oui build oui.json install-bundle

where install-bundle is a folder containing your precompiled binaries and any files you want to install alongside them, arranged in any way you'd like. The oui.json file is a configuration file that contains metadata and information on the installation bundle's layout such as where to find binaries to add to the PATH or where to find manpages.

oui can also create installers for plugins, assuming the main application was either installed by a oui generated installer, or was installed following some basic rules.

The project is hosted on github: https://github.com/OCamlPro/ocaml-universal-installer The full documentation is available here. In particular, you can find guidelines on how to use it to create installers for your dune built project here.

Please go ahead and give it a try, we'd love to hear your feedback.

We welcome external contributors so if you'd like to take part in the project, please read our CONTRIBUTING.md and jump in!

The project is still in a relatively early stage and there are some key features we'd like to add, such as streamlining the user experience for dune projects (removing the necessity to maintain a separate configuration file for the most common use cases) or support for cross-compilation/cross-platform installer generation. If those features sound interesting to you and you would like to fund their development, please reach out to contact@ocamlpro.com .

Finally, we'd like to thank our partner CEA-list who funded the initial development of oui from opam-wix and made it all possible!

Happy installing!

Nixtamal: Fulfilling Input Pinning for Nix

toastal announced

Nixtamal is my first serious OCaml project release, now at verison 1.1.4. It was created as a reaction to the lack of features I wanted from its “competitors” niv & npins while additionally covering features Nix flakes never could support given it’s rigid design philosophy which has more drawbacks than folks initially realize. I have been using it on all projects for a couple months now & had at least a couple folks I didn’t know prior try it out providing feedback & bug reports.

Key features:

  • Automate the manual work of input pinning for dependency management
  • Allow easy ways to lock & refresh those inputs
  • Declarative KDL manifest file over imperative <abbr title="command line interface">CLI</abbr> flags
  • Host, forge, <abbr title="version control system">VCS</abbr>-agnostic
  • Choose <abbr title="evaluation">eval</abbr> time fetchers (builtins) or build time fetchers (Nixpkgs, default) — which opens up fetching now-supported Darcs, Pijul, & Fossil
  • Supports mirrors (on kinds that support mirrors)
  • Override hash algorithm on a per-project & per-input basis — including BLAKE3 support (which does require enabling `blake3-hashes` to opt in)
  • Custom freshness commands (avoid refetching massive inputs just to check the hash hasn’t changed)
  • No experimental Nix features required (flakes)

Outside the homepage, it would be worth checking the <abbr title="frequently asked questions">FAQs</abbr> if any whats or whys come up.

OCaml-RDF 1.2.0

Zoggy announced

Hello,

A new release of OCaml-RDF, 1.2.0, is available. The main additions are:

  • a new Igraph module, providing immutable graphs (for functional style).
  • a new rdf_rdfa package implementing a Rdfa 1.1 processor.

It is available from my own opam repository.

Slipshow!

Continuing this thread, Paul-Elliot announced

It is with a blatant denial of the current situation that I announce the next release of Slipshow:

Slipshow 0.10.0: Don't look {up}

The asteroid star of the release is the new warnings that the compiler can raise to help you write a bug-free presentation. Those warnings are visible on the command-line, but also in the hot-reloading preview in serve mode!

https://github.com/user-attachments/assets/f78568e5-dbbf-49e3-9cd3-8d2e5c4edfda

Warnings will hopefully help detect bugs in your presentations and improve the experience, especially of newcomers!

This time, I'd like to thanks @Alistair for the incredible Grace 💅 library. Whenever I look somewhere, I find a new OCaml pearl. Thank you for that! This library, the ecosystem, open-source, are all awesome things.

And thanks again to NLNet for supporting the development of Slipshow!

Here is the full changelog:

Added

  • Helpful warnings at compile-time (#213):
    • Action parsing failures,
    • Missing ID (and external-ids frontmatter field to selectively deactivate),
    • Duplicated ID,
    • Frontmatter parsing error,
    • Wrong target type for actions,
    • Missing file,
    • Unknown attribute,

Fixed

  • Fixed drawing stopping slightly after pauses (#216)
  • Fixed keyboard shortcuts not working in serve mode until the preview was clicked (#215)
  • Fix shortcuts not working after saving a drawing (#217)
  • Fix wrong example links in docs (#218)

Is there a public archive for the caml-list?

Continuing this thread, Calascibetta Romain announced

Hello, I am pleased to announce the launch of https://caml-list.robur.coop/, a unikernel that provides a search engine for the caml-list. We now have public access to this archive :tada:!

Our cooperative is currently working on several fronts, including email, by offering an archiving system. For more details, please see this article. Another article describes the search engine we use, and a third explains how we developed this unikernel (although the latter has evolved considerably since then, the core remains the same).

We are therefore delighted to make this service available to the community, and if you would like to help us improve it, the project is currently available here. We would like to thank NLnet for funding this unikernel, and if you appreciate our work, please do not hesitate to make a donation to our cooperative (via GitHub or directly to our cooperative)

Finally, this example also showcases all our work on unikernels: from what an Ethernet frame is, through the archive system and the extraction of emails from a virtualised hard drive, right up to the HTTP request - everything is done in OCaml (and we would once again recommend reading our tutorial on mnet if you would like to build up unikernels).

So have fun hunting for relics from the history of OCaml!

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.