OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of July 15 to 22, 2025.
Table of Contents
Third outreachy internship blog
Matthew Idungafa announced
Hello everyone, it's the mid-point of my oureachy internship with Dune and here's my third blog post
In this article, I talk a bit more about the ocaml ecosystem in general and offer some insights to devs who would want to contribute to the ocaml ecosytem in subsequent internships.
opam 2.4.0 is out!
Kate announced
Hi everyone,
We are extremely happy to announce the release of opam 2.4.0 and encourage all users to upgrade.
What’s new? Some highlights:
- :dragon_face: On
opam init
the compiler chosen for the default switch will no longer beocaml-system
(#3509) This was done because the system compiler (as-is your ocaml installed system wide, e.g. /usr/bin/ocaml) is known to be under-tested and prone to a variety of bugs and configuration issues. Removing it from the default compiler allows new-comers a more smooth experience. Note: if you wish to use it anyway, you are always able to do it explicitly usingopam init --compiler=ocaml-system
- :dragon: In the same vein,
opam switch create [name] <version>
will not include compiler packages flagged withavoid-version
/deprecated
in the generated invariant anymore, unless compiler flaggedavoid-version
/deprecated
are the only ones available (#6494) Note: if you wish to useocaml-system
, you can simply say it explicitly usingopam switch create [name] ocaml-system
- :yarn:
opam install --deps-only
no longer requires unicity of package version between the request and the installed packages. In other words, if you havepkg.1
installed, installing the dependencies ofpkg.2
no longer removespkg.1
if the installed packages are compatible. This also allows to install dependencies of conflicting packages when their dependencies are compliant. (#6520) - :camel: GNU
patch
and thediff
command are no longer runtime dependencies. Instead the OCamlpatch
library is used (#6019, #6052, #3782, ocaml/setup-ocaml#933) Doing this we've removed some rarely used features of GNU Patch such as the support of Context diffs. The new implementation only supports Unified diffs including the git extended headers, however file permission changes via said extended headers have no effect. - :snowflake: Add Nix support for external dependencies (depexts) by adding support for stateless package managers (#5982). Thanks to @RyanGibb for this contribution
- :cockroach: Fix
opam install <local_dir>
with and without options like--deps-only
or--show-action
having unexpected behaviours (#6248, #5567) such as:- reporting
Nothing to do
despite dependencies or package not being up-to-date - asking to install the wrong dependencies
- reporting
- :window: The prebuilt Windows binary now includes Cygwin's
setup-x86_64.exe
in the binary itself as fallback in casecygwin.com
is inaccessible (#6538). Opam will also no longer fail ifcygwin.com
is inaccessible when checking for upgrades ofsetup-x86_64.exe
(#6495, #6474) - :ocean: Many more UI additions and improvements, bug fixes, …
:open_book: You can read our blog post for the full list of important changes, and for even more details you can take a look at the release note or the changelog.
Try it!
The upgrade instructions are unchanged:
For Unix systems
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.4.0"
or from PowerShell for Windows systems
Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.4.0"
Please report any issues to the bug-tracker.
Happy hacking, <> <> The opam team <> <> :camel:
I'd also like to personally give a special thanks to the whole haematology department of the NHS Greater Glasgow for making my continued existence and this release – in the state that it is – possible. Fighting cancer is not easy but it is much more bearable with great people <3
Kate later added
[NOTE] We have had reports of a regression in some cases when using pin-depends
. We have a fix and we're planning to have 2.4.1 out in a couple days.
x-ocaml, notebooks as a webcomponent
art-w announced
Dear internets,
I would like to share x-ocaml
, a little project to make it easier to share executable OCaml examples on the web. To enable readers to experiment with the code, x-ocaml
integrates the CodeMirror editor with the js_of_ocaml-toplevel
interpreter, Merlin and OCamlformat. You only need to add the following in your html page to use it:
<script async
src="https://cdn.jsdelivr.net/gh/art-w/x-ocaml.js@5/x-ocaml.js"
src-worker="https://cdn.jsdelivr.net/gh/art-w/x-ocaml.js@5/x-ocaml.worker+effects.js"
></script>
This script will introduce a new HTML tag <x-ocaml>
to present your OCaml code:
<x-ocaml>let it = "be"</x-ocaml>
The online demo shows a couple more examples and configuration options. In particular, there is a command-line tool in the github repo to export OCaml libraries and load them into your page:
$ x-ocaml --effects digestif.ocaml -o digestif.js # then use <script async src="..." src-worker="..." src-load="digestif.js">
I believe this could be very useful in tutorials or documentation to showcase your favorite OCaml libraries.
While searching how to implement this, I discovered sketch.sh which had so many good ideas and that we should use a lot more! My hope is that x-ocaml
can provide a similar notebook experience for the rest of the web, by being easy to integrate in static webpages.
Besides the js_of_ocaml
authors and the many OCaml playgrounds that have inspired this project, I would like to address some special thanks to:
- @patricoferris for the
jsoo-code-mirror
bindings, and for thexocmd
tool to convert markdown files to use<x-ocaml>
tags - @vds for integrating Merlin with javascript and CodeMirror in
merlin-js
- @juloo for his assistance on the ocamlformat support
- @kayceesrk for reporting issues and requesting features which have made the tool a lot more robust and versatile! His blogpost "Testing x-ocaml, OCaml notebooks as a WebComponent" also provides a longer example of what can be done with it (and the limitations you might run into)
Dune dev meeting
Puneeth Chaganti announced
Hi everyone! :camel:
We will hold our regular Dune dev meeting on Wednesday, July, 23 at 9:00 CET. As usual, the session will be one hour long.
Whether you are a maintainer, a regular contributor, a new joiner or just curious, you are welcome to join: these discussions are open! The goal of these meetings is to provide a place to discuss the ongoing work together and synchronize between the Dune developers :smile:
:calendar: Agenda
The agenda is available on the meeting dedicated page. Feel free to ask if you want to add more items in it.
:computer: Links
- Meeting link: zoom
- Calendar event: google calendar
- Wiki with information and previous notes: dune wiki on GitHub
Lwt.6.0.0~alpha (direct-style)
Deep in this thread, Raphaël Proust announced
version 6.0.0~alpha01
is now ready (https://github.com/ocaml/opam-repository/pull/28222)
Anyone able to test the release on their existing code, I'd welcome the feedback: does it work? There shouldn't be breakages but then there might. If you are not sure how to test or what to test, don't hesitate to ask (on here or via dm or via discord).
Other OCaml News
From the ocaml.org blog
Here are links from many OCaml blogs aggregated at the ocaml.org blog.
- Upcoming OCaml Events
- Learning OCaml: Having Fun with the Fun Module
- Learning OCaml: Numerical Type Conversions
- Cresting the OCaml AI humps
- Sometimes it’s just knowing where to tap
- Into the sunset or into the dawn?
- Fireworks and things
- Using Kyutai's low latency audio models on macOS in one command
- Odoc 3 is live on OCaml.org!
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.