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: 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] 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] Ocaml notebooks in web browser ══════════════════════════════ Archive: 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] [new issues] Cure2 - combinator frontend for re2 ═══════════════════════════════════ Archive: 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] 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] [Setting up Open Telemetry (OTel, Prometheus, Grafana and Jaeger) with OCaml] [CI support for OCaml 5.4] 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] [the archive] [RSS feed of the archives] [caml-list] [Alan Schmitt]