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

Alan Schmitt
2025-03-04T14:01:54Z

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

Hello

Here is the latest OCaml Weekly News, for the week of February 25 to
March 04, 2025.

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

Bytecode debugging in OCaml 5.3
Zanuda – OCaml linter experiment
QCheck 0.24
Bogue, the OCaml GUI
Opam repository archival - next phase
Upcoming Cmdliner 2.0 changes that need your attention
OCaml Editors Plugins Survey
Dune dev meeting
Platform Newsletter: September - December 2024
Other OCaml News
Old CWN

Bytecode debugging in OCaml 5.3
═══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/bytecode-debugging-in-ocaml-5-3/16177/7>

Continuing this thread, Henry Till said
───────────────────────────────────────

Probably worth sharing here:
• [gdb.py]
• [gdb_ocamlrun.py]
• [lldb.py]
• [Getting Started with GDB on OCaml]

[gdb.py]
<https://github.com/ocaml/ocaml/blob/f08e8a1ad48013dbdefc0e5415c2bf48a6881de8/tools/gdb.py>

[gdb_ocamlrun.py]
<https://github.com/ocaml/ocaml/blob/f08e8a1ad48013dbdefc0e5415c2bf48a6881de8/tools/gdb_ocamlrun.py>

[lldb.py]
<https://github.com/ocaml/ocaml/blob/f08e8a1ad48013dbdefc0e5415c2bf48a6881de8/tools/lldb.py>

[Getting Started with GDB on OCaml]
<https://kcsrk.info/ocaml/gdb/2024/01/20/gdb-ocaml/>

Chet Murthy also said
─────────────────────

For those who (like me) have always been perplexed when they try to
use ocamldebug, b/c it just doesn't seem to work like gdb or perl's
debugger, or any other debugger I've tried, this video was immensely
helpful.

<https://www.youtube.com/watch?v=DGvJk14sfi8&t=724s>

Specifically, I learned that at the beginning of the program, to set a
breakpoint in the main program file, I need to do something like (for
a file "extract_environments.ml", and line 79):
┌────
│ break @extract_environments 79
└────
That was blocking me FOREVER, b/c holy cow there's a ton of
initialization, and I just didn't know how to run thru all that and
get to the first meaningful line of my main program.

Now I do. I can move forward from here with ocamldebug. Finally!

Zanuda – OCaml linter experiment
════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-zanuda-ocaml-linter-experiment/11784/2>

Kakadu announced
────────────────

I'm using this linter for teaching for two years, and I'm very happy
that I implemented it. Student's code is much less annoying to read
:slight_smile:

Release 1.1.0
╌╌╌╌╌╌╌╌╌╌╌╌╌

• #22: Add 'reviewer' tool to report lint's a Github review.
• #13: Discourage matching a tuple using 'match' expression with
single branch
┌────
│ match x with (a,b) -> ...
└────
• #18: Warn about unneeded mutually recursive types
• #23: Implement a trial version of the Fix module for auto-correction
of lints. It produces a diff that could be applied later. Dune
support is lacking
• Add command line switch '-skip-level-allow <bool>' to enable/disable
lints with level=Allow. False has higher priority than per-lint
command line switch (for example, `-no-string_concat')
• #28: Warn about too many nested `if' expressions.
• #32: Warn about constructor names that hide default constructor
names
• #35: Detect manual implementations of List.map/fold functions
• #50: Propose eta reduction when available
• #51: Warn about pattern matching on boolean values
• #53: Warn about `"%s"' in formatted strings
• #54: Detection of unused public declarations in .mli file.
• #56: Simplify lint about missing license. We look for required
doc-comments anywhere in the file, not only in the beginning.
• #60: Skip some checks for some source files (configured via
'.zanuda' config file).
• #15: Split 'string_concat' lint to check separately patterns 'a^b^c'
(level=Allow) and 'List.fold_left (^)' (level=Warn).

