From: Alan Schmitt <alan.schmitt@polytechnique.org>
To: "lwn" <lwn@lwn.net>, caml-list@inria.fr
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 09 Sep 2025 14:30:46 +0200 [thread overview]
Message-ID: <m2348vyfih.fsf@mac-03220211.irisa.fr> (raw)
[-- Attachment #1: Type: text/plain, Size: 31541 bytes --]
Hello
Here is the latest OCaml Weekly News, for the week of September 02 to
09, 2025.
Table of Contents
─────────────────
OCaml Platform Newsletter: May to August 2025
ppx_format
New release of Menhir (20250903)
Chat plugin activated, and adding more site categories
Outreachy Mentors Wanted
Other OCaml News
Old CWN
OCaml Platform Newsletter: May to August 2025
═════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ocaml-platform-newsletter-may-to-august-2025/17208/1>
Sabine Schmaltz announced
─────────────────────────
Welcome to the fifteenth edition of the OCaml Platform newsletter!
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 [previous editions]. To understand the
direction we're headed, especially regarding development workflows and
user experience improvements, check out our [roadmap].
You can [subscribe to this newsletter on LinkedIn]!
*Highlights:*
• *Enhanced Editor Integration*: 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.
• *Enhanced Package Management*: 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.
• *Improved Testing Workflows*: Dune 3.20 introduces concurrent watch
mode operations, named test aliases for running specific tests
(`@runtest-testname'), and timeout support for cram tests.
• *Documentation and Tooling Maturity*: Odoc 3.1.0 refines
cross-package linking capabilities.
• *OCaml 5.4.0-beta1:* you can help test upcoming compiler
improvements!
*Announcements:*
• [Emacs Integration for OCaml LSP Server: Introducing ocaml-eglot]
(August 26, 2025)
• [Dune Developer Preview: Portable External Dependencies for Dune
Package Management] (June 5, 2025)
• [Dune Developer Preview: Portable Lock Directories for Dune Package
Management] (May 19, 2025)
*Stable Releases:*
• [Dune 3.20.1] (August 26, 2025)
• [Dune 3.20.0] (August 21, 2025)
• [Utop 2.16.0] (July 25, 2025)
• [opam 2.4.1] (July 23, 2025)
• [opam 2.4.0] (July 18, 2025)
• [Odoc 3.1.0] (July 15, 2025)
• [Ppxlib 0.36.1] (July 10, 2025)
• [OCaml-LSP 1.23.0] (June 24, 2025)
• [Merlin 5.5-503] (June 24, 2025)
• [OCaml-LSP 1.21.0-4.14 for OCaml 4.14] (June 23, 2025)
• [Merlin 4.19-414] (June 23, 2025)
• [Dune 3.19.1] (June 11, 2025)
• [Dune 3.19.0] (May 23, 2025)
*Unstable Releases:*
• [Dune 3.20.0~alpha4] (August 12, 2025)
• [Dune 3.20.0~alpha3] (August 6, 2025)
• [Dune 3.20.0~alpha2] (August 5, 2025)
• [Dune 3.20.0~alpha1] (July 30, 2025)
• [Dune 3.20.0~alpha0] (July 28, 2025)
• [OCaml 5.4.0-beta1] (July 22, 2025)
• [opam 2.4.0~rc1] (July 4, 2025)
• [opam 2.4.0~beta1] (June 19, 2025)
• [OCaml 5.4.0-alpha1] (May 22, 2025)
• [Dune 3.19.0~alpha0] (May 20, 2025)
• [opam 2.4.0~alpha2] (May 5, 2025)
[previous editions] <https://discuss.ocaml.org/tag/platform-newsletter>
[roadmap] <https://ocaml.org/docs/platform-roadmap>
[subscribe to this newsletter on LinkedIn]
<https://www.linkedin.com/newsletters/ocaml-platform-newsletter-7305270694567661568/>
[Emacs Integration for OCaml LSP Server: Introducing ocaml-eglot]
<https://ocaml.org/changelog/2025-08-26-ocaml-eglot-brings-lsp-support-to-emacs>
[Dune Developer Preview: Portable External Dependencies for Dune Package
Management]
<https://ocaml.org/changelog/2025-06-05-portable-external-dependencies-for-dune-package-management>
[Dune Developer Preview: Portable Lock Directories for Dune Package
Management]
<https://ocaml.org/changelog/2025-05-19-portable-lock-directories-for-dune-package-management>
[Dune 3.20.1] <https://ocaml.org/changelog/2025-08-26-dune3201>
[Dune 3.20.0] <https://ocaml.org/changelog/2025-08-21-dune-3200>
[Utop 2.16.0] <https://ocaml.org/changelog/2025-07-25-utop-2160>
[opam 2.4.1] <http://ocaml.org/changelog/2025-07-23-opam-2-4-1>
[opam 2.4.0] <https://ocaml.org/changelog/2025-07-18-opam-2-4-0>
[Odoc 3.1.0] <https://ocaml.org/changelog/2025-07-15-odoc-310>
[Ppxlib 0.36.1] <https://ocaml.org/changelog/2025-07-10-ppxlib-0361>
[OCaml-LSP 1.23.0]
<https://ocaml.org/changelog/2025-06-24-ocaml-lsp-1230>
[Merlin 5.5-503] <https://ocaml.org/changelog/2025-06-24-merlin-v55-503>
[OCaml-LSP 1.21.0-4.14 for OCaml 4.14]
<https://ocaml.org/changelog/2025-06-23-ocaml-lsp-1210-414>
[Merlin 4.19-414]
<https://ocaml.org/changelog/2025-06-23-merlin-v419-414>
[Dune 3.19.1] <https://ocaml.org/changelog/2025-06-11-dune.3.19.1>
[Dune 3.19.0] <https://ocaml.org/changelog/2025-05-23-dune.3.19.0>
[Dune 3.20.0~alpha4]
<https://ocaml.org/changelog/2025-08-12-dune-3200alpha4>
[Dune 3.20.0~alpha3]
<https://ocaml.org/changelog/2025-08-06-dune-3200alpha3>
[Dune 3.20.0~alpha2]
<https://ocaml.org/changelog/2025-08-05-dune-3200alpha2>
[Dune 3.20.0~alpha1]
<https://ocaml.org/changelog/2025-07-30-dune-3200alpha1>
[Dune 3.20.0~alpha0]
<https://ocaml.org/changelog/2025-07-28-dune-3200alpha0>
[OCaml 5.4.0-beta1]
<https://ocaml.org/changelog/2025-07-22-ocaml-540-beta1>
[opam 2.4.0~rc1] <https://ocaml.org/changelog/2025-07-04-opam-240-rc1>
[opam 2.4.0~beta1]
<https://ocaml.org/changelog/2025-06-19-opam-240-beta1>
[OCaml 5.4.0-alpha1]
<https://ocaml.org/changelog/2025-05-22-ocaml-540-alpha1>
[Dune 3.19.0~alpha0]
<https://ocaml.org/changelog/2025-05-20-dune-3190alpha0>
[opam 2.4.0~alpha2]
<https://ocaml.org/changelog/2025-05-05-opam-240-alpha2>
Dune
╌╌╌╌
*Roadmap*: [Develop / (W4) Build a Project]
The release introduces the `dune describe location' command for
printing the path to executables.
`dune runtest' 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.
[Develop / (W4) Build a Project]
<https://ocaml.org/docs/platform-roadmap#w4-build-a-project>
◊ Testing Workflow Improvements
Dune 3.20 significantly improves testing workflows with named test
aliases. Tests declared with `(test (name a))' can now be run
individually using `dune build @runtest-a'. Inline test libraries
produce aliases like `@runtest-name_of_lib', allowing targeted
execution of specific test suites without running the entire test
battery.
The new `(timeout <float>)' field for cram tests prevents runaway
tests from blocking CI pipelines. Combined with the ability to run
`dune promote' while watch mode is active, these features remove
common friction points in test-driven development workflows.
◊ Performance and Watch Mode Enhancements
Dune's watch mode now supports concurrent `dune exec' operations and
file promotion without requiring restarts, maintaining development
flow during iterative changes.
The introduction of the 'empty' alias containing no targets provides
more flexible build target management. New `--alias' and `--alias-rec'
flags offer alternatives to the `@@' and `@' command-line syntax.
Dune 3.20 switches from MD5 to BLAKE3 for digesting targets and rules,
providing both performance improvements and better cryptographic
properties.
*Activities:*
• Enhanced implicit transitive dependency handling for OCaml 5.2+
compatibility ([#11866])
• Improved alias system with new 'empty' alias support ([#11556],
[#11952], [#11955], [#11956])
• Better integration between promotion workflows and watch mode
([#12010])
• Fixed cram test duplicate execution issues ([#11547])
• Added timeout support for cram tests ([#12041])
• Added `dune describe location' command ([#11905])
• Named test aliases for targeted test execution ([#11558], [#11109])
• BLAKE3 migration for improved performance ([#11735])
*Maintained by*: 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)
[#11866] <https://github.com/ocaml/dune/pull/11866>
[#11556] <https://github.com/ocaml/dune/issues/11556>
[#11952] <https://github.com/ocaml/dune/pull/11952>
[#11955] <https://github.com/ocaml/dune/pull/11955>
[#11956] <https://github.com/ocaml/dune/pull/11956>
[#12010] <https://github.com/ocaml/dune/pull/12010>
[#11547] <https://github.com/ocaml/dune/pull/11547>
[#12041] <https://github.com/ocaml/dune/pull/12041>
[#11905] <https://github.com/ocaml/dune/pull/11905>
[#11558] <https://github.com/ocaml/dune/pull/11558>
[#11109] <https://github.com/ocaml/dune/pull/11109>
[#11735] <https://github.com/ocaml/dune/pull/11735>
◊ Dune Package Management
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., `ocaml-compiler.5.3.0.pkg' instead of
`ocaml-compiler.pkg') to handle cases where different platforms
require different package versions in the same project.
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.
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 `dune pkg lock'
and, if you encounter issues, please report them!
At [dune.check.ci.dev], continuous monitoring shows ecosystem
compatibility progress, with a large part of Dune-based packages in
opam-repository now building successfully with Dune package
management.
*Activities:*
• Enhanced ecosystem compatibility testing and monitoring at
[dune.check.ci.dev]
• ["Opam Health Check: or How we Got to 90+% of Packages Building with
Dune Package Management"] - detailed analysis of ecosystem
compatibility progress
[dune.check.ci.dev] <https://dune.check.ci.dev>
["Opam Health Check: or How we Got to 90+% of Packages Building with
Dune Package Management"]
<https://tarides.com/blog/2025-06-05-opam-health-check-or-how-we-got-to-90-of-packages-building-with-dune-package-management>
◊ Dune Developer Preview
[Dune Developer Preview] 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.
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.
*Activities:*
• Enhanced LSP integration through automated tool management
• Expanded ecosystem compatibility testing as documented in the [Opam
Health Check blog post]
[Dune Developer Preview]
<https://preview.dune.build?utm_source=ocaml.org&utm_medium=referral&utm_campaign=news>
[Opam Health Check blog post]
<https://tarides.com/blog/2025-06-05-opam-health-check-or-how-we-got-to-90-of-packages-building-with-dune-package-management>
Package Management
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
◊ Opam
The stable release of opam 2.4.0 represents a significant improvement
in cross-platform reliability and user experience. The elimination of
GNU `patch' and `diff' 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 `patch'
library instead.
The default compiler selection during `opam init' no longer uses
`ocaml-system', which was a common source of setup problems across
different development environments. This change provides a more
consistent onboarding experience for newcomers to OCaml.
Package lifecycle management receives clearer visibility through
enhanced handling of deprecated packages. The `opam show' command
displays deprecated packages in gray, while `opam upgrade' removes
confusing "not up-to-date" messages for packages being phased out.
Development workflows benefit from the new `OPAMSOLVERTOLERANCE'
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.
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.
*Notable Activity:*
• [opam 2.4.0 stable release] with comprehensive improvements
• Use `patch' OCaml library instead of the `patch' command ([#5892])
• UX improvements: remove `ocaml-system' from default compiler at init
([#6307])
• Provide a way to avoid solver timeouts ([#5510])
• Add `opam lock <pkg> --keep-local' ([#6411])
*Maintained by*: Raja Boujbel (@rjbou, OCamlPro), Kate Deplaix
(@kit-ty-kate, Ahrefs), David Allsopp (@dra27, Tarides)
[opam 2.4.0 stable release] <https://opam.ocaml.org/blog/opam-2-4-0/>
[#5892] <https://github.com/ocaml/opam/pull/5892>
[#6307] <https://github.com/ocaml/opam/pull/6307>
[#5510] <https://github.com/ocaml/opam/pull/5510>
[#6411] <https://github.com/ocaml/opam/pull/6411>
Editor Tools
╌╌╌╌╌╌╌╌╌╌╌╌
*Roadmap*: [Edit / (W19) Navigate Code], [Edit / (W20) Refactor Code]
[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>
◊ OCaml LSP Server and Merlin
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.
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 `dune build @build-index -w' and provide
comprehensive symbol searching across entire codebases.
By the way: we are currently working on a refactor feature that
enables automatically extracting and inlining function parameters!
Support for OCaml 4.14 continues with dedicated releases (OCaml-LSP
1.21.0-4.14 and Merlin 4.19-414).
*Activities:*
• Enhanced project navigation and symbol search capabilities
• Better integration with Dune package management workflows
• ["Internship Report: Refactoring Tools Coming to Merlin"] - new
extract command for refactoring
*Notable Activity:*
• Release of [OCaml-LSP 1.23.0]
• Release of [Merlin 5.5-503]
• OCaml 4.14 support with [OCaml-LSP 1.21.0-4.14] and [Merlin
4.19-414]
*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)
["Internship Report: Refactoring Tools Coming to Merlin"]
<https://tarides.com/blog/2025-08-20-internship-report-refactoring-tools-coming-to-merlin>
[OCaml-LSP 1.23.0]
<https://ocaml.org/changelog/2025-06-24-ocaml-lsp-1230>
[Merlin 5.5-503]
<https://ocaml.org/changelog/2025-06-24-merlin-v55-503>
[OCaml-LSP 1.21.0-4.14]
<https://ocaml.org/changelog/2025-06-23-ocaml-lsp-1210-414>
[Merlin 4.19-414]
<https://ocaml.org/changelog/2025-06-23-merlin-v419-414>
◊ Emacs Integration
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.
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.
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.
*Notable Activity:*
• [ocaml-eglot 1.0.0 release] bringing LSP to Emacs
• Subsequent releases 1.1.0 and 1.2.0 adding flycheck support and
Emacs 30.1 compatibility
• Active development replacing maintenance-only merlin.el
[ocaml-eglot 1.0.0 release]
<https://discuss.ocaml.org/t/ann-release-of-ocaml-eglot-1-0-0/15978/14>
◊ Visual Studio Code Plugin
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 [Dune package management], and if you haven't
tried it, or have been waiting for it to mature, now is a great time
to get started!
Development continues on improving the OCaml VSCode editor plugin
experience. For example, when using opam to manage your project's
dependencies and `ocaml-lsp-server' is not found in the opam switch,
the plugin will now prompt users to install it.
*Notable Activity:*
• Automatically installing/updating ocaml-lsp-server ([#1725])
• Automatically configuring dune package management ([#1791])
[Dune package management]
<https://dune.readthedocs.io/en/stable/tutorials/dune-package-management/setup.html>
[#1725] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1725>
[#1791] <https://github.com/ocamllabs/vscode-ocaml-platform/pull/1791>
Documentation Tools
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
*Roadmap*: [Share / (W25) Generate Documentation]
[Share / (W25) Generate Documentation]
<https://ocaml.org/tools/platform-roadmap#w25-generate-documentation>
◊ Odoc
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.
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.
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.
*Notable Activity:*
• [Release of Odoc 3.1.0]
• ["Odoc 3 is now live on OCaml.org!"] - Jon Ludlam's blog post about
the deployment of Odoc 3 to ocaml.org
• ["Odoc 3: So what?"] - in-depth explanation of Odoc 3's
manual-focused features
• Continued work on OCaml.org documentation pipeline integration
through new package archiving tools
*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)
[Release of Odoc 3.1.0]
<https://ocaml.org/changelog/2025-07-15-odoc-310>
["Odoc 3 is now live on OCaml.org!"]
<https://jon.recoil.org/blog/2025/07/odoc-3-live-on-ocaml-org.html>
["Odoc 3: So what?"] <https://jon.recoil.org/blog/2025/04/odoc-3.html>
Ppxlib
╌╌╌╌╌╌
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.
The update includes changes to the representation of functions, and
package authors are encouraged to consult [the upgrade guide] as some
ppxes may require updates.
*Notable Activity:*
• [Release of Ppxlib 0.36.1]
• Enhanced support for OCaml 5.2 AST features and compatibility
improvements
*Maintained by*: Patrick Ferris ([@patricoferris])
[the upgrade guide]
<https://github.com/ocaml-ppx/ppxlib/wiki/Upgrading-to-ppxlib-0.36.0>
[Release of Ppxlib 0.36.1]
<https://ocaml.org/changelog/2025-07-10-ppxlib-0361>
[@patricoferris] <https://github.com/patricoferris>
OCaml 5.4.0
╌╌╌╌╌╌╌╌╌╌╌
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.
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.
*Notable Activity:*
• [OCaml 5.4.0-beta1 release] for early testing
• [OCaml 5.4.0-alpha1] provided initial preview
• Continued LTS support for OCaml 4.14 users
[OCaml 5.4.0-beta1 release]
<https://ocaml.org/changelog/2025-07-22-ocaml-540-beta1>
[OCaml 5.4.0-alpha1]
<https://ocaml.org/changelog/2025-05-22-ocaml-540-alpha1>
Utop
╌╌╌╌
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.
*Notable Activity:*
• [Release of Utop 2.16.0]
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.
[Release of Utop 2.16.0]
<https://ocaml.org/changelog/2025-07-25-utop-2160>
ppx_format
══════════
Archive: <https://discuss.ocaml.org/t/ann-ppx-format/17211/1>
Emile Trotignon announced
─────────────────────────
I happy to announce the first release of [ppx_format].
Its a small ppx rewriter that was first written at the mirage retreat
in 24 with @PizieDust, and that allows to put values in the middle of
format strings:
┌────
│ let s = "World"
│ let x = 123
│ let () = Format.printf {%i|Hello {%s s} {%a Format.pp_print_char % Char.chr 65} {%d x}%!|}
└────
Its compatible with any function that takes format strings. The only
constraint is that the format string has to be the last argument.
I have used at in some of my projects, and it will be available on
opam as soon as the release PR is merged.
[ppx_format] <https://github.com/EmileTrotignon/ppx_format>
New release of Menhir (20250903)
════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-new-release-of-menhir-20250903/17212/1>
François Pottier announced
──────────────────────────
It is my pleasure to announce a new release of Menhir. The main change
is improved parser construction time in `--table' mode.
• The table back-end uses a new table compression algorithm.
This algorithm is significantly faster than the previous algorithm:
in our tests, it can be up to 8 times faster. This results in
observably faster compilation: for example, the time required to
compile the OCaml parser drops from 1.2 seconds to 0.6 seconds.
Compared with the previous algorithm, the new algorithm produces
results of roughly similar quality: the size of the compressed
tables can increase or decrease by a few percent, up to 20% in the
most dramatic cases. On average, we observe a 1% increase in size.
The use of the previous algorithm can be requested by the command
line switch `--pack-classic'. This command line switch may disappear
in the future.
(Contributed by Frédéric Bour; reviewed by François Pottier.)
To install this release, please type:
┌────
│ opam update && opam install menhir.20250903
└────
Happy parsing, François.
Chat plugin activated, and adding more site categories
══════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/chat-plugin-activated-and-adding-more-site-categories/17220/1>
Anil Madhavapeddy announced
───────────────────────────
Following the discussion in
<https://discuss.ocaml.org/t/synchronous-discussion-channel-for-compiler-contributors/17198>
, I’ve activated the chat functionality on this site, with one new
channel ( <https://discuss.ocaml.org/chat/c/general/2> ). Join in and
experiment with it, and give feedback on this thread!
We’ve also not refreshed the site categories here for some time. Back
in about 2019, we experimented with a private maintainers category,
but others are possible:
• Discourse has RSS/Atom auto-posting support. We can add the
<https://ocaml.org/changelog> to this, which seems like a good place
to make that more visible. I propose a new category “ChangeLog” for
this (other names welcome).
• I’m also knocking up a script to do weekly reports from the opam
repository, which was originally for my own use, but I could make
this public. Would others be interested in a weekly digest post here
about “new and updated packages”?
• Any other categories you’d like to see? I can’t see an easy way to
bridge GitHub discussions with this forum, unfortunately, but please
do poke around the Discourse docs and see if you can find something.
Outreachy Mentors Wanted
════════════════════════
Archive:
<https://discuss.ocaml.org/t/outreachy-mentors-wanted/17224/1>
Patrick Ferris announced
────────────────────────
I'm excited to share that the OCaml community has secured funding for
the next round of Outreachy. Thanks to [Jane Street] and [Tarides], we
have funding for 3 mentees in the next cohort of Outreachy internships
alongside 3/4 mentors. *We are actively seeking mentors and projects
for the OCaml community*. If you haven't already, please do read our
previous post about becoming an Outreachy mentor:
<https://discuss.ocaml.org/t/become-an-outreachy-mentor-support-the-growth-and-diversity-of-the-ocaml-community/8213>.
If you have any questions please reach out to me directly or here on
this thread. To sign up, [please use this link to the Outreachy signup
page]. If you would like to co-mentor (i.e. support a project but not
lead that project), let people know by commenting on this thread.
Thanks!
[Jane Street] <https://www.janestreet.com/>
[Tarides] <https://tarides.com/>
[please use this link to the Outreachy signup page]
<https://www.outreachy.org/outreachy-december-2025-internship-cohort/communities/ocaml/submit-project/>
Other OCaml News
════════════════
>From the ocaml.org blog
───────────────────────
Here are links from many OCaml blogs aggregated at [the ocaml.org
blog].
• [Upcoming OCaml Events]
• [Giving hub.cl an upgrade]
• [Outreachy May 2025 Demo Day]
• [OCaml Weekly 2025 w32 to w35]
[the ocaml.org blog] <https://ocaml.org/blog/>
[Upcoming OCaml Events] <https://ocaml.org/events>
[Giving hub.cl an upgrade]
<https://jon.recoil.org/blog/2025/09/giving-hub-cl-an-upgrade.html>
[Outreachy May 2025 Demo Day]
<https://watch.ocaml.org/videos/watch/a1ed70d6-f57a-4349-ba85-c12b2054529f>
[OCaml Weekly 2025 w32 to w35]
<https://patrick.sirref.org/ocaml-weekly-2025-w32-w35/>
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: 44084 bytes --]
next reply other threads:[~2025-09-09 12:30 UTC|newest]
Thread overview: 257+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-09 12:30 Alan Schmitt [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-09-02 12:23 Alan Schmitt
2025-08-26 12:34 Alan Schmitt
2025-08-19 12:20 Alan Schmitt
2025-08-12 15:32 Alan Schmitt
2025-08-05 8:17 Alan Schmitt
2025-07-29 9:36 Alan Schmitt
2025-07-22 12:07 Alan Schmitt
2025-07-15 17:14 Alan Schmitt
2025-07-08 12:45 Alan Schmitt
2025-07-01 11:16 Alan Schmitt
2025-06-24 14:02 Alan Schmitt
2025-06-17 6:44 Alan Schmitt
2025-06-10 13:36 Alan Schmitt
2025-06-03 9:19 Alan Schmitt
2025-05-27 9:22 Alan Schmitt
2025-05-20 11:52 Alan Schmitt
2025-05-13 9:40 Alan Schmitt
2025-05-06 7:24 Alan Schmitt
2025-04-29 8:39 Alan Schmitt
2025-04-22 11:50 Alan Schmitt
2025-04-15 9:51 Alan Schmitt
2025-04-08 13:14 Alan Schmitt
2025-04-01 9:12 Alan Schmitt
2025-03-25 8:06 Alan Schmitt
2025-03-18 10:18 Alan Schmitt
2025-03-11 15:00 Alan Schmitt
2025-03-04 14:01 Alan Schmitt
2025-02-25 10:36 Alan Schmitt
2025-02-18 14:33 Alan Schmitt
2025-02-11 7:17 Alan Schmitt
2025-02-04 12:05 Alan Schmitt
2025-01-28 13:24 Alan Schmitt
2025-01-21 15:47 Alan Schmitt
2025-01-14 8:20 Alan Schmitt
2025-01-07 17:26 Alan Schmitt
2024-12-31 8:03 Alan Schmitt
2024-12-24 8:55 Alan Schmitt
2024-12-17 13:05 Alan Schmitt
2024-12-10 13:48 Alan Schmitt
2024-12-03 14:44 Alan Schmitt
2024-11-26 8:30 Alan Schmitt
2024-11-19 6:52 Alan Schmitt
2024-11-12 15:00 Alan Schmitt
2024-11-05 13:22 Alan Schmitt
2024-10-29 13:30 Alan Schmitt
2024-10-22 12:42 Alan Schmitt
2024-10-15 13:31 Alan Schmitt
2024-10-08 10:56 Alan Schmitt
2024-10-01 13:37 Alan Schmitt
2024-09-24 13:18 Alan Schmitt
2024-09-17 14:02 Alan Schmitt
2024-09-10 13:55 Alan Schmitt
2024-09-03 8:24 Alan Schmitt
2024-08-27 9:02 Alan Schmitt
2024-08-20 9:29 Alan Schmitt
2024-08-13 13:21 Alan Schmitt
2024-08-06 9:00 Alan Schmitt
2024-07-30 13:26 Alan Schmitt
2024-07-23 13:30 Alan Schmitt
2024-07-16 6:24 Alan Schmitt
2024-07-09 9:19 Alan Schmitt
2024-07-02 7:30 Alan Schmitt
2024-06-25 13:58 Alan Schmitt
2024-06-18 13:05 Alan Schmitt
2024-06-11 15:04 Alan Schmitt
2024-06-04 13:26 Alan Schmitt
2024-05-28 9:07 Alan Schmitt
2024-05-21 13:07 Alan Schmitt
2024-05-14 13:25 Alan Schmitt
2024-05-07 7:30 Alan Schmitt
2024-04-30 7:22 Alan Schmitt
2024-04-23 12:17 Alan Schmitt
2024-04-16 12:00 Alan Schmitt
2024-04-09 9:15 Alan Schmitt
2024-04-02 14:31 Alan Schmitt
2024-03-26 6:32 Alan Schmitt
2024-03-19 15:09 Alan Schmitt
2024-03-12 10:31 Alan Schmitt
2024-03-05 14:50 Alan Schmitt
2024-02-27 13:53 Alan Schmitt
2024-02-20 9:12 Alan Schmitt
2024-02-13 8:42 Alan Schmitt
2024-02-06 15:14 Alan Schmitt
2024-01-30 14:16 Alan Schmitt
2024-01-23 9:45 Alan Schmitt
2024-01-16 10:01 Alan Schmitt
2024-01-09 13:40 Alan Schmitt
2024-01-02 8:59 Alan Schmitt
2023-12-26 10:12 Alan Schmitt
2023-12-19 10:10 Alan Schmitt
2023-12-12 10:20 Alan Schmitt
2023-12-05 10:13 Alan Schmitt
2023-11-28 9:09 Alan Schmitt
2023-11-21 7:47 Alan Schmitt
2023-11-14 13:42 Alan Schmitt
2023-11-07 10:31 Alan Schmitt
2023-10-31 10:43 Alan Schmitt
2023-10-24 9:17 Alan Schmitt
2023-10-17 7:46 Alan Schmitt
2023-10-10 7:48 Alan Schmitt
2023-10-03 13:00 Alan Schmitt
2023-09-19 8:54 Alan Schmitt
2023-09-12 13:21 Alan Schmitt
2023-09-05 9:00 Alan Schmitt
2023-08-29 13:04 Alan Schmitt
2023-08-22 9:20 Alan Schmitt
2023-08-15 16:33 Alan Schmitt
2023-08-08 8:53 Alan Schmitt
2023-08-01 7:13 Alan Schmitt
2023-07-25 8:45 Alan Schmitt
2023-07-11 8:45 Alan Schmitt
2023-07-04 9:18 Alan Schmitt
2023-06-27 8:38 Alan Schmitt
2023-06-20 9:52 Alan Schmitt
2023-06-13 7:09 Alan Schmitt
2023-06-06 14:22 Alan Schmitt
2023-05-30 15:43 Alan Schmitt
2023-05-23 9:41 Alan Schmitt
2023-05-16 13:05 Alan Schmitt
2023-05-09 11:49 Alan Schmitt
2023-05-02 8:01 Alan Schmitt
2023-04-25 9:25 Alan Schmitt
2023-04-18 8:50 Alan Schmitt
2023-04-11 12:41 Alan Schmitt
2023-04-04 8:45 Alan Schmitt
2023-03-28 7:21 Alan Schmitt
2023-03-21 10:07 Alan Schmitt
2023-03-14 9:52 Alan Schmitt
2023-03-07 9:02 Alan Schmitt
2023-02-28 14:38 Alan Schmitt
2023-02-21 10:19 Alan Schmitt
2023-02-14 8:12 Alan Schmitt
2023-02-07 8:16 Alan Schmitt
2023-01-31 6:44 Alan Schmitt
2023-01-24 8:57 Alan Schmitt
2023-01-17 8:37 Alan Schmitt
2022-11-29 14:53 Alan Schmitt
2022-09-27 7:17 Alan Schmitt
2022-09-20 14:01 Alan Schmitt
2022-09-13 8:40 Alan Schmitt
2022-08-23 8:06 Alan Schmitt
2022-08-16 8:51 Alan Schmitt
2022-08-09 8:02 Alan Schmitt
2022-08-02 9:51 Alan Schmitt
2022-07-26 17:54 Alan Schmitt
2022-07-19 8:58 Alan Schmitt
2022-07-12 7:59 Alan Schmitt
2022-07-05 7:42 Alan Schmitt
2022-06-28 7:37 Alan Schmitt
2022-06-21 8:06 Alan Schmitt
2022-06-14 9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24 8:04 Alan Schmitt
2022-05-17 7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03 9:11 Alan Schmitt
2022-04-26 6:44 Alan Schmitt
2022-04-19 5:34 Alan Schmitt
2022-04-12 8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29 7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15 9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11 8:20 Alan Schmitt
2022-01-04 7:56 Alan Schmitt
2021-12-28 8:59 Alan Schmitt
2021-12-21 9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16 8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02 8:50 Alan Schmitt
2021-10-19 8:23 Alan Schmitt
2021-09-28 6:37 Alan Schmitt
2021-09-21 9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17 6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27 8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22 9:04 Alan Schmitt
2021-06-01 9:23 Alan Schmitt
2021-05-25 7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04 8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20 9:07 Alan Schmitt
2021-04-06 9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23 9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23 9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12 9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29 9:59 Alan Schmitt
2020-12-22 8:48 Alan Schmitt
2020-12-15 9:51 Alan Schmitt
2020-12-01 8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27 8:43 Alan Schmitt
2020-10-20 8:15 Alan Schmitt
2020-10-06 7:22 Alan Schmitt
2020-09-29 7:02 Alan Schmitt
2020-09-22 7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01 7:55 Alan Schmitt
2020-08-18 7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14 9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30 7:00 Alan Schmitt
2020-06-16 8:36 Alan Schmitt
2020-06-09 8:28 Alan Schmitt
2020-05-19 9:52 Alan Schmitt
2020-05-12 7:45 Alan Schmitt
2020-05-05 7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21 8:58 Alan Schmitt
2020-04-14 7:28 Alan Schmitt
2020-04-07 7:51 Alan Schmitt
2020-03-31 9:54 Alan Schmitt
2020-03-24 9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03 8:00 Alan Schmitt
2020-02-25 8:51 Alan Schmitt
2020-02-18 8:18 Alan Schmitt
2020-02-04 8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31 9:18 Alan Schmitt
2019-12-17 8:52 Alan Schmitt
2019-12-10 8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26 8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05 6:55 Alan Schmitt
2019-10-15 7:28 Alan Schmitt
2019-09-03 7:35 Alan Schmitt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2348vyfih.fsf@mac-03220211.irisa.fr \
--to=alan.schmitt@polytechnique.org \
--cc=caml-list@inria.fr \
--cc=lwn@lwn.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox