OCaml Weekly News
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 updateup to 70%. Thanks to @arozovyk,opam updatenow loads opam files incrementally, only parsing the files that have changed since the last time you calledopam 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 callopam updateand 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
~/.opamor%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 initwrites the opam shell integration to be.bashrcinstead of the previous.profileor.bash_profilewhenbashis detected. Doing it this way prevents some issues with existing.profilefiles that source the.bashrcfile and causing an infinite loop when opam asks users to ensure they source their.bashrcfile in their.profilefile. (#5819, #4201, #3990) - :shield: The opam install script now installs an appropriate
apparmorprofile on systems configured withapparmor(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
- Web Applications in the Elm style
- Pretty Printing
- 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.absolutehas flags to create Windows paths longer than 260-characters (MAX_PATH). - MlFront_ZipFile: Now has a
deterministicmode 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
Here are links from many OCaml blogs aggregated at 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.