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

Alan Schmitt
2025-10-21T09:17:55Z

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

Hello

Here is the latest OCaml Weekly News, for the week of October 14 to 21,
2025.

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

Backstage OCaml: ocaml.nvim - A Neovim Plugin for OCaml
Ocaml notebooks in web browser
Cure2 - combinator frontend for re2
Other OCaml News
Old CWN

Backstage OCaml: ocaml.nvim - A Neovim Plugin for OCaml
═══════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-backstage-ocaml-ocaml-nvim-a-neovim-plugin-for-ocaml/17383/1>

Charlène_Gros announced
───────────────────────

We’re excited to announce **ocaml.nvim**, a new Neovim plugin actively
being developed by Tarides that brings advanced OCaml development
features to Neovim users. Think of it as the Neovim sibling of
[ocaml-eglot], which we released earlier this year for Emacs users.

[ocaml-eglot] <https://github.com/tarides/ocaml-eglot>

What is ocaml.nvim?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

Modern code editors communicate with programming languages through the
Language Server Protocol (LSP), which provides essential features like
syntax checking, code navigation, and auto-completion. However,
OCaml’s language server exposes powerful custom commands beyond what
generic LSP clients can access.

ocaml.nvim works alongside generic Neovim LSP plugins like
`nvim-lspconfig', providing direct access to advanced ocamllsp
features without requiring complex editor-side logic. The plugin gives
you access to all the advanced Merlin commands not supported by
generic LSP clients.

Key Features
╌╌╌╌╌╌╌╌╌╌╌╌

*Typed Holes Navigation* - Navigate between typed holes (`_') and
interactively substitute them with the Construct command.

*Semantic Navigation* - Move through your code semantically: jump
between expressions, parent `let' bindings, modules, functions, and
`match' expressions.

*Phrase Navigation* - Move between OCaml phrases (top-level
definitions) in your buffer.

Many more features are in development, including alternating between
`.ml' and `.mli' files, type enclosing, and pattern matching
generation.

Getting Started
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

Installation is straightforward with lazy.nvim:

┌────
│ require("lazy").setup({
│ { "tarides/ocaml.nvim",
│ config = function()
│ require("ocaml").setup()
│ end
│ }
│ })
└────

The plugin complements your existing LSP setup—you’ll continue to use
Neovim’s built-in LSP for standard features while ocaml.nvim adds
OCaml-specific capabilities.

Project Status
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

The ocaml.nvim repository is now public on [GitHub], with
comprehensive documentation, a feature table, and screencast
demonstrations. We’re working towards a stable 1.0 release and welcome
feedback from the community.

Try out `ocaml.nvim' and let us know what you think! For questions or
feedback, you can post an issue on the ocaml.nvim GitHub repository.

[GitHub] <https://github.com/tarides/ocaml.nvim>

Ocaml notebooks in web browser
══════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ocaml-notebooks-in-web-browser/17385/1>

Davy announced
──────────────

Hello everyone !

I’m currently learning Ocaml, and found no better way to learn than
working on a project :

I’m happy to announce *xeus-ocaml*, a new kernel to run Ocaml from
*Jupyterlite* notebooks :partying_face:

I’m far from a professional developer, and very new to Ocaml, so do
not hesitate to [try it] with your workflow, report any [new issues],
ask for other external libraries (currently only stdlib and
ocamlgraph), or contribute to its development to make the code more
robust and idiomatic.

Any feedback would be appreciated!

[try it]
<https://davy39.github.io/xeus-ocaml/lab/index.html?path=demo.ipynb>

[new issues] <https://github.com/davy39/xeus-ocaml/issues/new>

Cure2 - combinator frontend for re2
═══════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-cure2-combinator-frontend-for-re2/17410/1>

Emile Trotignon announced
─────────────────────────

[Cure2] is a little library I just made, that provide a combinator
frontend to Re2.

With it, instead of
`"https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&//=]*)"',
you can write:

┌────
│ let second_level_char = charset Charset.[Ascii.alnum; chars "-@:%._\\+~#="] in
│ let top_level_chars = charset Charset.[Ascii.alnum; chars "()"] in
│ let path_chars = charset Charset.[Ascii.alnum; chars "()@:%_\\+.~#?&/="] in
│ str "http" + !?(char 's') + str "://"
│ + !?(str "www.") + rep ~min:1 ~max:256 second_level_char
│ + char '.' + rep ~min:1 ~max:6 top_level_chars
│ + bow + rep path_chars
└────

[Cure2] <https://github.com/ahrefs/cure2>

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

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

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

• [Setting up Open Telemetry (OTel, Prometheus, Grafana and Jaeger)
with OCaml]
• [CI support for OCaml 5.4]

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

[Setting up Open Telemetry (OTel, Prometheus, Grafana and Jaeger) with
OCaml] <https://fearful-odds.rocks/blog/setting-up-otel-with-ocaml>

[CI support for OCaml 5.4]
<https://www.tunbury.org/2025/10/18/ci-support-for-ocaml-54/>

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