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

Alan Schmitt
2025-11-11T09:49:59Z

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

Hello

Here is the latest OCaml Weekly News, for the week of November 04 to 11,
2025.

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

Opam-repository, signed! conex is in beta now :)
OCaml Platform Newsletter: September to October 2025
Demonstration of the extension literals and constant rewriting features
Old CWN

Opam-repository, signed! conex is in beta now :)
════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/opam-repository-signed-conex-is-in-beta-now/17461/1>

Hannes Mehnert announced
────────────────────────

Dear everyone,

we’re proud to announce that conex, in an initial version, is now
live! You can receive signed updates of the opam-repository. A quick
guide:

To setup opam with conex on your machine, you need to install conex
(and/or conex-mirage-crypto, see below) - currently only available as
opam package (sorry about the bootstrap problem - hopefully it will be
integrated into opam at some time).

Then, in your “\~/.opam/config” you need to specify the
[repository-validation-command]:

┌────
│ repository-validation-command: [
│ "/path/to/conex_verify_mirage_crypto"
│ "--quorum=%{quorum}%"
│ "--trust-anchors=%{anchors}%"
│ "--repository=%{repo}%" {incremental}
│ "--dir=%{dir}%" {!incremental}
│ "--patch=%{patch}%" {incremental}
│ "--incremental" {incremental}
│ ]
└────

Instead of “conex_verify_mirage_crypto”, you can as well use
“conex_verify_openssl” (fewer dependencies, calls out to OpenSSL as
the cryptographic provider, is slower).

Then you can run `opam repo add conex-robur https://conex.robur.coop 1
sha256=ad5eb0e4a77abfbc6c1bb5661eba46049404e0222588dd059c87f12436d41a28'. Thereafter
you can `opam repo remove default', and then you’re only using signed
metadata. The “1” is the quorum of root keys for signatures to be
valid, the
“sha256=ad5eb0e4a77abfbc6c1bb5661eba46049404e0222588dd059c87f12436d41a28”
is the hash of the public root key.

Read the full article at
<https://hannes.robur.coop/Posts/ConexRunning> – happy to receive
feedback.

The development of conex is supported by the [OCaml Software
Foundation] and by [ahrefs].

[repository-validation-command]
<https://opam.ocaml.org/doc/Manual.html#configfield-repository-validation-command>

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

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

OCaml Platform Newsletter: September to October 2025
════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-platform-newsletter-september-to-october-2025/17462/1>

Sabine Schmaltz announced
─────────────────────────

Welcome to the sixteenth edition of the OCaml Platform newsletter!

In this September to October 2025 edition, we are excited to bring you
the latest on the OCaml Platform, continuing our tradition of
highlighting recent developments as seen in [previous editions]. To
understand the direction we're headed, especially regarding
development workflows and user experience improvements, check out our
[roadmap].

You can [subscribe to this newsletter on LinkedIn]!

*Highlights:*

• *OCaml 5.4.0 Released*: Major stable release featuring labelled
tuples, immutable arrays, unified array literal syntax, atomic
record fields, and four new standard library modules
• *Security Response Team Established*: New team formed to handle
security vulnerabilities in the OCaml ecosystem
• *Enhanced Editor Support*: OCaml-LSP 1.24.0 and Merlin 5.6 bring
improved project navigation and performance optimizations
• *OCaml.org Reorganization*: Clear separation between news about
production-ready features and releases (OCaml Changelog) and
ongoing work and experimental features (Backstage OCaml)
• *Experimental Tools Progress*: Gospel ecosystem tools ready for
testing, new ocaml.nvim plugin for Neovim users, and experimental
Merlin branch using domains and effects

*OCaml Changelog:*

• [OCaml.org: Introducing Backstage OCaml - Separate Feeds for Stable
and Experimental Features] (Oct 8, 2025)
• [OCaml Security Response Team Established] (Oct 3, 2025)

*Backstage OCaml:*

• [Gospel Ecosystem: Tools Ready to Try, Language Evolving] (Oct 15,
2025)
• [Backstage OCaml: ocaml.nvim - A Neovim Plugin for OCaml] (Oct 14,
2025)
• [Backstage OCaml: You Can Try the Experimental Branch of Merlin That
Uses Domains and Effects] (Oct 8, 2025)

