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

Alan Schmitt
2025-07-22T12:08:09Z

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

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:
<https://discuss.ocaml.org/t/third-outreachy-internship-blog/16984/1>

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]
<https://medium.com/@mattidungafa/outreachy-blog-3-think-about-your-audience-ad5f09f4fda3>

opam 2.4.0 is out!
══════════════════

Archive: <https://discuss.ocaml.org/t/ann-opam-2-4-0-is-out/16989/1>

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] <version>'
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 <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

• :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] <https://github.com/ocaml/opam/issues/3509>

[#6494] <https://github.com/ocaml/opam/pull/6494>

[#6520] <https://github.com/ocaml/opam/issues/6520>

[#6019] <https://github.com/ocaml/opam/issues/6019>

[#6052] <https://github.com/ocaml/opam/issues/6052>

[#3782] <https://github.com/ocaml/opam/issues/3782>

[ocaml/setup-ocaml#933] <https://github.com/ocaml/setup-ocaml/pull/933>

[Context diffs]
<https://www.gnu.org/software/diffutils/manual/html_node/Example-Context.html>

[Unified diffs]
<https://www.gnu.org/software/diffutils/manual/html_node/Example-Unified.html>

[git extended headers] <https://git-scm.com/docs/diff-format>

[#5982] <https://github.com/ocaml/opam/issues/5982>

[@RyanGibb] <https://github.com/RyanGibb>

[#6248] <https://github.com/ocaml/opam/issues/6248>

[#5567] <https://github.com/ocaml/opam/issues/5567>

[#6538] <https://github.com/ocaml/opam/issues/6538>

[#6495] <https://github.com/ocaml/opam/issues/6495>

[#6474] <https://github.com/ocaml/opam/issues/6474>

[blog post] <https://opam.ocaml.org/blog/opam-2-4-0/>

[release note] <https://github.com/ocaml/opam/releases/tag/2.4.0>

[changelog] <https://github.com/ocaml/opam/blob/2.4.0/CHANGES>

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] <https://github.com/ocaml/opam/issues>

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']
<https://opam.ocaml.org/doc/Manual.html#opamfield-pin-depends>

x-ocaml, notebooks as a webcomponent
════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-x-ocaml-notebooks-as-a-webcomponent/16996/1>

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"
│ >
└────

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
└────

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 the
[`xocmd'] 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)

[`x-ocaml'] <https://github.com/art-w/x-ocaml>

[*online demo*] <https://art-w.github.io/x-ocaml/>

[github repo] <https://github.com/art-w/x-ocaml>

[sketch.sh] <https://sketch.sh>

[`jsoo-code-mirror'] <https://github.com/patricoferris/jsoo-code-mirror>

[`xocmd'] <https://github.com/patricoferris/xocmd>

[`merlin-js'] <https://github.com/voodoos/merlin-js>

["Testing x-ocaml, OCaml notebooks as a WebComponent"]
<https://kcsrk.info/ocaml/x-ocaml/blogging/2025/06/20/xocaml/>

Dune dev meeting
════════════════

Archive: <https://discuss.ocaml.org/t/ann-dune-dev-meeting/14994/33>

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.

[ meeting dedicated page]
<https://github.com/ocaml/dune/wiki/dev-meeting-2025-07-23>

:computer: Links
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

• Meeting link:[ zoom]
• Calendar event:[ google calendar]
• Wiki with information and previous notes: [dune wiki on GitHub]

[ zoom]
<https://us06web.zoom.us/j/85096877776?pwd=cWNhU1dHQ1ZNSjZuOUZCQ0h2by9Udz09>

[ google calendar]
<https://calendar.google.com/calendar/embed?src=c_5cd698df6784e385b1cdcdc1dbca18c061faa96959a04781566d304dc9ec7319%40group.calendar.google.com>

[dune wiki on GitHub] <https://github.com/ocaml/dune/wiki>

Lwt.6.0.0~alpha (direct-style)
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-lwt-6-0-0-alpha-direct-style/16972/26>

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!]

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

[Upcoming OCaml Events] <https://ocaml.org/events>

[Learning OCaml: Having Fun with the Fun Module]
<https://batsov.com/articles/2025/07/19/learning-ocaml-having-fun-with-the-fun-module/>

[Learning OCaml: Numerical Type Conversions]
<https://batsov.com/articles/2025/07/19/learning-ocaml-numerical-type-conversions/>

[Cresting the OCaml AI humps]
<https://anil.recoil.org/notes/cresting-the-ocaml-ai-hump>

[Sometimes it’s just knowing where to tap]
<https://www.dra27.uk/blog/platform/2025/07/18/where-to-tap.html>

[Into the sunset or into the dawn?]
<https://www.dra27.uk/blog/platform/2025/07/18/through-a-glass-darkly.html>

[Fireworks and things]
<https://www.dra27.uk/blog/platform/2025/07/17/fireworks.html>

[Using Kyutai's low latency audio models on macOS in one command]
<https://anil.recoil.org/notes/kyutai-streaming-voice-mlx>

[Odoc 3 is live on OCaml.org!]
<https://jon.recoil.org/blog/2025/07/odoc-3-live-on-ocaml-org.html>

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: 25796 bytes --]