QCheck 0.24
═══════════

Archive: <https://discuss.ocaml.org/t/ann-qcheck-0-24/16198/1>

Jan Midtgaard announced
───────────────────────

I'm happy to announce the 0.24 release of `qcheck', `qcheck-core',
`qcheck-alcotest', and `qcheck-ounit', along with a 0.6 release of
`ppx_deriving_qcheck' :tada:

`QCheck' is a library for randomized property-based testing, inspired
by Haskell's seminal QuickCheck library. The 0.24 release contains a
range of improvements to the integrated shrinking of `QCheck2',
initially introduced in the 0.18 release. As a consequence, its
shrinking algorithms should act more predictably, reduce faster, and
report smaller counterexamples. In essence, the 0.24 release is what
we hoped 0.18 would be. The release also adds missing `result',
`int32', and `int64' combinators, as well as more documentation.

If you've previously given `QCheck2''s integrated shrinking a spin, I
encourage you to try it again with the patched 0.24 release. For new
users, the 0.24 release is also a good candidate to check out!
:smiley: Please share any problems you encounter on the `qcheck' repo:
<https://github.com/c-cube/qcheck>

Full change log:

• [qcheck-alcotest] Add an optional `speed_level' parameter to
`to_alcotest'
• Adjust the `QCheck2.Gen.list' shrinker to produce minimal
counterexamples at size 3 too
• Replace the `QCheck2' OCaml 4 `Random.State.split' hack with a
faster one
• Improve the `QCheck2.Gen.list' shrinker heuristic and utilize the
improved shrinker in other `QCheck2'
`{list,array,bytes,string,function}*' shrinkers
• Use `split' and `copy' in `Random.State' underlying `QCheck2' to
avoid non-deterministic shrinking behaviour
• Add missing documentation strings for
`QCheck.{Print,Iter,Shrink,Gen}' and `QCheck2.Gen'.
• Add `result' combinators to `QCheck',
`QCheck.{Gen,Print,Shrink,Observable}', and
`QCheck2.{Gen,Print,Observable}'.
• Add missing combinators `QCheck{,2}.Print.int{32,64}',
`QCheck.Gen.int{32,64}', `QCheck{,2}.Observable.int{32,64}', and
deprecate `QCheck.Gen.{ui32,ui64}'
• Document `dune' usage in README

Happy testing! :smiley: :keyboard:

Bogue, the OCaml GUI
════════════════════

Archive: <https://discuss.ocaml.org/t/ann-bogue-the-ocaml-gui/9099/63>

sanette announced
─────────────────

Dear all,

I’m happy to announce a new version of [Bogue], version 20250224, now
availble on `opam'.

The main novelty is a brand new *File dialog*. It will open a new
window (or popup) which will let the user navigate the file system and
select one or more files or directories.

This corresponds to the new [File] module.

You might also be interested in the [Monitor] submodule, which
implements a *file monitoring* API based on `fswatch' (if available)
or `Unix.stat'.

If you are curious, here is a graphical summary of the current
functionalities of Bogue's file dialog (I hope that more will be added
soon; I'm open to suggestions)

<https://us1.discourse-cdn.com/flex020/uploads/ocaml/original/2X/b/b6efbe5eb40237db0fc4b5f036b1637a79de7875.png>

PS: @Sachindra_Ragul, yes we did it finally ;) better late than never

[Bogue] <https://github.com/sanette/bogue>

[File] <http://sanette.github.io/bogue/Bogue.File.html>

[Monitor] <http://sanette.github.io/bogue/Bogue.File.Monitor.html>

Opam repository archival - next phase
═════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/opam-repository-archival-next-phase/16203/1>

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

Dear everyone,

sorry for the silence – the phase 3 of the opam repository archival
(taking the x-maintenance-intent into account) has to be delayed by
(tentatively) one month. The reason is that our tooling is not ready -
the task, given an opam repository and maintenance-intent on packages,
which can be safely archived, is harder than it seems:
• we've to take compiler versions into account
• there may be a package X in version 1 and 2, both supporting OCaml
4.08, but depend on package Y (where X.1 depends on Y >= 1, and X.2
depends on Y >= 2) – now Y.1 could support OCaml 4.08, and Y.2 only
OCaml 4.12 – so it is not safe to archive X.1 (since on OCaml 4.08
there won't be any X installable). And this may be deeply nested in
the dependency chain

It is useful if you mark your packages with `x-maintenance-intent' (as
mentioned in
<https://discuss.ocaml.org/t/opam-repository-archive-clarification-of-the-opam-fields>).