*Stable Releases:*

• [Release of OCaml 5.4.0] (Oct 9, 2025)
• [opam-publish 2.7.0] (Oct 7, 2025)
• [OCaml-LSP 1.24.0] (Oct 4, 2025)
• [Merlin 5.6-503 and 5.6-504] (Oct 4, 2025)
• [OCaml-LSP 1.23.1] (Oct 3, 2025)
• [Ppxlib 0.36.2] (Oct 1, 2025)
• [ocp-indent 1.9.0] (Oct 1, 2025)
• [opam-publish 2.6.0] (Sep 19, 2025)
• [Dune 3.20.2] (Sep 10, 2025)

*Unstable Releases:*

• [First release candidate for OCaml 5.4.0] (Sep 29, 2025)
• [Second beta release of OCaml 5.4.0] (Sep 9, 2025)

[previous editions] <https://discuss.ocaml.org/tag/platform-newsletter>

[roadmap] <https://ocaml.org/docs/platform-roadmap>

[subscribe to this newsletter on LinkedIn]
<https://www.linkedin.com/newsletters/ocaml-platform-newsletter-7305270694567661568/>

[OCaml.org: Introducing Backstage OCaml - Separate Feeds for Stable and
Experimental Features]
<https://ocaml.org/changelog/2025-10-08-introducing-backstage-ocaml>

[OCaml Security Response Team Established]
<https://ocaml.org/changelog/2025-10-03-security-team>

[Gospel Ecosystem: Tools Ready to Try, Language Evolving]
<https://ocaml.org/backstage/2025-10-15-gospel-language-evolving>

[Backstage OCaml: ocaml.nvim - A Neovim Plugin for OCaml]
<https://ocaml.org/backstage/2025-10-14-ocaml-nvim-a-neovim-plugin-for-ocaml>

[Backstage OCaml: You Can Try the Experimental Branch of Merlin That
Uses Domains and Effects]
<https://ocaml.org/backstage/2025-10-08-merlin-domains>

[Release of OCaml 5.4.0]
<https://ocaml.org/changelog/2025-10-09-ocaml-540>

[opam-publish 2.7.0]
<https://ocaml.org/changelog/2025-10-07-opam-publish-2-7-0>

[OCaml-LSP 1.24.0]
<https://ocaml.org/changelog/2025-10-04-ocaml-lsp-1240>

[Merlin 5.6-503 and 5.6-504]
<https://ocaml.org/changelog/2025-10-04-merlin-v56-503-and-504>

[OCaml-LSP 1.23.1]
<https://ocaml.org/changelog/2025-10-03-ocaml-lsp-1231>

[Ppxlib 0.36.2] <https://ocaml.org/changelog/2025-10-01-ppxlib-0362>

[ocp-indent 1.9.0]
<https://ocaml.org/changelog/2025-10-01-ocp-indent-190>

[opam-publish 2.6.0]
<https://ocaml.org/changelog/2025-09-19-opam-publish-2-6-0>

[Dune 3.20.2] <https://ocaml.org/changelog/2025-09-10-dune3202>

[First release candidate for OCaml 5.4.0]
<https://ocaml.org/backstage/2025-09-29-ocaml-540-rc1>

[Second beta release of OCaml 5.4.0]
<https://ocaml.org/backstage/2025-09-09-ocaml-540-beta2>

OCaml Compiler
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ OCaml 5.4.0 Stable Release

The [October 9, 2025 release of OCaml 5.4.0] represents a major
milestone with significant language enhancements. After two beta
releases and a release candidate in September, the stable version
delivers:

*Language Features:*

• *Labelled tuples*: Enable better documentation and type safety with
labels on tuple fields

┌────
│ let ( * ) (x,~dx) (y,~dx:dy) = x*.y, ~dx:(x *. dy +. y *. dx)
└────

