Hello Here is the latest OCaml Weekly News, for the week of July 15 to 22, 2025. Table of Contents ───────────────── Third outreachy internship blog opam 2.4.0 is out! x-ocaml, notebooks as a webcomponent Dune dev meeting Lwt.6.0.0~alpha (direct-style) Other OCaml News Old CWN Third outreachy internship blog ═══════════════════════════════ Archive: 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. [post] opam 2.4.0 is out! ══════════════════ Archive: 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 be `ocaml-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 using `opam init --compiler=ocaml-system'* • :dragon: In the same vein, *`opam switch create [name] ' will not* include compiler packages *flagged with `avoid-version' / `deprecated'* in the generated invariant anymore, unless compiler flagged `avoid-version' / `deprecated' are the only ones available ([#6494]) *Note: if you wish to use `ocaml-system', you can simply say it explicitly using `opam 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 have `pkg.1' installed, installing the dependencies of `pkg.2' no longer removes `pkg.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 the *`diff'* command are *no longer runtime dependencies*. Instead the OCaml `patch' 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 '* 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 • :window: The prebuilt *Windows binary now includes Cygwin's `setup-x86_64.exe'* in the binary itself as *fallback* in case `cygwin.com' is inaccessible ([#6538]). Opam will also no longer fail if `cygwin.com' is inaccessible when checking for upgrades of `setup-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]. [#3509] [#6494] [#6520] [#6019] [#6052] [#3782] [ocaml/setup-ocaml#933] [Context diffs] [Unified diffs] [git extended headers] [#5982] [@RyanGibb] [#6248] [#5567] [#6538] [#6495] [#6474] [blog post] [release note] [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/ [bug-tracker] 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. [`pin-depends'] x-ocaml, notebooks as a webcomponent ════════════════════════════════════ Archive: 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: ┌──── │ └──── This script will introduce a new HTML tag `' to present your OCaml code: ┌──── │ let it = "be" └──── 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