We'll let you know once we have tooling in place to cope with the task
described above (development is happening here:
<https://github.com/hannesm/maintenance-intent-filter>).

Upcoming Cmdliner 2.0 changes that need your attention
══════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/upcoming-cmdliner-2-0-changes-that-need-your-attention/16211/1>

Daniel Bünzli announced
───────────────────────

If you are a user of `cmdliner' note that cmdliner 2.0 – in exchange
for auto-completion support – will remove the ability to specify
command and options names by unambiguous prefixes according to [this
plan of action].

If you are horrified by it please chime in on the issue.

[this plan of action] <https://github.com/dbuenzli/cmdliner/issues/200>

OCaml Editors Plugins Survey
════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-editors-plugins-survey/16216/1>

PizieDust announced
───────────────────

Hello, we are conducting a short survey to better understand how you
use the different editor plugins available for OCaml. Please take a
few minutes (ideally 5) to fill out the form.

<https://docs.google.com/forms/d/e/1FAIpQLSfGGFZBiw4PF7L0yt2DBX8443G5_7aFL5v6wvo6p5MwL-DW8Q/viewform?usp=pp_url&entry.454013858=Discuss>

Thank you :) :camel:

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

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

Etienne Marais announced
────────────────────────

Hi everyone :camel:

The next Dune Dev Meeting will be on *Wednesday, March, 5th at 9:00
CET*. This is going to be a one-hour-long meeting.

Whether you are a maintainer, a regular contributor, a new joiner or
just curious, you are welcome to join: these discussions are opened!
The goal of these meetings is to provide a place to discuss the
ongoing work together and synchronize with the Dune developers :smile:

The agenda is available on the [meeting dedicated page]. Feel free to
add more items in it.

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

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

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

[google calendar]
<https://calendar.google.com/calendar/u/0/embed?src=c_5cd698df6784e385b1cdcdc1dbca18c061faa96959a04781566d304dc9ec7319@group.calendar.google.com>

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

Platform Newsletter: September - December 2024
══════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/platform-newsletter-september-december-2024/16221/1>

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

Welcome to the thirteenth edition of the OCaml Platform newsletter!

In this September-December 2024 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].

*Highlights:*

• *Dune Enables Cache By Default, Adds WebAssembly Support* The latest
Dune releases mark significant progress in build performance and
language support. Version 3.17.0 enables the Dune cache by default
for known-safe operations, improving build times for common
tasks. The addition of Wasm_of_ocaml support opens new possibilities
for OCaml projects targeting the web or other WebAssembly
runtimes. In addition, Dune now supports adding Codeberg and GitLab
repositories via the `(source)' stanza.
• *opam 2.3.0* As announced with opam 2.2, opam releases are now
time-based with a cadence of 6 months. Opam 2.3 has been released
last November. It contains a major breaking change regarding
extra-files handling: extra-files are now ignored when they are not
present in the opam file. Previously they were silently added. This
release adds also some new commands like `opam list --latest-only'
or `opam install foo --verbose-on bar', among other fixes and
enhancements.
• *Improved Editor Workflows with OCaml-LSP and Merlin* A major
milestone for project-wide features has been reached with the
release of OCaml 5.3: LSP's renaming feature now [_renames symbols
in the entire project_] if the index is built. Additionally,all of
the classic merlin-server commands are now available as LSP custom
requests: this enabled the addition of [many new features to the
Visual Studio Code plugin]. Finally a brand new Emacs mode, based on
LSP and the new custom queries is [now available on Melpa].
• *Performance and Security Enhancements* Recent updates across the
platform focus on performance and reliability. Dune optimized its
handling of .cmxs files, while opam implemented stricter git
submodule error checking. OCaml-LSP resolved file descriptor leaks,
contributing to a more stable development environment.

