<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sabine Schmaltz</title>
    <description>The latest articles on DEV Community by Sabine Schmaltz (@sabine_ocaml).</description>
    <link>https://dev.to/sabine_ocaml</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2709388%2Fc2981aac-6550-49e0-8990-5ce939eddc2d.png</url>
      <title>DEV Community: Sabine Schmaltz</title>
      <link>https://dev.to/sabine_ocaml</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sabine_ocaml"/>
    <language>en</language>
    <item>
      <title>OCaml Platform Newsletter: May to August 2025</title>
      <dc:creator>Sabine Schmaltz</dc:creator>
      <pubDate>Thu, 04 Sep 2025 13:33:29 +0000</pubDate>
      <link>https://dev.to/sabine_ocaml/ocaml-platform-newsletter-may-to-august-2025-11dl</link>
      <guid>https://dev.to/sabine_ocaml/ocaml-platform-newsletter-may-to-august-2025-11dl</guid>
      <description>&lt;p&gt;Welcome to the fifteenth edition of the OCaml Platform newsletter!&lt;/p&gt;

&lt;p&gt;In this May to August 2025 edition, we are excited to bring you the latest on the OCaml Platform, continuing our tradition of highlighting recent developments as seen in &lt;a href="https://discuss.ocaml.org/tag/platform-newsletter" rel="noopener noreferrer"&gt;previous editions&lt;/a&gt;. To understand the direction we're headed, especially regarding development workflows and user experience improvements, check out our &lt;a href="https://ocaml.org/docs/platform-roadmap" rel="noopener noreferrer"&gt;roadmap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://discuss.ocaml.org/t/ocaml-platform-newsletter-may-to-august-2025/17208" rel="noopener noreferrer"&gt;comment on this newsletter on the OCaml Discuss Forums&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://www.linkedin.com/newsletters/ocaml-platform-newsletter-7305270694567661568/" rel="noopener noreferrer"&gt;subscribe to this newsletter on LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Editor Integration&lt;/strong&gt;: OCaml-LSP 1.23.0 and Merlin 5.5 provide improved project navigation and error reporting. New ocaml-eglot brings modern LSP support to Emacs users. Continued work on project-wide features brings OCaml's development experience closer to modern IDEs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Package Management&lt;/strong&gt;: opam 2.4.0 stable release eliminates GNU patch/diff dependencies, improves newcomer experience by avoiding problematic system compilers by default, and provides better handling of deprecated packages. This addresses common setup issues that previously complicated OCaml adoption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Testing Workflows&lt;/strong&gt;: Dune 3.20 introduces concurrent watch mode operations, named test aliases for running specific tests (&lt;code&gt;@runtest-testname&lt;/code&gt;), and timeout support for cram tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation and Tooling Maturity&lt;/strong&gt;: Odoc 3.1.0 refines cross-package linking capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCaml 5.4.0-beta1:&lt;/strong&gt; you can help test upcoming compiler improvements!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Announcements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-26-ocaml-eglot-brings-lsp-support-to-emacs" rel="noopener noreferrer"&gt;Emacs Integration for OCaml LSP Server: Introducing ocaml-eglot&lt;/a&gt; (August 26, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-05-portable-external-dependencies-for-dune-package-management" rel="noopener noreferrer"&gt;Dune Developer Preview: Portable External Dependencies for Dune Package Management&lt;/a&gt; (June 5, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-19-portable-lock-directories-for-dune-package-management" rel="noopener noreferrer"&gt;Dune Developer Preview: Portable Lock Directories for Dune Package Management&lt;/a&gt; (May 19, 2025)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stable Releases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-26-dune3201" rel="noopener noreferrer"&gt;Dune 3.20.1&lt;/a&gt; (August 26, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-21-dune-3200" rel="noopener noreferrer"&gt;Dune 3.20.0&lt;/a&gt; (August 21, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-25-utop-2160" rel="noopener noreferrer"&gt;Utop 2.16.0&lt;/a&gt; (July 25, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://ocaml.org/changelog/2025-07-23-opam-2-4-1" rel="noopener noreferrer"&gt;opam 2.4.1&lt;/a&gt; (July 23, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-18-opam-2-4-0" rel="noopener noreferrer"&gt;opam 2.4.0&lt;/a&gt; (July 18, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-15-odoc-310" rel="noopener noreferrer"&gt;Odoc 3.1.0&lt;/a&gt; (July 15, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-10-ppxlib-0361" rel="noopener noreferrer"&gt;Ppxlib 0.36.1&lt;/a&gt; (July 10, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-24-ocaml-lsp-1230" rel="noopener noreferrer"&gt;OCaml-LSP 1.23.0&lt;/a&gt; (June 24, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-24-merlin-v55-503" rel="noopener noreferrer"&gt;Merlin 5.5-503&lt;/a&gt; (June 24, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-23-ocaml-lsp-1210-414" rel="noopener noreferrer"&gt;OCaml-LSP 1.21.0-4.14 for OCaml 4.14&lt;/a&gt; (June 23, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-23-merlin-v419-414" rel="noopener noreferrer"&gt;Merlin 4.19-414&lt;/a&gt; (June 23, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-11-dune.3.19.1" rel="noopener noreferrer"&gt;Dune 3.19.1&lt;/a&gt; (June 11, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-23-dune.3.19.0" rel="noopener noreferrer"&gt;Dune 3.19.0&lt;/a&gt; (May 23, 2025)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Unstable Releases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-12-dune-3200alpha4" rel="noopener noreferrer"&gt;Dune 3.20.0~alpha4&lt;/a&gt; (August 12, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-06-dune-3200alpha3" rel="noopener noreferrer"&gt;Dune 3.20.0~alpha3&lt;/a&gt; (August 6, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-08-05-dune-3200alpha2" rel="noopener noreferrer"&gt;Dune 3.20.0~alpha2&lt;/a&gt; (August 5, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-30-dune-3200alpha1" rel="noopener noreferrer"&gt;Dune 3.20.0~alpha1&lt;/a&gt; (July 30, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-28-dune-3200alpha0" rel="noopener noreferrer"&gt;Dune 3.20.0~alpha0&lt;/a&gt; (July 28, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-22-ocaml-540-beta1" rel="noopener noreferrer"&gt;OCaml 5.4.0-beta1&lt;/a&gt; (July 22, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-04-opam-240-rc1" rel="noopener noreferrer"&gt;opam 2.4.0~rc1&lt;/a&gt; (July 4, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-06-19-opam-240-beta1" rel="noopener noreferrer"&gt;opam 2.4.0~beta1&lt;/a&gt; (June 19, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-22-ocaml-540-alpha1" rel="noopener noreferrer"&gt;OCaml 5.4.0-alpha1&lt;/a&gt; (May 22, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-20-dune-3190alpha0" rel="noopener noreferrer"&gt;Dune 3.19.0~alpha0&lt;/a&gt; (May 20, 2025)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-05-opam-240-alpha2" rel="noopener noreferrer"&gt;opam 2.4.0~alpha2&lt;/a&gt; (May 5, 2025)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Dune
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap&lt;/strong&gt;: &lt;a href="https://ocaml.org/docs/platform-roadmap#w4-build-a-project" rel="noopener noreferrer"&gt;Develop / (W4) Build a Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The release introduces the &lt;code&gt;dune describe location&lt;/code&gt; command for printing the path to executables.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dune runtest&lt;/code&gt; now understands absolute paths and can run tests in specific build contexts. Improvements to cram test handling fix issues where tests attached to multiple aliases would run multiple times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing Workflow Improvements
&lt;/h3&gt;

&lt;p&gt;Dune 3.20 significantly improves testing workflows with named test aliases. Tests declared with &lt;code&gt;(test (name a))&lt;/code&gt; can now be run individually using &lt;code&gt;dune build @runtest-a&lt;/code&gt;. Inline test libraries produce aliases like &lt;code&gt;@runtest-name_of_lib&lt;/code&gt;, allowing targeted execution of specific test suites without running the entire test battery.&lt;/p&gt;

&lt;p&gt;The new &lt;code&gt;(timeout &amp;lt;float&amp;gt;)&lt;/code&gt; field for cram tests prevents runaway tests from blocking CI pipelines. Combined with the ability to run &lt;code&gt;dune promote&lt;/code&gt; while watch mode is active, these features remove common friction points in test-driven development workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance and Watch Mode Enhancements
&lt;/h3&gt;

&lt;p&gt;Dune's watch mode now supports concurrent &lt;code&gt;dune exec&lt;/code&gt; operations and file promotion without requiring restarts, maintaining development flow during iterative changes.&lt;/p&gt;

&lt;p&gt;The introduction of the 'empty' alias containing no targets provides more flexible build target management. New &lt;code&gt;--alias&lt;/code&gt; and &lt;code&gt;--alias-rec&lt;/code&gt; flags offer alternatives to the &lt;code&gt;@@&lt;/code&gt; and &lt;code&gt;@&lt;/code&gt; command-line syntax.&lt;/p&gt;

&lt;p&gt;Dune 3.20 switches from MD5 to BLAKE3 for digesting targets and rules, providing both performance improvements and better cryptographic properties.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced implicit transitive dependency handling for OCaml 5.2+ compatibility (&lt;a href="https://github.com/ocaml/dune/pull/11866" rel="noopener noreferrer"&gt;#11866&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improved alias system with new 'empty' alias support (&lt;a href="https://github.com/ocaml/dune/issues/11556" rel="noopener noreferrer"&gt;#11556&lt;/a&gt;, &lt;a href="https://github.com/ocaml/dune/pull/11952" rel="noopener noreferrer"&gt;#11952&lt;/a&gt;, &lt;a href="https://github.com/ocaml/dune/pull/11955" rel="noopener noreferrer"&gt;#11955&lt;/a&gt;, &lt;a href="https://github.com/ocaml/dune/pull/11956" rel="noopener noreferrer"&gt;#11956&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Better integration between promotion workflows and watch mode (&lt;a href="https://github.com/ocaml/dune/pull/12010" rel="noopener noreferrer"&gt;#12010&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed cram test duplicate execution issues (&lt;a href="https://github.com/ocaml/dune/pull/11547" rel="noopener noreferrer"&gt;#11547&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Added timeout support for cram tests (&lt;a href="https://github.com/ocaml/dune/pull/12041" rel="noopener noreferrer"&gt;#12041&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Added &lt;code&gt;dune describe location&lt;/code&gt; command (&lt;a href="https://github.com/ocaml/dune/pull/11905" rel="noopener noreferrer"&gt;#11905&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Named test aliases for targeted test execution (&lt;a href="https://github.com/ocaml/dune/pull/11558" rel="noopener noreferrer"&gt;#11558&lt;/a&gt;, &lt;a href="https://github.com/ocaml/dune/pull/11109" rel="noopener noreferrer"&gt;#11109&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;BLAKE3 migration for improved performance (&lt;a href="https://github.com/ocaml/dune/pull/11735" rel="noopener noreferrer"&gt;#11735&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  Dune Package Management
&lt;/h3&gt;

&lt;p&gt;Portable lock directories appear as an experimental feature. This is a major prospective enhancement for teams working across different platforms. Lockfile naming in the experimental feature now includes version numbers (e.g., &lt;code&gt;ocaml-compiler.5.3.0.pkg&lt;/code&gt; instead of &lt;code&gt;ocaml-compiler.pkg&lt;/code&gt;) to handle cases where different platforms require different package versions in the same project.&lt;/p&gt;

&lt;p&gt;The portable external dependencies feature extends this capability to system-level dependencies, ensuring consistent build environments across development, testing, and production systems. Combined with the existing binary cache system, this could reduce the complexity of managing OCaml projects in diverse environments.&lt;/p&gt;

&lt;p&gt;Note however, that the outcome of these experiments, and whether they mature into features on the stable version of Dune is still open. If you would like to help test and give feedback: run &lt;code&gt;dune pkg lock&lt;/code&gt; and, if you encounter issues, please report them!&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://dune.check.ci.dev" rel="noopener noreferrer"&gt;dune.check.ci.dev&lt;/a&gt;, continuous monitoring shows ecosystem compatibility progress, with a large part of Dune-based packages in opam-repository now building successfully with Dune package management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced ecosystem compatibility testing and monitoring at &lt;a href="https://dune.check.ci.dev" rel="noopener noreferrer"&gt;dune.check.ci.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tarides.com/blog/2025-06-05-opam-health-check-or-how-we-got-to-90-of-packages-building-with-dune-package-management" rel="noopener noreferrer"&gt;"Opam Health Check: or How we Got to 90+% of Packages Building with Dune Package Management"&lt;/a&gt; - detailed analysis of ecosystem compatibility progress&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dune Developer Preview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://preview.dune.build?utm_source=ocaml.org&amp;amp;utm_medium=referral&amp;amp;utm_campaign=news" rel="noopener noreferrer"&gt;Dune Developer Preview&lt;/a&gt; continues to serve as an experimental channel for cutting-edge OCaml development features. The tooling includes built-in LSP support, formatting capabilities, and a shared cache that improves build performance.&lt;/p&gt;

&lt;p&gt;The team has expanded testing beyond initial projects to include broader ecosystem validation. The binary repository provides static Linux binaries (built with musl) that work across distributions, along with native binaries for macOS on both x86_64 and aarch64 architectures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced LSP integration through automated tool management&lt;/li&gt;
&lt;li&gt;Expanded ecosystem compatibility testing as documented in the &lt;a href="https://tarides.com/blog/2025-06-05-opam-health-check-or-how-we-got-to-90-of-packages-building-with-dune-package-management" rel="noopener noreferrer"&gt;Opam Health Check blog post&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Package Management
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Opam
&lt;/h3&gt;

&lt;p&gt;The stable release of opam 2.4.0 represents a significant improvement in cross-platform reliability and user experience. The elimination of GNU &lt;code&gt;patch&lt;/code&gt; and &lt;code&gt;diff&lt;/code&gt; as runtime dependencies removes a major source of configuration issues that previously complicated deployment and CI/CD pipelines. The package manager now uses the native OCaml &lt;code&gt;patch&lt;/code&gt; library instead.&lt;/p&gt;

&lt;p&gt;The default compiler selection during &lt;code&gt;opam init&lt;/code&gt; no longer uses &lt;code&gt;ocaml-system&lt;/code&gt;, which was a common source of setup problems across different development environments. This change provides a more consistent onboarding experience for newcomers to OCaml.&lt;/p&gt;

&lt;p&gt;Package lifecycle management receives clearer visibility through enhanced handling of deprecated packages. The &lt;code&gt;opam show&lt;/code&gt; command displays deprecated packages in gray, while &lt;code&gt;opam upgrade&lt;/code&gt; removes confusing "not up-to-date" messages for packages being phased out.&lt;/p&gt;

&lt;p&gt;Development workflows benefit from the new &lt;code&gt;OPAMSOLVERTOLERANCE&lt;/code&gt; environment variable, which addresses persistent solver timeout issues. The enhanced pinning system now displays current revisions of pinned repositories, providing better transparency in development workflows that rely on unreleased versions.&lt;/p&gt;

&lt;p&gt;For Windows users, the prebuilt binaries now include Cygwin's setup executable as a fallback when cygwin.com is inaccessible, improving reliability in restricted network environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://opam.ocaml.org/blog/opam-2-4-0/" rel="noopener noreferrer"&gt;opam 2.4.0 stable release&lt;/a&gt; with comprehensive improvements&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;patch&lt;/code&gt; OCaml library instead of the &lt;code&gt;patch&lt;/code&gt; command (&lt;a href="https://github.com/ocaml/opam/pull/5892" rel="noopener noreferrer"&gt;#5892&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;UX improvements: remove &lt;code&gt;ocaml-system&lt;/code&gt; from default compiler at init (&lt;a href="https://github.com/ocaml/opam/pull/6307" rel="noopener noreferrer"&gt;#6307&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Provide a way to avoid solver timeouts (&lt;a href="https://github.com/ocaml/opam/pull/5510" rel="noopener noreferrer"&gt;#5510&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;opam lock &amp;lt;pkg&amp;gt; --keep-local&lt;/code&gt; (&lt;a href="https://github.com/ocaml/opam/pull/6411" rel="noopener noreferrer"&gt;#6411&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by&lt;/strong&gt;: Raja Boujbel (@rjbou, OCamlPro), Kate Deplaix (@kit-ty-kate, Ahrefs), David Allsopp (@dra27, Tarides)&lt;/p&gt;




&lt;h2&gt;
  
  
  Editor Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap&lt;/strong&gt;: &lt;a href="https://ocaml.org/tools/platform-roadmap#w19-navigate-code" rel="noopener noreferrer"&gt;Edit / (W19) Navigate Code&lt;/a&gt;, &lt;a href="https://ocaml.org/tools/platform-roadmap#w20-refactor-code" rel="noopener noreferrer"&gt;Edit / (W20) Refactor Code&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OCaml LSP Server and Merlin
&lt;/h3&gt;

&lt;p&gt;The release of OCaml-LSP 1.23.0 and Merlin 5.5 brings enhanced project navigation and error reporting capabilities. The release addresses several long-standing issues with jump-to-definition, occurrences reporting, and inlay hints while adding new utilities for working with typed holes.&lt;/p&gt;

&lt;p&gt;Project-wide features continue to evolve, with cross-project symbol search and refactoring capabilities bringing OCaml's editor support in line with other modern programming languages. The features work by building an index with &lt;code&gt;dune build @build-index -w&lt;/code&gt; and provide comprehensive symbol searching across entire codebases.&lt;/p&gt;

&lt;p&gt;By the way: we are currently working on a refactor feature that enables automatically extracting and inlining function parameters!&lt;/p&gt;

&lt;p&gt;Support for OCaml 4.14 continues with dedicated releases (OCaml-LSP 1.21.0-4.14 and Merlin 4.19-414).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced project navigation and symbol search capabilities&lt;/li&gt;
&lt;li&gt;Better integration with Dune package management workflows&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tarides.com/blog/2025-08-20-internship-report-refactoring-tools-coming-to-merlin" rel="noopener noreferrer"&gt;"Internship Report: Refactoring Tools Coming to Merlin"&lt;/a&gt; - new extract command for refactoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Release of &lt;a href="https://ocaml.org/changelog/2025-06-24-ocaml-lsp-1230" rel="noopener noreferrer"&gt;OCaml-LSP 1.23.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Release of &lt;a href="https://ocaml.org/changelog/2025-06-24-merlin-v55-503" rel="noopener noreferrer"&gt;Merlin 5.5-503&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OCaml 4.14 support with &lt;a href="https://ocaml.org/changelog/2025-06-23-ocaml-lsp-1210-414" rel="noopener noreferrer"&gt;OCaml-LSP 1.21.0-4.14&lt;/a&gt; and &lt;a href="https://ocaml.org/changelog/2025-06-23-merlin-v419-414" rel="noopener noreferrer"&gt;Merlin 4.19-414&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;OCaml LSP Server maintained by&lt;/strong&gt;: Ulysse Gérard (@voodoos, Tarides), Xavier Van de Woestyne (&lt;a class="mentioned-user" href="https://dev.to/xvw"&gt;@xvw&lt;/a&gt;, Tarides), Rudi Grinberg (@rgrinberg, Jane Street)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merlin maintained by&lt;/strong&gt;: Ulysse Gérard (@voodoos, Tarides), Xavier Van de Woestyne (&lt;a class="mentioned-user" href="https://dev.to/xvw"&gt;@xvw&lt;/a&gt;, Tarides)&lt;/p&gt;

&lt;h3&gt;
  
  
  Emacs Integration
&lt;/h3&gt;

&lt;p&gt;The introduction of ocaml-eglot provides Emacs users with modern LSP-based OCaml support as an alternative to the traditional merlin.el. This package leverages Emacs 29's built-in eglot LSP client, offering simplified configuration and access to project-wide features previously unavailable in Emacs.&lt;/p&gt;

&lt;p&gt;ocaml-eglot provides feature parity with other editors through ocaml-lsp-server, including project-wide search and rename capabilities. For users migrating from merlin.el, existing keybindings work immediately. The package is actively maintained, while merlin.el enters maintenance-only mode.&lt;/p&gt;

&lt;p&gt;The integration works with any OCaml major mode (tuareg, caml-mode, or neocaml) and provides error navigation, type information display, code generation through the "destruct" feature, and enhanced navigation between language constructs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-0-0/15978/14" rel="noopener noreferrer"&gt;ocaml-eglot 1.0.0 release&lt;/a&gt; bringing LSP to Emacs&lt;/li&gt;
&lt;li&gt;Subsequent releases 1.1.0 and 1.2.0 adding flycheck support and Emacs 30.1 compatibility&lt;/li&gt;
&lt;li&gt;Active development replacing maintenance-only merlin.el&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Visual Studio Code Plugin
&lt;/h3&gt;

&lt;p&gt;We're happy to announce that the Visual Studio Code editor plugin now integrates seamlessly with Dune package management! This is an important milestone for &lt;a href="https://dune.readthedocs.io/en/stable/tutorials/dune-package-management/setup.html" rel="noopener noreferrer"&gt;Dune package management&lt;/a&gt;, and if you haven't tried it, or have been waiting for it to mature, now is a great time to get started!&lt;/p&gt;

&lt;p&gt;Development continues on improving the OCaml VSCode editor plugin experience. For example, when using opam to manage your project's dependencies and &lt;code&gt;ocaml-lsp-server&lt;/code&gt; is not found in the opam switch, the plugin will now prompt users to install it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically installing/updating ocaml-lsp-server (&lt;a href="https://github.com/ocamllabs/vscode-ocaml-platform/pull/1725" rel="noopener noreferrer"&gt;#1725&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Automatically configuring dune package management (&lt;a href="https://github.com/ocamllabs/vscode-ocaml-platform/pull/1791" rel="noopener noreferrer"&gt;#1791&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Documentation Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap&lt;/strong&gt;: &lt;a href="https://ocaml.org/tools/platform-roadmap#w25-generate-documentation" rel="noopener noreferrer"&gt;Share / (W25) Generate Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Odoc
&lt;/h3&gt;

&lt;p&gt;Odoc 3.1.0 continues to refine the modern documentation experience introduced with Odoc 3.0. The cross-package linking system and multimedia support capabilities help teams create comprehensive and discoverable documentation for complex systems.&lt;/p&gt;

&lt;p&gt;The improved documentation tooling addresses ecosystem discoverability and maintainability. The ability to generate interconnected documentation across multiple packages makes large OCaml codebases more accessible for new team members and external collaborators.&lt;/p&gt;

&lt;p&gt;Work continues on integrating Odoc 3.x with the OCaml.org documentation pipeline to provide a unified documentation experience across the ecosystem. As of July 2025, Odoc 3 is now live on OCaml.org, bringing the new features to the entire package ecosystem. The improved pipeline addresses dependency complexities by using new tooling that archives and restores opam packages, eliminating redundant builds that previously occurred thousands of times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-07-15-odoc-310" rel="noopener noreferrer"&gt;Release of Odoc 3.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jon.recoil.org/blog/2025/07/odoc-3-live-on-ocaml-org.html" rel="noopener noreferrer"&gt;"Odoc 3 is now live on OCaml.org!"&lt;/a&gt; - Jon Ludlam's blog post about the deployment of Odoc 3 to ocaml.org&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jon.recoil.org/blog/2025/04/odoc-3.html" rel="noopener noreferrer"&gt;"Odoc 3: So what?"&lt;/a&gt; - in-depth explanation of Odoc 3's manual-focused features&lt;/li&gt;
&lt;li&gt;Continued work on OCaml.org documentation pipeline integration through new package archiving tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by&lt;/strong&gt;: Jon Ludlam (&lt;a class="mentioned-user" href="https://dev.to/jonludlam"&gt;@jonludlam&lt;/a&gt;, Tarides), Daniel Bünzli (@dbuenzli), Jules Aguillon (@julow, Tarides), Paul-Elliot Anglès d'Auriac (&lt;a class="mentioned-user" href="https://dev.to/panglesd"&gt;@panglesd&lt;/a&gt;, Tarides), Emile Trotignon (@EmileTrotignon, Tarides, then Ahrefs)&lt;/p&gt;




&lt;h2&gt;
  
  
  Ppxlib
&lt;/h2&gt;

&lt;p&gt;Ppxlib 0.36.1 refines the improvements introduced in version 0.36.0, which updated the internal AST to target OCaml 5.2. This enables ppx authors to leverage features from OCaml 5.2 while maintaining compatibility with OCaml 4.08.0 and newer.&lt;/p&gt;

&lt;p&gt;The update includes changes to the representation of functions, and package authors are encouraged to consult &lt;a href="https://github.com/ocaml-ppx/ppxlib/wiki/Upgrading-to-ppxlib-0.36.0" rel="noopener noreferrer"&gt;the upgrade guide&lt;/a&gt; as some ppxes may require updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-07-10-ppxlib-0361" rel="noopener noreferrer"&gt;Release of Ppxlib 0.36.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enhanced support for OCaml 5.2 AST features and compatibility improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by&lt;/strong&gt;: Patrick Ferris (&lt;a href="https://github.com/patricoferris" rel="noopener noreferrer"&gt;@patricoferris&lt;/a&gt;)&lt;/p&gt;




&lt;h2&gt;
  
  
  OCaml 5.4.0
&lt;/h2&gt;

&lt;p&gt;OCaml 5.4.0-beta1 provides early access to upcoming compiler improvements and serves as a validation point for the ecosystem. The beta release allows forward-looking projects to begin testing compatibility with the new version while the broader ecosystem prepares for the eventual stable release.&lt;/p&gt;

&lt;p&gt;The continued parallel maintenance of OCaml 4.14 LTS ensures that projects with longer upgrade cycles maintain access to critical updates without forced compiler upgrades. This dual-track approach provides flexibility for organizations with different risk tolerance levels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-07-22-ocaml-540-beta1" rel="noopener noreferrer"&gt;OCaml 5.4.0-beta1 release&lt;/a&gt; for early testing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ocaml.org/changelog/2025-05-22-ocaml-540-alpha1" rel="noopener noreferrer"&gt;OCaml 5.4.0-alpha1&lt;/a&gt; provided initial preview&lt;/li&gt;
&lt;li&gt;Continued LTS support for OCaml 4.14 users&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Utop
&lt;/h2&gt;

&lt;p&gt;Utop 2.16.0 adds OCaml 5.4 support, restores backtrace functionality, improves preprocessor and Emacs integration, and relocates configuration files to a dedicated utop subdirectory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-07-25-utop-2160" rel="noopener noreferrer"&gt;Release of Utop 2.16.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;We are seeing continued progress toward making OCaml development more accessible and productive. The maturation of Dune package management, stability improvements in opam 2.4.0, and enhanced editor support provide a solid foundation for teams adopting OCaml or expanding their existing OCaml usage.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OCaml Platform Newsletter: February to April 2025</title>
      <dc:creator>Sabine Schmaltz</dc:creator>
      <pubDate>Mon, 12 May 2025 09:58:05 +0000</pubDate>
      <link>https://dev.to/ocaml/ocaml-platform-newsletter-february-to-april-2025-1i6h</link>
      <guid>https://dev.to/ocaml/ocaml-platform-newsletter-february-to-april-2025-1i6h</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few5o7untpwuj6obkaxor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few5o7untpwuj6obkaxor.png" alt="Banner " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Welcome to the fourteenth edition of the OCaml Platform newsletter!&lt;/p&gt;

&lt;p&gt;In this February to April 2025 edition, we are excited to bring you the latest on the OCaml Platform, continuing our tradition of highlighting recent developments as seen in &lt;a href="https://discuss.ocaml.org/tag/platform-newsletter" rel="noopener noreferrer"&gt;previous editions&lt;/a&gt;. To understand the direction we're headed, especially regarding development workflows and user experience improvements, check out our &lt;a href="https://ocaml.org/docs/platform-roadmap" rel="noopener noreferrer"&gt;roadmap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://discuss.ocaml.org/t/ocaml-platform-newsletter-february-to-april-2025/16644" rel="noopener noreferrer"&gt;comment on this newsletter on the OCaml Discuss Forums&lt;/a&gt;, or &lt;a href="https://www.linkedin.com/newsletters/ocaml-platform-newsletter-7305270694567661568/" rel="noopener noreferrer"&gt;subscribe to the OCaml Platform Newsletter on LinkedIn&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dune Package Management is now Compatible with Large Parts of the Ecosystem&lt;/strong&gt;: The majority of Dune-based packages in opam-repository now build successfully with Dune package management. Continuous monitoring is available at &lt;a href="https://dune.check.ci.dev" rel="noopener noreferrer"&gt;dune.check.ci.dev&lt;/a&gt;. Technical barriers are being systematically addressed while maintaining compatibility with both opam and Dune workflows to ensure teams can transition at their own pace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Odoc 3.0 Release&lt;/strong&gt;: A major upgrade, introducing powerful features like type-based search through Sherlodoc, global sidebar navigation, integrated source code display, multimedia support, hierarchical documentation pages, and cross-package linking that creates truly connected documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New minor Emacs Mode:&lt;/strong&gt; OCaml-eglot replaces the venerable "merlin-mode", providing modern editor features through &lt;code&gt;ocaml-lsp-server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;First alpha of opam 2.4.0&lt;/strong&gt;: Significant improvements including removal of GNU patch/diff dependencies, better Nix integration, improved pinned repository visibility, UI enhancements for deprecated packages, and new version comparison tools and lock file management features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Announcements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opam.ocaml.org/blog/opam-2-4-0-alpha1/" rel="noopener noreferrer"&gt;"opam 2.4.0 alpha1 release" on the Opam Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-26-freebsd-14.2" rel="noopener noreferrer"&gt;OCaml Infrastructure: FreeBSD 14.2 Upgrade&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-24-recent-ocaml-versions" rel="noopener noreferrer"&gt;OCaml Infrastructure: OCaml-version 4.0.0 released&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Calls for Feedback:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ann-dune-developer-preview-updates/15160/57?u=sabine" rel="noopener noreferrer"&gt;Dune Developer Preview Adoption Survey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ocaml-editors-plugins-survey/16216" rel="noopener noreferrer"&gt;OCaml Editor Plugins Survey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/asking-for-community-feedback-on-the-ocaml-platform-communications/16142" rel="noopener noreferrer"&gt;Asking For Community Feedback on the OCaml Platform Communications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Releases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ann-opam-2-4-0-alpha1/16520" rel="noopener noreferrer"&gt;opam 2.4.0~alpha1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-30-dune.3.18.2" rel="noopener noreferrer"&gt;Dune 3.18.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-17-dune.3.18.1" rel="noopener noreferrer"&gt;Dune 3.18.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-03-dune.3.18.0" rel="noopener noreferrer"&gt;Dune 3.18.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-20-odoc-3.0.0" rel="noopener noreferrer"&gt;Odoc 3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-02-03-dune-release-2.1.0" rel="noopener noreferrer"&gt;dune-release 2.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-05-ppxlib-0.36.0" rel="noopener noreferrer"&gt;Ppxlib 0.36.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-02-04-ppxlib-0.35.0" rel="noopener noreferrer"&gt;Ppxlib 0.35.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-2-0/16515" rel="noopener noreferrer"&gt;ocaml-eglot 1.2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarides/ocaml-eglot/releases/tag/1.1.0" rel="noopener noreferrer"&gt;ocaml-eglot 1.1.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Dune&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap:&lt;/strong&gt; &lt;a href="https://ocaml.org/docs/platform-roadmap#w4-build-a-project" rel="noopener noreferrer"&gt;Develop / (W4) Build a Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dune 3.18 brings various quality-of-life improvements, bug fixes, and new features. It introduces support for the new &lt;code&gt;x-maintenance-intent&lt;/code&gt; field in opam packages, allowing maintainers to better communicate project status. The release also includes the new &lt;code&gt;(format-dune-file ...)&lt;/code&gt; stanza, formalizing the dune format-dune-file command as an inside rule, and adds support for the &lt;code&gt;not&lt;/code&gt; operator in package dependencies constraints. Several improvements to cache handling of file permissions have been implemented, and users can now utilize the &lt;code&gt;--prefix&lt;/code&gt; flag when configuring dune with &lt;code&gt;ocaml configure.ml&lt;/code&gt;, providing greater installation flexibility.&lt;/p&gt;

&lt;p&gt;From 3.18.0, Dune now uses shorter paths for inline-test artifacts, allows dash characters in project names created with &lt;code&gt;dune init&lt;/code&gt;, and displays negative error codes on Windows in hexadecimal format — the customary way to display &lt;code&gt;NTSTATUS&lt;/code&gt; codes. The release also enhances stability with improved retry mechanisms for file delete operations on Windows under heavy load and provides better warning behavior when failing to discover the project root due to read failures, replacing the previous abort behavior.&lt;/p&gt;

&lt;p&gt;Shortly after, Dune 3.18.1 was released with a hotfix that corrects an issue where &lt;code&gt;pkg-config&lt;/code&gt; would fail to find certain libraries in specific contexts, while Dune 3.18.2 provides support for the upcoming OCaml 5.4 release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-30-dune.3.18.2" rel="noopener noreferrer"&gt;Release of Dune 3.18.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-17-dune.3.18.1" rel="noopener noreferrer"&gt;Release of Dune 3.18.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-04-03-dune.3.18.0" rel="noopener noreferrer"&gt;Release of Dune 3.18.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;Dune Package Management&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As of May 9, a large part of Dune-based packages on &lt;code&gt;opam-repository&lt;/code&gt; now build successfully with Dune package management. At &lt;a href="https://dune.check.ci.dev" rel="noopener noreferrer"&gt;dune.check.ci.dev&lt;/a&gt;, we provide continuous monitoring of build success across the ecosystem, giving visibility into compatibility before migration.&lt;/p&gt;

&lt;p&gt;The effort of making Dune package management compatible with the wider OCaml ecosystem is ongoing and aims to assess when Dune package management is ready for adoption in production settings. We are committed to maintain compatibility with both opam and Dune workflows, ensuring teams can transition at their own pace with minimal disruption to existing projects&lt;/p&gt;

&lt;p&gt;Technical barriers have been and are being systematically addressed, e.g. improved handling of ZIP archives, better dependency conflict resolution, and enhanced support for pinned packages that don't use Dune's build system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tarides.com/blog/2025-04-11-expanding-dune-package-management-to-the-rest-of-the-ecosystem/" rel="noopener noreferrer"&gt;"Expanding Dune Package Management to the Rest of the Ecosystem" on the Tarides Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Dune Developer Preview&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://preview.dune.build/" rel="noopener noreferrer"&gt;Dune Developer Preview&lt;/a&gt; is an experimental channel that introduces cutting-edge features to streamline OCaml development workflows. Building upon Dune's foundation as OCaml's official build system, this initiative allows us to iterate quickly on ideas and experiment with improving the developer experience and with experimental features. For example, one feature that came out of Dune Developer Preview and made it into the upstream codebase is package management: by enabling Dune to deal with project dependencies, we eliminate the need to juggle multiple tools.&lt;/p&gt;

&lt;p&gt;The tooling includes built-in LSP support, formatting capabilities, and a shared cache that dramatically improves build performance. Early adopters are encouraged to &lt;a href="https://docs.google.com/forms/u/2/d/e/1FAIpQLSda-mOTHIdATTt_e9dFmNgUCy-fD55Qzr3bGGsxpfY_Ecfyxw/viewform?usp=send_form" rel="noopener noreferrer"&gt;provide feedback&lt;/a&gt; as these experimental features mature toward stable releases.&lt;/p&gt;

&lt;p&gt;We are in the process of adopting Dune Developer Preview for the OCaml Platform Tools and other projects. This is to ensure that (1) Dune Developer Preview keeps providing a good developer experience on production codebases and (2) to catch bugs and issues as early as we can. At the moment, we are making a concerted effort to fix issues and add necessary features that block adoption of Dune Developer Preview on the OCaml Platform Tools projects.&lt;/p&gt;

&lt;p&gt;We're always interested in and addressing community feedback and bug reports, as well. In March, we conducted a &lt;a href="https://discuss.ocaml.org/t/ann-dune-developer-preview-updates/15160/57" rel="noopener noreferrer"&gt;public survey to better understand the reach, adoption, and experience of/with Dune Developer Preview&lt;/a&gt; in the OCaml community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ann-dune-developer-preview-updates/15160/57?u=sabine" rel="noopener noreferrer"&gt;Dune Developer Preview Adoption Survey&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Editor Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap:&lt;/strong&gt; &lt;a href="https://ocaml.org/tools/platform-roadmap#w19-navigate-code" rel="noopener noreferrer"&gt;Edit / (W19) Navigate Code&lt;/a&gt;, &lt;a href="https://ocaml.org/tools/platform-roadmap#w20-refactor-code" rel="noopener noreferrer"&gt;Edit / (W20) Refactor Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To better understand how the OCaml community uses the different editor plugins available for OCaml, and to get an idea which features are most anticipated, we ran a &lt;a href="https://discuss.ocaml.org/t/ocaml-editors-plugins-survey/16216" rel="noopener noreferrer"&gt;survey on the OCaml Editors Plugins&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ocaml-editors-plugins-survey/16216" rel="noopener noreferrer"&gt;OCaml Editor Plugins Survey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ocaml/merlin/wiki/Public-dev%E2%80%90meetings#-ulysse-voodoos--xavier-xvw--pizzie-piziedust--sonja-pitag-ha--florian-angeletti-octachron--darius-foo-dariusf--andrey-popp-andreypopp--nicolas-ojeda-b%C3%A4r-nojb" rel="noopener noreferrer"&gt;April 2025 Editors Dev Meeting&lt;/a&gt;
Focus: Project-wide occurrences demo&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ocaml/merlin/wiki/Public-dev%E2%80%90meetings#-pixie-dust--x-gerard-vemeulen--x-jack-joergensen--x-jean-marc-eber--x-arthur-wendling--x-xavier-van-de-woestyne--x-nicolas-ojeda-bar--x-ulysee-gerard--x-joy-odinaka" rel="noopener noreferrer"&gt;February 2025 Editors Dev Meeting&lt;/a&gt;
Focus: Introduction of ocaml-eglot Emacs mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;OCaml LSP Server maintained by:&lt;/strong&gt; Ulysse Gérard (@voodoos, Tarides), Xavier Van de Woestyne (&lt;a class="mentioned-user" href="https://dev.to/xvw"&gt;@xvw&lt;/a&gt;, Tarides), Rudi Grinberg (@rgrinberg, Jane Street)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merlin maintained by:&lt;/strong&gt; Ulysse Gérard (@voodoos, Tarides), Xavier Van de Woestyne (&lt;a class="mentioned-user" href="https://dev.to/xvw"&gt;@xvw&lt;/a&gt;, Tarides)&lt;/p&gt;

&lt;h3&gt;
  
  
  Merlin and OCaml LSP Server
&lt;/h3&gt;

&lt;p&gt;Project-wide occurrences are available in both Merlin and OCaml-LSP, allowing developers to find all instances of a symbol across their codebase by running &lt;code&gt;dune build @build-index -w&lt;/code&gt;. The feature has basic editor support via &lt;code&gt;merlin-project-occurrences&lt;/code&gt; in Emacs and &lt;code&gt;:MerlinOccurrencesProjectWide&lt;/code&gt; in Vim. Additionally, users of OCaml 5.3 and LSP-based plugins can experiment with the first iteration on project-wide &lt;em&gt;renaming&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visual Studio Code plugin
&lt;/h3&gt;

&lt;p&gt;Behind the scenes, some work is happening on improving the developer experience for the OCaml VSCode editor plugin: When &lt;code&gt;ocaml-lsp-server&lt;/code&gt; is not found in the opam switch, the plugin will prompt the user to offer installing it, and we are working on making the editor plugin work seamlessly with the recent dune package management features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WIP on opam: Automatically installing/updating ocaml-lsp-server &lt;a href="https://github.com/ocamllabs/vscode-ocaml-platform/pull/1725" rel="noopener noreferrer"&gt;https://github.com/ocamllabs/vscode-ocaml-platform/pull/1725&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;WIP on Dune: Automatically configuring dune package management: &lt;a href="https://github.com/ocamllabs/vscode-ocaml-platform/pull/1791" rel="noopener noreferrer"&gt;https://github.com/ocamllabs/vscode-ocaml-platform/pull/1791&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Emacs support
&lt;/h3&gt;

&lt;p&gt;On January 17, &lt;a href="https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-0-0/15978/14" rel="noopener noreferrer"&gt;OCaml-eglot version 1.0.0 was released&lt;/a&gt;, providing a new&lt;br&gt;
minor emacs mode to enable the editor features provided by &lt;strong&gt;ocaml-lsp-server&lt;/strong&gt;.&lt;br&gt;
This replaces the venerable “merlin-mode”, after many years of loyal service.&lt;/p&gt;

&lt;p&gt;Subsequent releases &lt;a href="https://github.com/tarides/ocaml-eglot/releases/tag/1.1.0" rel="noopener noreferrer"&gt;&lt;code&gt;1.1.0&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-2-0/16515" rel="noopener noreferrer"&gt;&lt;code&gt;1.2.0&lt;/code&gt;&lt;/a&gt; enable support for&lt;br&gt;
&lt;code&gt;flycheck&lt;/code&gt; as a configurable alternative to &lt;code&gt;flymake&lt;/code&gt; (&lt;code&gt;1.0.0&lt;/code&gt; release),&lt;br&gt;
Emacs &lt;code&gt;30.1&lt;/code&gt; support, better user experience and error handling, as&lt;br&gt;
well as support for new features.&lt;/p&gt;

&lt;p&gt;All these features have enabled OCaml-eglot to support client commands, making it possible to extend OCaml-eglot more easily and to integrate features much more rapidly. Since version &lt;code&gt;1.2.0&lt;/code&gt;, OCaml-eglot has all the functions of Merlin mode (and more)!&lt;/p&gt;

&lt;p&gt;We encourage you to try &lt;code&gt;ocaml-eglot&lt;/code&gt; (refer to the updated &lt;a href="https://ocaml.org/docs/set-up-editor#emacs" rel="noopener noreferrer"&gt;documentation on editor setup on OCaml.org&lt;/a&gt;) and to &lt;a href="https://github.com/tarides/ocaml-eglot/issues" rel="noopener noreferrer"&gt;give feedback / report bugs by raising an issue on the ocaml-eglot repository&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Besides this, we have updated the documentation on Editor Setup on OCaml.org to reflect the new situation for Emacs!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/docs/set-up-editor#emacs" rel="noopener noreferrer"&gt;Updated Tutorial on Setting Up Emacs Support on OCaml.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tarides/ocaml-eglot/releases/tag/1.1.0" rel="noopener noreferrer"&gt;Release of ocaml-eglot 1.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-2-0/16515" rel="noopener noreferrer"&gt;Release of ocaml-eglot 1.2.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Documentation Tools&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Roadmap:&lt;/strong&gt; &lt;a href="https://ocaml.org/tools/platform-roadmap#w25-generate-documentation" rel="noopener noreferrer"&gt;Share / (W25) Generate Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Odoc
&lt;/h3&gt;

&lt;p&gt;Odoc 3.0 has arrived after more than a year of development since the previous 2.4 release, bringing significant enhancements to OCaml's documentation tooling. The update introduces powerful new features including type-based search functionality through &lt;a href="https://github.com/ocaml/odoc/tree/master/sherlodoc" rel="noopener noreferrer"&gt;Sherlodoc&lt;/a&gt;, a global sidebar for improved navigation across documentation pages, and integrated source code display that allows developers to jump directly from documentation to rendered source regardless of module system complexity. Additional highlights include support for multimedia content (images, video, and audio), hierarchical documentation pages for better structure, and cross-package linking capabilities that create truly connected documentation, as well as support for incremental documentation builds.&lt;/p&gt;

&lt;p&gt;It's worth noting that Dune does not yet support Odoc 3 as its rules need rewriting to accommodate the new CLI and incremental build capabilities. In the interim, developers can use the standalone &lt;code&gt;odoc_driver&lt;/code&gt; command to generate documentation for their packages as shown in the &lt;a href="https://ocaml.github.io/odoc/odoc-driver/index.html#remapping-dependencies" rel="noopener noreferrer"&gt;"Remapping dependencies" documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Odoc team encourages all OCaml developers to test their documentation with the new release before publishing packages, which can help avoid post-release fixes like &lt;a href="https://github.com/ocaml/odoc/pull/1333" rel="noopener noreferrer"&gt;this example&lt;/a&gt;. For a practical introduction to the new features, developers can install the package via &lt;code&gt;opam install odoc-driver&lt;/code&gt; and explore the comprehensive documentation available for the &lt;a href="https://ocaml.github.io/odoc/" rel="noopener noreferrer"&gt;Odoc toolchain&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-20-odoc-3.0.0" rel="noopener noreferrer"&gt;Release of odoc 3.0.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jon.recoil.org/blog/2025/04/odoc-3.html" rel="noopener noreferrer"&gt;"Odoc 3: So what?" on Jon Ludlam's blog&lt;/a&gt; - blog post that touches on how odoc 3's cross-package linking capabilities enable writing better manuals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by:&lt;/strong&gt; Jon Ludlam (&lt;a class="mentioned-user" href="https://dev.to/jonludlam"&gt;@jonludlam&lt;/a&gt;, Tarides), Daniel Bünzli (@dbuenzli), Jules Aguillon (@julow, Tarides), Paul-Elliot Anglès d'Auriac (&lt;a class="mentioned-user" href="https://dev.to/panglesd"&gt;@panglesd&lt;/a&gt;, Tarides), Emile Trotignon (@EmileTrotignon, Tarides, then Ahrefs) &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Package Management&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Opam
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://opam.ocaml.org/blog/opam-2-4-0-alpha1/" rel="noopener noreferrer"&gt;first alpha of opam 2.4.0 has been released&lt;/a&gt;, bringing significant improvements. &lt;/p&gt;

&lt;p&gt;The removal of GNU &lt;code&gt;patch&lt;/code&gt; and &lt;code&gt;diff&lt;/code&gt; as runtime dependencies reduces cross-platform inconsistencies, as the manager now uses the native OCaml &lt;code&gt;patch&lt;/code&gt; library instead. Nix users will appreciate Nix support for external dependencies, facilitating more consistent environments across development and production systems.&lt;/p&gt;

&lt;p&gt;Notable for daily development work: pinned VCS repositories now display their current revision for better traceability, and several UI improvements provide clearer visibility into deprecated packages. The enhanced command set includes version comparison tools and better lock file management with &lt;code&gt;opam lock --keep-local&lt;/code&gt;, particularly useful for maintaining consistent dependency states across team environments.&lt;/p&gt;

&lt;p&gt;Teams running NixOS will benefit from fixed sandboxing support, while the new &lt;code&gt;OPAMSOLVERTOLERANCE&lt;/code&gt; environment variable helps resolve persistent solver timeouts that previously was unsolvable by MCCS.&lt;/p&gt;

&lt;p&gt;Early testing and feedback from development teams is encouraged to ensure a stable final release. Please &lt;a href="https://github.com/ocaml/opam/issues" rel="noopener noreferrer"&gt;report any issues to the bug-tracker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opam.ocaml.org/blog/opam-2-4-0-alpha1/" rel="noopener noreferrer"&gt;"opam 2.4.0 alpha1 release" on the Opam Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;opam upgrade&lt;/code&gt; fixes &lt;a href="https://github.com/ocaml/opam/pull/6373" rel="noopener noreferrer"&gt;#6373&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;patch&lt;/code&gt; OCaml library instead of the &lt;code&gt;patch&lt;/code&gt; command &lt;a href="https://github.com/ocaml/opam/pull/5892" rel="noopener noreferrer"&gt;#5892&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add some lints &lt;a href="https://github.com/ocaml/opam/pull/6317" rel="noopener noreferrer"&gt;#6317&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6438" rel="noopener noreferrer"&gt;#6438&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Pinning system fixes &lt;a href="https://github.com/ocaml/opam/pull/5471" rel="noopener noreferrer"&gt;#5471&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6343" rel="noopener noreferrer"&gt;#6343&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6309" rel="noopener noreferrer"&gt;#6309&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6375" rel="noopener noreferrer"&gt;#6375&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6256" rel="noopener noreferrer"&gt;#6256&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/5471" rel="noopener noreferrer"&gt;#5471&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;opam admin migrate-extrafiles&lt;/code&gt; command &lt;a href="https://github.com/ocaml/opam/pull/5960" rel="noopener noreferrer"&gt;#5960&lt;/a&gt;, change opam admin check options &lt;a href="https://github.com/ocaml/opam/pull/6335" rel="noopener noreferrer"&gt;#6335&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Depext system: better performance &lt;a href="https://github.com/ocaml/opam/pull/6324" rel="noopener noreferrer"&gt;#6324&lt;/a&gt;, enhance OpenBSD &lt;a href="https://github.com/ocaml/opam/pull/6362" rel="noopener noreferrer"&gt;#6362&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Some UI improvments &lt;a href="https://github.com/ocaml/opam/pull/6376" rel="noopener noreferrer"&gt;#6376&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6401" rel="noopener noreferrer"&gt;#6401&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6358" rel="noopener noreferrer"&gt;#6358&lt;/a&gt;, &lt;a href="https://github.com/ocaml/opam/pull/6273" rel="noopener noreferrer"&gt;#6273&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;UX improvments: remove &lt;code&gt;ocaml-system&lt;/code&gt; from default compiler at init &lt;a href="https://github.com/ocaml/opam/pull/6307" rel="noopener noreferrer"&gt;#6307&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Provide a way to avoid solver timeouts &lt;a href="https://github.com/ocaml/opam/pull/5510" rel="noopener noreferrer"&gt;#5510&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;opam lock &amp;lt;pkg&amp;gt; --keep-local&lt;/code&gt; &lt;a href="https://github.com/ocaml/opam/pull/6411" rel="noopener noreferrer"&gt;#6411&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by:&lt;/strong&gt; Raja Boujbel (@rjbou - OCamlPro), Kate Deplaix (@kit-ty-kate, Ahrefs), David Allsopp (@dra27, Tarides)&lt;/p&gt;

&lt;h3&gt;
  
  
  Dune-release
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Roadmap:&lt;/strong&gt; &lt;a href="https://ocaml.org/tools/platform-roadmap#w26-package-publication" rel="noopener noreferrer"&gt;Share / (W26) Package Publication&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dune-release 2.1.0, has been released, providing a new command &lt;code&gt;dune-release delegate-info version&lt;/code&gt;, which makes it easier to identify the current version of a package as inferred by the tool. Additionally, the release introduces more flexibility with the &lt;code&gt;--dev-repo&lt;/code&gt; flag for &lt;code&gt;dune-release&lt;/code&gt; and &lt;code&gt;dune-release publish&lt;/code&gt; commands, allowing users to override the &lt;code&gt;dev-repo&lt;/code&gt; field specified in the &lt;code&gt;.opam&lt;/code&gt; file during the release process.&lt;/p&gt;

&lt;p&gt;Dune-release no longer publishes documentation to GitHub Pages by default. This decision reflects the OCaml ecosystem's consolidation around centralized documentation, as package documentation is now automatically built and served by &lt;a href="https://ocaml.org/packages" rel="noopener noreferrer"&gt;ocaml.org/packages&lt;/a&gt; following publication to the opam repository.&lt;/p&gt;

&lt;p&gt;The update also improves compatibility and resolves several issues, including a fix for decoding GitHub URLs and ensuring dune-release works with the experimental package management feature from Dune. The tool now handles the presence of &lt;code&gt;~/.dune/bin/dune&lt;/code&gt; without failing, making it more robust for developers exploring Dune's newer features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-02-03-dune-release-2.1.0" rel="noopener noreferrer"&gt;Release of dune-release 2.1.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by:&lt;/strong&gt; Thomas Gazagnaire (&lt;a class="mentioned-user" href="https://dev.to/samoht"&gt;@samoht&lt;/a&gt;, Tarides), Etienne Millon (@emillon, Tarides), Marek Kubica (@Leonidas-from-XIV, Tarides)&lt;/p&gt;

&lt;h2&gt;
  
  
  Ppxlib
&lt;/h2&gt;

&lt;p&gt;The ppxlib team has released versions 0.35.0 and 0.36.0!&lt;/p&gt;

&lt;p&gt;Ppxlib 0.35.0, released in February 2025, brings significant improvements for OCaml 5.3 compatibility by allowing ppx rewriters to operate on files containing the new effect syntax. While ppx extensions and effect syntax can coexist, developers should note that rewriters might encounter errors when processing effect syntax nodes in extension payloads or generated code. The release introduces a new &lt;code&gt;--use-compiler-pp&lt;/code&gt; driver flag, useful for preserving effect syntax when outputting source code instead of marshalled AST. This update also removes support for compilers older than 4.08.&lt;/p&gt;

&lt;p&gt;The latest ppxlib 0.36.0, released in March 2025, updates the internal AST to target OCaml 5.2, enabling ppx authors to leverage features from this version while maintaining compatibility with OCaml 4.08.0 and newer. This release includes notable changes to the representation of functions. Thus, package authors are strongly encouraged to consult &lt;a href="https://github.com/ocaml-ppx/ppxlib/wiki/Upgrading-to-ppxlib-0.36.0" rel="noopener noreferrer"&gt;the upgrade guide&lt;/a&gt; as many ppxes may break.&lt;/p&gt;

&lt;p&gt;Other improvements include fixing a bug in &lt;code&gt;loc_of_attribute&lt;/code&gt;, adding support for the &lt;code&gt;[@@@expand_inline]&lt;/code&gt; transformation and floating attribute context-free transformations, and introducing a &lt;code&gt;-raise-embedded-errors&lt;/code&gt; flag to the driver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-05-ppxlib-0.36.0" rel="noopener noreferrer"&gt;Release of ppxlib 0.36.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-02-04-ppxlib-0.35.0" rel="noopener noreferrer"&gt;Release of ppxlib 0.35.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ocaml-ppx/ppxlib/wiki/Upgrading-to-ppxlib-0.36.0" rel="noopener noreferrer"&gt;Upgrade guide for the OCaml 5.3 release of ppxlib&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintained by:&lt;/strong&gt; Patrick Ferris (&lt;a href="https://github.com/patricoferris" rel="noopener noreferrer"&gt;@patricoferris&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  OCaml Infrastructure
&lt;/h2&gt;

&lt;p&gt;The OCaml infrastructure team has upgraded their OBuilder workers for FreeBSD from version 14.1 to 14.2, which directly impacts two key continuous integration services:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;OCaml-CI&lt;/strong&gt; (&lt;a href="https://ocaml.ci.dev" rel="noopener noreferrer"&gt;ocaml.ci.dev&lt;/a&gt;) - This service automatically tests OCaml projects hosted on GitHub, and will now test against FreeBSD 14.2 instead of 14.1. Projects using this CI service will automatically be tested against the newer FreeBSD version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;opam-repo-CI&lt;/strong&gt; (&lt;a href="https://opam.ci.ocaml.org" rel="noopener noreferrer"&gt;opam.ci.ocaml.org&lt;/a&gt;) - This service tests pull requests to the opam package repository, and will also now test against FreeBSD 14.2 rather than 14.1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the release of &lt;code&gt;ocaml-version&lt;/code&gt; 4.0.0, the OCaml version considered "recent" has been raised from 4.02 to 4.08. This change affects multiple services that use this definition to determine which OCaml versions to test against:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;OCaml-CI&lt;/strong&gt; - Will adjust which OCaml compiler versions are tested by default for projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;opam-repo-CI&lt;/strong&gt; - Will modify its testing matrix for packages in the opam repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker base image builder&lt;/strong&gt; - Will only build images for OCaml 4.08 and newer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As these services update, testing on older OCaml releases (versions 4.02 through 4.07) will be gradually removed. Package maintainers should consider upgrading projects still using pre-4.08 OCaml versions to OCaml 4.08 or higher.&lt;/p&gt;

&lt;p&gt;Apart from this, at the end of April 2025, registry.ci.dev, opam-repo-ci, OCaml-CI and get.dune.build were moved from Equinix Hosting to hosting at the Cambridge University Computer Lab, because of the &lt;a href="https://deploy.equinix.com/blog/sunsetting-equinix-metal/" rel="noopener noreferrer"&gt;sunset of the Equinix Metal platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.tunbury.org/ocaml-ci/" rel="noopener noreferrer"&gt;"Moving OCaml-CI" on tunbury.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tunbury.org/equinix-moves/" rel="noopener noreferrer"&gt;"Equinix Moves" on tunbury.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-26-freebsd-14.2" rel="noopener noreferrer"&gt;OCaml Infrastructure: FreeBSD 14.2 Upgrade&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ocaml.org/changelog/2025-03-24-recent-ocaml-versions" rel="noopener noreferrer"&gt;OCaml Infrastructure: OCaml-version 4.0.0 released&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  WIP: Odoc 3 on OCaml-Docs-CI
&lt;/h3&gt;

&lt;p&gt;The OCaml documentation pages provided through the &lt;a href="https://ocaml.org/packages" rel="noopener noreferrer"&gt;OCaml.org package area&lt;/a&gt; are scheduled to receive significant updates with the release of odoc 3. To enable odoc 3 and all of its new features on OCaml.org, we are overhauling the docs-ci pipeline that powers documentation on ocaml.org. The improved pipeline addresses dependency complexities by using a new tool (&lt;a href="https://github.com/jonludlam/opamh" rel="noopener noreferrer"&gt;https://github.com/jonludlam/opamh&lt;/a&gt;) that archives and restores opam packages, eliminating redundant builds of packages like dune that previously occurred thousands of times. The underlying infrastructure is also being upgraded, with plans to migrate docs-ci to a new blade server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notable Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://jon.recoil.org/blog/2025/04/ocaml-docs-ci-and-odoc-3.html" rel="noopener noreferrer"&gt;"OCaml-Docs-CI and Odoc 3" on Jon Ludlam's blog&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
