OCaml Weekly News

Previous Week Up Next Week

Hello

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

Table of Contents

opam 2.5.0~alpha1

Kate announced

Hi everyone,

We are happy to announce the first alpha release of opam 2.5.0.

This version is an alpha, we invite users to test it to spot previously unnoticed bugs as we head towards the stable release.

What’s new? Some highlights:

  • :high_speed_train: Speed up opam update up to 70%. Thanks to @arozovyk, opam update now loads opam files incrementally, only parsing the files that have changed since the last time you called opam update. Before that, opam files in opam repositories were all loaded from the file system after an update if there was any change. The performance improvement of this change thus depends on how often you call opam update and what type of repository and OS you are using. (#5824)
  • :spiral_shell: Improved shell integration. A number of users have been hitting issues with opam's shell integration where parts of a previous environment was kept in the current environment, causing a number of issues. These can be triggered by, for example, nuking your opam root directory (by default ~/.opam or %LocalAppData%\opam). For this particular case we are still working on a fix, but many other users have reported similar issues without nuking their root directory and in that case we believe to have fixed the majority of issues. (dbuenzli/topkg#142, #4649, #5761)
  • :spiral_shell:² We've also changed the default file to which opam init writes the opam shell integration to be .bashrc instead of the previous .profile or .bash_profile when bash is detected. Doing it this way prevents some issues with existing .profile files that source the .bashrc file and causing an infinite loop when opam asks users to ensure they source their .bashrc file in their .profile file. (#5819, #4201, #3990)
  • :shield: The opam install script now installs an appropriate apparmor profile on systems configured with apparmor (this is enabled by default on Ubuntu). This change is not strictly speaking related to this release as it is deployed for every version. (#5968)
  • :ocean: Many more UI additions and improvements, bug fixes, …

:open_book: You can read our blog post for more information about these changes and more, and for even more details you can take a look at the release note or the changelog.

Try it!

The upgrade instructions are unchanged:

bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.5.0~alpha1"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.5.0~alpha1"

Please report any issues to the bug-tracker.

Happy hacking, <> <> The opam team <> <> :camel:

Release of Fmlib 0.6.0

Helmut announced

I have the pleasure to annouce the release of version 0.6.0 of fmlib. The main components of fmlib are

  1. Web Applications in the Elm style
  2. Pretty Printing
  3. Combinator Parsing

Documentation see https://hbr.github.io/fmlib/odoc/index.html.

This release is mainly focussed on pretty printing and web applications. The new release has some breaking changes because some function names or function arguments have changed. The breaking changes can be easily fixed by looking into the documentation which contains all functions and the corresponding arguments.

Web applications:

  • Single page applications are now fully supported. I.e. it is possible to manage several virtual pages in one application. The switching between the pages can be done by accessing the browser history. I.e. the user is capable of pressing back and forward buttons and the application remains the same. For an introduction to single page applications see here. An example of a single page application can be seen here.
  • Web applications can contain reference elements. These can be used to optimize applications with really big doms (e.g. several hundreds or thousands of elements). Introduction to reference elements see here. A simple spreadsheet implemented as a web application can be found here.
  • Files on the local machine can be selected and loaded into the application.
  • Session and local storage of the browser can be used.

Pretty Printing: A new algorithm based on Phil Wadler’s design is used which makes the code more elegant, easy to read and fixes some bugs in the previous algorithm. The new algorithm is in a separate module Pretty. The old module Print is kept but will be removed in the next release.

Combinator Parsing: As a convenience there are lexeme parsers which support languages with some standard syntax (like Haskell’s Parsec). Some bugfixes and minor additional functions. No breaking changes.

MlFront 2.4.2.x

jbeckford announced

MlFront 2.4.2.30, a set of packages centered around language-agnostic build tooling, is available on opam. Changes include:

  • MlFront_Core: FilePath.absolute has flags to create Windows paths longer than 260-characters (MAX_PATH).
  • MlFront_ZipFile: Now has a deterministic mode when creating zip files.
  • MlFront_Cache: Now embeds the sqlite3 C library so you don’t need pkg-config (etc.) to install it.
  • MlFront_Exec: Supports downloading attested (signed) binary packages from GitHub. Confer with my article on GitHub attestations: https://github.com/diskuv/dk/blob/V2_4/docs/posts/2025-10-24-overview-ci-attestations.md
  • MlFront_Thunk: Its ThunkLexers and ThunkParsers include a JSONC parser that can be used to edit config files. Relies on the fmlib_parser library. I use it to autofix JSONC build files with correct checksums and file sizes. (Ping/reply if you would use it so I can separate it)

Other OCaml News

From the ocaml.org blog

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.