• *Immutable arrays* (`'a iarray'): Covariant arrays for safer
concurrent programming
• *Unified array literal syntax*: `[| ... |]' now works for `'a
array', `'a iarray', and `floatarray'
• *Atomic record fields*: New `[@atomic]' attribute with `Atomic.Loc'
submodule for lock-free concurrent access

*Standard Library Additions:*

• `Pair': Utility functions for pairs
• `Pqueue': Priority queue implementation
• `Repr': Explicit functions for physical equality and comparison
• `Iarray': Operations on immutable arrays

*Runtime Improvements:*

• Frame pointers support for ARM64 (Linux and macOS)
• Performance fix for Apple Silicon (using `stlr' instead of `dmb
ishld; str')
• Software prefetching for ARM64, s390x, PPC64, and RISC-V
• Restored "memory cleanup upon exit" mode

The [September beta releases] and [release candidate] demonstrated the
maturity of the release, with only minor TSAN and metadata fixes
needed.

[October 9, 2025 release of OCaml 5.4.0]
<https://ocaml.org/changelog/2025-10-09-ocaml-540>

[September beta releases]
<https://ocaml.org/backstage/2025-09-09-ocaml-540-beta2>

[release candidate]
<https://ocaml.org/backstage/2025-09-29-ocaml-540-rc1>

◊ WIP: Relocatable OCaml

Work on *Relocatable OCaml* is progressing toward inclusion in OCaml
5.5, with implementation PRs opened by David Allsopp in September. The
changes are undergoing review from Samuel Hym, Jonah Beckford, and
others.

*What Relocatable OCaml Enables:*

This feature allows the OCaml compiler and its associated tools to be
moved to different filesystem locations after installation without
breaking functionality. Key benefits include:

• Binary distributions that work regardless of installation path
• Improved flexibility for package managers organizing OCaml
installations
• Bundling of specific OCaml versions by developer tools without path
conflicts
• Simplified cross-platform distribution

*Current Status:*

The implementation is in active review with ongoing responses to
feedback. The core development team is likely to review the changes at
an upcoming meeting, targeting inclusion in OCaml 5.5.

For technical details about the implementation approach and its
implications for the ecosystem, see David Allsopp's [blog post on
Relocatable OCaml] and the associated [Discuss thread].

[blog post on Relocatable OCaml]
<https://www.dra27.uk/blog/platform/2025/09/15/relocatable-ocaml.html>

[Discuss thread] <https://discuss.ocaml.org/t/relocatable-ocaml/17253>

Build System
╌╌╌╌╌╌╌╌╌╌╌╌

◊ Dune

[Dune 3.20.2] (September 10, 2025) provides bug fixes and stability
improvements for the 3.20 series.

[Dune 3.20.2] <https://ocaml.org/changelog/2025-09-10-dune3202>

◊ Experimental: Dune Package Management

We keep exploring:

• *Portable External Dependencies*: An approach for storing system
package dependencies in a platform-agnostic format, allowing
projects to maintain a single specification that resolves
correctly across Linux, macOS, and Windows environments, ensuring
consistent builds regardless of platform-specific package naming
and versioning differences.
• *Portable Lock Directories*: Lock directories that work
consistently across different operating systems and
architectures, addressing the current limitation where
platform-specific dependency resolutions prevent teams from
sharing lock files through version control in heterogeneous
development environments.
• *Lock Directories as Build Targets*: Currently, the solver that
comes up with a set of compatible dependencies needs to be run by
the user explicitely (using `dune pkg lock'), but in the future
we intend to create build plans implicitly via Dune build
rules. This should make make package management simpler to use as
it requires fewer user actions and does not require putting
verbose lock directories into the project source
directories. This change also paves the way for automatic
relocking when dependencies change, including in watch mode.

These features remain under active development and should not be
relied on in production. However, we encourage cautious adoption of
Dune Package Management itself for users comfortable with
bleeding-edge tools that may still change. Dune package management
is available in the stable release of Dune, as an experimental
feature.

*Dune Maintained by*: Rudi Grinberg (@rgrinberg, Jane Street),
Nicolás Ojeda Bär (@nojb, LexiFi), Marek Kubica
(@Leonidas-from-XIV, Tarides), Ali Caglayan (@Alizter, Tarides),
Etienne Millon (@emillon), Stephen Sherratt (@gridbugs, Tarides),
Antonio Nuno Monteiro (@anmonteiro), Etienne Marais (@maiste)

Package Management
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ opam-publish

We celebrate two releases of opam-publish: [*opam-publish 2.6.0*]
(September 19, 2025) and [*opam-publish 2.7.0*] (October 7, 2025).

These releases make it easier to automate package publishing,
particularly benefiting projects with continuous deployment pipelines.

*Maintained by*: Raja Boujbel (@rjbou, OCamlPro), Kate Deplaix
(@kit-ty-kate, Ahrefs)

[*opam-publish 2.6.0*]
<https://ocaml.org/changelog/2025-09-19-opam-publish-2-6-0>

[*opam-publish 2.7.0*]
<https://ocaml.org/changelog/2025-10-07-opam-publish-2-7-0>

Editor Tools
╌╌╌╌╌╌╌╌╌╌╌╌

*Roadmap: [Edit / (W19) Navigate Code]*

[Edit / (W19) Navigate Code]
<https://ocaml.org/tools/platform-roadmap#w19-navigate-code>

◊ OCaml-LSP Server and Merlin

September and October saw significant updates to editor support:

◊ Stable Releases

• [*OCaml-LSP 1.24.0*] (October 4, 2025): Major release with
improved project navigation and performance optimizations
• [*OCaml-LSP 1.23.1*] (October 3, 2025): Bug fix release
• [*Merlin 5.6-503 and 5.6-504*] (October 4, 2025): Support for
OCaml 5.3 and 5.4 with performance improvements

[*OCaml-LSP 1.24.0*]
<https://ocaml.org/changelog/2025-10-04-ocaml-lsp-1240>

[*OCaml-LSP 1.23.1*]
<https://ocaml.org/changelog/2025-10-03-ocaml-lsp-1231>

[*Merlin 5.6-503 and 5.6-504*]
<https://ocaml.org/changelog/2025-10-04-merlin-v56-503-and-504>

◊ Experimental: Merlin with Domains and Effects

The [experimental Merlin branch using domains and effects] offers
potential performance improvements through parallelization. This
experimental version is available for testing but not recommended
for production use.

[experimental Merlin branch using domains and effects]
<https://ocaml.org/backstage/2025-10-08-merlin-domains>

◊ ocp-indent

[*ocp-indent 1.9.0*] (October 1, 2025): Updates for OCaml 5.4.0
compatibility and improved formatting rules.

[*ocp-indent 1.9.0*]
<https://ocaml.org/changelog/2025-10-01-ocp-indent-190>

◊ Experimental: ocaml.nvim

[Tarides announced ocaml.nvim], a new Neovim plugin for OCaml
development. This experimental plugin serves as the Neovim counterpart
to ocaml-eglot, leveraging LSP for modern editor features.

*OCaml LSP Server maintained by*: Ulysse Gérard (@voodoos, Tarides),
Xavier Van de Woestyne (@xvw, Tarides), Rudi Grinberg (@rgrinberg,
Jane Street)

*Merlin maintained by*: Ulysse Gérard (@voodoos, Tarides), Xavier Van
de Woestyne (@xvw, Tarides), Muluh Godson (@PizieDust, Tarides),

[Tarides announced ocaml.nvim]
<https://ocaml.org/backstage/2025-10-14-ocaml-nvim-a-neovim-plugin-for-ocaml>

Documentation and PPX Tools
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ Ppxlib

[*Ppxlib 0.36.2*] (October 1, 2025): Compatibility updates for OCaml
5.4.0 and fixes for AST handling.

*Maintained by*: Nathan Rebours (@NathanReb)

[*Ppxlib 0.36.2*] <https://ocaml.org/changelog/2025-10-01-ppxlib-0362>

Gospel Ecosystem (Experimental)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

The Gospel formal specification ecosystem now offers tools for
experimental specification-driven testing, as detailed in ["Gospel
Ecosystem: Tools Ready to Try, Language Evolving"].

*Available Tools:*

• *Ortac/QCheck-STM* generates property-based tests from Gospel
specifications written in `.mli' files. The tool won the TACAS 2025
Best Tool Paper award and can automatically produce comprehensive
test suites from formal specifications. While the underlying Gospel
language syntax may still change, the testing workflow is stable
enough for experimental use in development environments.

*Current Status:*

The tools work well for isolated modules where you can write
specifications and generate tests, but the Gospel language itself
remains under active development with potential breaking changes
ahead. Teams using these tools should be prepared to update
specifications as the language evolves. This makes the ecosystem
suitable for greenfield projects, experimental codebases, or
well-isolated components where specification changes won't cascade
through large systems.

["Gospel Ecosystem: Tools Ready to Try, Language Evolving"]
<https://ocaml.org/backstage/2025-10-15-gospel-language-evolving>

Platform Infrastructure
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ OCaml Security Response Team

The [establishment of the OCaml Security Response Team] (October 3,
2025) marks an important step in ecosystem maturity. The team will
handle security vulnerabilities following established disclosure
practices.

[establishment of the OCaml Security Response Team]
<https://ocaml.org/changelog/2025-10-03-security-team>

◊ OCaml.org Reorganization

The [newly introduced separation of OCaml Changelog and Backstage
OCaml] provides clearer communication:

• *OCaml Changelog*: Official stable releases and production-ready
updates
• *Backstage OCaml*: Experimental releases, work-in-progress, and
development opportunities

This helps readers distinguish more easily between what's ready for
production use and what's still experimental.

[newly introduced separation of OCaml Changelog and Backstage OCaml]
<https://ocaml.org/changelog/2025-10-08-introducing-backstage-ocaml>

Community Events
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ FUN OCaml 2025

The FUN OCaml conference took place on *September 15-16, 2025* in
Warsaw, Poland, featuring talks on practical OCaml development,
industry applications, and community projects. The [FUN OCaml 2025
program and speaker lineup] showcases the diverse ecosystem of OCaml
in production. Video recordings of all presentations will be available
soon for those who couldn't attend in person.

[FUN OCaml 2025 program and speaker lineup]
<https://fun-ocaml.com/2025/>

◊ OCaml Workshop 2025

The OCaml Users and Developers Workshop was held on *October 17, 2025*
in Singapore, co-located with ICFP/SPLASH, bringing together
researchers and practitioners. You can find the list of presentations
and a link to the video recordings on [the OCaml Workshop 2025 page on
OCaml.org]!

—

We're pleased to see the successful release of OCaml 5.4.0, marking a
significant milestone with labelled tuples, immutable arrays, and
atomic fields. The establishment of the Security Response Team and the
reorganization of OCaml.org demonstrate the ecosystem's growing
maturity.

The clear separation between stable releases and experimental work
helps the community make informed decisions about tool adoption. While
experimental features in the Dune Developer Preview, ocaml.nvim, and
Gospel ecosystem show promising directions, they remain in testing and
should not be used in production.

As always, we encourage feedback and contributions from the community
as we continue to improve the OCaml Platform ecosystem.

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

Demonstration of the extension literals and constant rewriting features
═══════════════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/demonstration-of-the-extension-literals-and-constant-rewriting-features/17466/1>

Mikhail announced
─────────────────

Yo! :yoyo: :waving_hand:

I started learning the beautiful [ppxlib] library and found
interesting information in their documentation about OCaml's syntax
features, such as extension literals - the ability to append a
one-letter identifier to numeric literals. I was surprised at how easy
it was to do this.

Because I was inspired by this, I wrote a demonstration project
(located in my [GitHub repository]) to show how to use it to implement
metric system support in code.

┌────
│ utop # 5m;;
│ - : Metric.Meter.t = 5
│
│ utop # Metric.Meter.(1m + 10m);;
│ - : Metric.Meter.t = 11
└────

References:
• OCaml – Language extensions – [Extension literals]
• Ppxlib – Context-free transformation – [Constant Rewriting]()

[ppxlib] <https://github.com/ocaml-ppx/ppxlib>

[GitHub repository] <https://github.com/dx3mod/metric_syntax>

[Extension literals]
<https://ocaml.org/manual/5.4/extensionsyntax.html#ss:extension-literals>

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