*Feature Guides & Announcements:*

• [Installing Developer Tools with Dune]
• [Shell Completions in Dune Developer Preview]
• [OCaml Infrastructure: Enhancing Platform Support and User
Experience]
• [Call for Feedback]

*Releases:*

• [OCaml-LSP 1.20.1]
• [opam-publish 2.5.0]
• [Merlin 5.3-502 for OCaml 5.2 and 4.18-414 for OCaml 4.14]
• [Dune 3.17.1]
• [OCamlformat 0.27.0]
• [Dune 3.17.0]
• [opam 2.3.0]
• [Dune 3.16.1]
• [Merlin 5.2.1-502 for OCaml 5.2 and 4.17.1 for OCaml 5.1 and 4.14]

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

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

[_renames symbols in the entire project_]
<https://discuss.ocaml.org/t/ann-merlin-and-ocaml-lsp-support-experimental-project-wide-renaming/16008>

[many new features to the Visual Studio Code plugin]
<https://tarides.com/blog/2025-02-28-full-blown-productivity-in-vscode-with-ocaml/>

[now available on Melpa] <https://melpa.org/#/ocaml-eglot>

[Installing Developer Tools with Dune]
<https://ocaml.org/changelog/2024-11-15-installing-developer-tools-with-dune>

[Shell Completions in Dune Developer Preview]
<https://ocaml.org/changelog/2024-10-29-shell-completions-in-dune-developer-preview>

[OCaml Infrastructure: Enhancing Platform Support and User Experience]
<https://ocaml.org/changelog/2024-10-02-updates>

[Call for Feedback]
<https://ocaml.org/changelog/2024-09-25-call-for-feedback>

[OCaml-LSP 1.20.1]
<https://ocaml.org/changelog/2024-12-23-ocaml-lsp-1.20.1>

[opam-publish 2.5.0]
<https://github.com/ocaml-opam/opam-publish/releases/tag/2.5.0>

[Merlin 5.3-502 for OCaml 5.2 and 4.18-414 for OCaml 4.14]
<https://ocaml.org/changelog/2024-12-23-merlin-5.3.502-and-4.18.414>

[Dune 3.17.1] <https://ocaml.org/changelog/2024-12-18-dune.3.17.1>

[OCamlformat 0.27.0]
<https://ocaml.org/changelog/2024-12-02-ocamlformat-0.27.0>

[Dune 3.17.0] <https://ocaml.org/changelog/2024-11-27-dune.3.17.0>

[opam 2.3.0] <https://ocaml.org/changelog/2024-11-13-opam-2-3-0>

[Dune 3.16.1] <https://ocaml.org/changelog/2024-10-30-dune.3.16.1>

[Merlin 5.2.1-502 for OCaml 5.2 and 4.17.1 for OCaml 5.1 and 4.14]
<https://ocaml.org/changelog/2024-09-27-merlin-5.2.1>

*Dune*
╌╌╌╌╌╌

*Roadmap:* [Develop / (W4) Build a Project]

[Dune 3.17 was released] with significant improvements to package
management. Key features include binary distribution support, better
error messages for missing packages, and Windows support without
requiring OPAM.

The [Dune Developer Preview website] now provides editor setup
instructions and package management tutorials.

Dune's package management features [were tested across hundreds of
packages] in the opam repository, and a coverage tool was developed to
track build success rates. For local development, Dune added support
for building dependencies via `@pkg-install', caching for package
builds, and automated binary builds of development tools. The system
supports both monorepo and polyrepo workflows, with options for
installing individual dependencies or complete development
environments.

The addition of [Wasm_of_ocaml support in Dune] opens new
possibilities for OCaml projects targeting the web or other
WebAssembly runtimes.

*Activities:*
• Updated preview website with editor setup instructions at
<https://preview.dune.build> and published binary installer
providing prebuilt Dune binaries
• [Enable dune cache by default]
• [Added wasm_of_ocaml support]
• Added support for [Codeberg] and [GitLab organizations] in the
`(source)' stanza
• [Added support for `-H' compiler flag] enabling better semantics for
`(implicit_transitive_deps false)'

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

[Develop / (W4) Build a Project]
<https://ocaml.org/docs/platform-roadmap#w4-build-a-project>

[Dune 3.17 was released]
<https://discuss.ocaml.org/t/ann-dune-3-17/15770>

[Dune Developer Preview website] <https://preview.dune.build>

[were tested across hundreds of packages] <https://dune.check.ci.dev/>

[Wasm_of_ocaml support in Dune]
<https://github.com/ocaml/dune/pull/11093>

[Enable dune cache by default]
<https://github.com/ocaml/dune/pull/10710>

[Added wasm_of_ocaml support] <https://github.com/ocaml/dune/pull/11093>

[Codeberg] <https://github.com/ocaml/dune/pull/10904>

[GitLab organizations] <https://github.com/ocaml/dune/pull/10766>

[Added support for `-H' compiler flag]
<https://github.com/ocaml/dune/pull/10644>

*Editor Tools*
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

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

Developer tooling received substantial upgrades during the end of last
year and the beginning 2025. A major milestone for project-wide
features has been reached with the release of OCaml 5.3: LSP's
renaming feature now [_renames symbols in the entire project_] if the
index is built. Additionally, all of the classic merlin-server
commands are now available as LSP custom requests: this enabled the
addition of [many new features to the Visual Studio Code plugin] and
the creation of a brand new Emacs mode, based on LSP, [now available
on Melpa].

These features bring OCaml editor support closer to modern IDE
capabilities, with implementations available across multiple editors.

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

[Edit / (W20) Refactor Code]
<https://ocaml.org/tools/platform-roadmap#w20-refactor-code>

[_renames symbols in the entire project_]
<https://discuss.ocaml.org/t/ann-merlin-and-ocaml-lsp-support-experimental-project-wide-renaming/16008>

[many new features to the Visual Studio Code plugin]
<https://tarides.com/blog/2025-02-28-full-blown-productivity-in-vscode-with-ocaml/>

[now available on Melpa] <https://melpa.org/#/ocaml-eglot>

◊ Merlin and OCaml LSP Server

Support for project wide renaming, search-by-type, and
ocaml-lsp-server now exposes all Merlin features via LSP custom
queries.

*Notable Activity*
• OCaml 5.3 support ([merlin#1850])
• Project-wide renaming is now available. ([ocaml-lsp#1431] and
[merlin#1877])
• A new option to mute hover responses has been added for better
integration with alternative hover providers ([ocaml-lsp#1416])
• New type-based search support similar to Hoogle ([ocaml-lsp#1369]
and [merlin#1828])

*Bug Fixes*
• Fixed completion range issues with polymorphic variants
([ocaml-lsp#1427])
• Fixed various issues with jump code actions and added customization
options ([ocaml-lsp#1376])
• Various fixes and improvements have been made to signature help and
inlay hints

[merlin#1850] <https://github.com/ocaml/merlin/pull/1850>

[ocaml-lsp#1431] <https://github.com/ocaml/ocaml-lsp/pull/1431>

[merlin#1877] <https://github.com/ocaml/merlin/pull/1877>

[ocaml-lsp#1416] <https://github.com/ocaml/ocaml-lsp/pull/1416>

[ocaml-lsp#1369] <https://github.com/ocaml/ocaml-lsp/pull/1369>

[merlin#1828] <https://github.com/ocaml/merlin/pull/1828>

[ocaml-lsp#1427] <https://github.com/ocaml/ocaml-lsp/issues/1427>

[ocaml-lsp#1376] <https://github.com/ocaml/ocaml-lsp/pull/1376>

◊ Visual Studio Code plugin

Added support for most of the Merlin features historically availbale
to Emacs and Vim users, via the new LSP custom requests.

*Notable Activity*

• Improved typed-of-selection feature, with ability to grow or shrink
the selection and increase verbosity ([#1675]).
• Improved jump navigation ([#1654]), search-by-type ([#1626])
• Improved typed holes navigation ([#1666]).git push –set-upstream
origin publish_platform_newsletter_q4_24
• New search-by-type command ([#1626]).

*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)

[#1675] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1675>

[#1654] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1654>

[#1626] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1626>

[#1666] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1666>

◊ Emacs support

A brand new Emacs plugin based on the Eglot LSP client is now ready
for daily usage: <https://github.com/tarides/ocaml-eglot>.

*Documentation Tools*
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

*Roadmap:* [Share / (W25) Generate Documentation]

[Share / (W25) Generate Documentation]
<https://ocaml.org/tools/platform-roadmap#w25-generate-documentation>

◊ Odoc

*Maintained by:* Jon Ludlam (@jonludlam, Tarides), Daniel Bünzli
(@dbuenzli), Jules Aguillon (@julow, Tarides), Paul-Elliot Anglès
d'Auriac (@panglesd, Tarides), Emile Trotignon (@EmileTrotignon,
Tarides, then Ahrefs)

There is now a [beta release for odoc 3] that you can try out and give
feedback on!

During the quarter, odoc has been making steady progress toward its
3.0 release with several notable improvements:
• *Enhanced Navigation*: The sidebar and breadcrumbs navigation has
been unified and improved ([#1251]), making the documentation
hierarchy more consistent and flexible. This allows better
organization of modules, pages, and source files in the
documentation.
• *Documentation Features*: New features have been added to Odoc 3
([#1264]), including:
• Support for images with embedded assets
• Cross-package linking (linking to modules from external libraries)
• *Search Integration*: Sherlodoc, the search functionality, has been
merged into the main odoc codebase ([#1263]), ensuring better
maintenance and synchronized releases.

*Notable Activity*
• [Odoc 3 Beta Release]

[beta release for odoc 3]
<https://discuss.ocaml.org/t/ann-odoc-3-beta-release/16043>

[#1251] <https://github.com/ocaml/odoc/pull/1251>

[#1264] <https://github.com/ocaml/odoc/pull/1264>

[#1263] <https://github.com/ocaml/odoc/pull/1263>

[Odoc 3 Beta Release]
<https://discuss.ocaml.org/t/ann-odoc-3-beta-release/16043>

◊ Mdx upgraded to OCaml 5.3

*Maintained by:* Marek Kubica (@Leonidas-from-XIV, Tarides), Thomas
Gazagnaire (@samoht, Tarides)

With OCaml 5.3, some compiler error messages changed, so MDX was
updated to use a more expressive tag system to choose which version of
the compiler can run which code block. This effort uncovered a bug in
the current handling of skipped blocks for `mli' files, which was
fixed.

*Notable Activity*
• OCaml 5.3 support ([#457]), ensuring the tool remains compatible
with the latest OCaml releases.
• Fixed error handling for skipped blocks in `mli' files ([#462])
• Improved syntax highlighting ([#461])
• Added support for multiple version labels ([#458]), improving the
ability to test code across different OCaml versions.

[#457] <https://github.com/realworldocaml/mdx/pull/457>

[#462] <https://github.com/realworldocaml/mdx/pull/462>

[#461] <https://github.com/realworldocaml/mdx/pull/461>

[#458] <https://github.com/realworldocaml/mdx/pull/458>

*Package Management*
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ Opam

[Opam 2.3.0 was released in November]. We are now working towards the
2.4 release, with some new sub commands (`admin', `source', `switch',
etc.), fixes (pinning, switch, software heritage fallback, UI) and
enhancements.

*Notable Activity*
• Add several checksum, `extra-files' and `extra-source' lints -
[#5561]
• Add options `opam source --require-checksums' and `--no-checksums'
to harmonise with `opam install' - [#5563]
• Add the current VCS revision information to `opam pin list' -
[#6274] - fix [#5533]
• Make opamfile parsing more robust for future changes - [#6199] - fix
[#6188]
• Fix `opam switch remove ' failure when it is a linked switch -
[#6276] - fix [#6275]
• Fix `opam switch list-available' when given several arguments -
[#6318]
• Correctly handle `pkg.version' pattern in `opam switch
list-available' - [#6186] - fix [#6152]
• Fix sandbox for NixOS [#6333], and `DUNE_CACHE_ROOT' environment
variabale usage - [#6326]
• Add `opam admin compare-versions' to ease version comparison for
sanity checks [#6197] and fix `opam admin check' in the presence of
some undefined variables - [#6331] - fix [#6329]
• When loading a repository, don’t automatically populate
`extra-files:' field with found files in `files/' - [#5564]
• Update and fix Software Heritage fallback - [#6036] - fix [#5721]
• Warn if a repository to remove doesn’t exist - [#5014] - fix [#5012]
• Silently mark packages requiring an unsupported version of opam as
unavailable - [#5665] - fix [#5631]
• Display switch invariant with the same syntax that it is written in
file (no pretty printing) - [#5619] - fix [#5491]
• Fix output display regarding terminal size [#6244] - fix [#6243]
• Change default answer display - [#6289] - fix [#6288]
• Add a warning when setting a variable with `opam var' if an option
is shadowed - [#4904] - fix [#4730]
• Improve the error message when a directory is not available while
fetching using rsync - [#6027]
• Fix `install.exe' search path on Windows - [#6190]
• Add `ALTLinux' support for external dependencies - [#6207]
• Make `uname' information more robust accros ditributions - [#6127]

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

[Opam 2.3.0 was released in November]
<https://ocaml.org/changelog/2024-11-13-opam-2-3-0>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

◊ Dune-release

*Roadmap:* [Share / (W26) Package Publication]

Dune-release has been improved to better handle publishing packages
from custom repositories and private Git repositories.

*Notable Activity*
• Support for overwriting the dev-repo field when creating GitHub
tags/releases ([#494]), which a useful for private projects

*Maintained by:* Thomas Gazagnaire (@samoht, Tarides), Etienne Millon
(@emillon, Tarides), Marek Kubica (@Leonidas-from-XIV, Tarides)

[Share / (W26) Package Publication]
<https://ocaml.org/tools/platform-roadmap#w26-package-publication>

[#494] <https://github.com/tarides/dune-release/pull/494>

◊ Opam-publish

*Notable Activity*
• Integration of Opam CI Lint functionality into `opam-publish'
([#166], [#165]) to validate packages before submission
• A new `--pre-release' argument added to handle pre-release packages
correctly ([#164])

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

[#166] <https://github.com/ocaml-opam/opam-publish/pull/166>

[#165] <https://github.com/ocaml-opam/opam-publish/issues/165>

[#164] <https://github.com/ocaml-opam/opam-publish/pull/164>

Other OCaml News
════════════════

From the ocaml.org blog
───────────────────────

Here are links from many OCaml blogs aggregated at [the ocaml.org
blog].

• [Full blown productivity in VSCode with OCaml]

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

[Full blown productivity in VSCode with OCaml]
<https://tarides.com/blog/2025-02-28-full-blown-productivity-in-vscode-with-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].

[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: 47588 bytes --]