OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of August 20 to 27, 2024.
Table of Contents
DkML 2.1.2 and opam 2.2.0
jbeckford announced
The major focus of DkML 2.1.2 is shipping it with opam 2.2 and having some coexistence between DkML and opam 2.2 on Windows. You can skip this post if you don't develop on Windows.
TLDR: Upgrade with winget upgrade dkml
. Use opam-real
to use pure opam 2.2 but only after installing Visual Studio 2022 (confer: release notes); example: opam-real switch create 5.2.0+msvc
. Use dk Ml.Switch init
to create DkML 4.14.2 switch. DkML has better MSVC package support today, while pure opam 2.2 has latest OCaml 5 and is the standard going forward; now you choose both without compromise.
Major changes:
- Uses opam 2.2.0. You can directly use unmodified opam 2.2 with
opam-real switch create 5.2.0+msvc
. Or continue to usedk Ml.Switch init
(or the deprecateddkml init
) to create a DkML 4.14.2 switch which supports more native MSVC Windows packages (for now) but does not have the latest and experimental OCaml language features. - Support Windows SDK 11 (10.0.22621.0) and VC 17.9 and 17.10 (14.39/4x) added to allowed list. This makes it easier to coexist with opam 2.2 which requires Visual Studio 2022, and supports latest GitLab CI with its preinstallation of Visual Studio 2022.
- The ocaml/opam-repository tag was advanced to Aug 15, 2024.
- You can continue to use
dkml.exe
andwith-dkml.exe
but both are deprecated. The new (unified) executable isdk.exe
. See "Deprecated Commands" in the release notes. - Once every two weeks DkML news about new versions, errata, uninstalling, etc. will be shown on a webpage. It is triggered from the now deprecated
dkml init
, the replacementdk Ml.Switch init
and thewith-dkml
proxy commands, and can be disabled withdk Ml.News disable
. In particular, usedk Ml.News
to show the news if you are experiencing problems with DkML. - The patches to the OCaml compiler are now dual-licensed with OCaml's LGPL 2.1 exception and Apache 2.0. All other source (especially the build scripts) for the DkML compiler is licensed solely with Apache 2.0. This is a follow-up to https://github.com/ocaml/ocaml/issues/13177.
- The uninstaller/upgrader stops
opam
,dune
and other OCaml processes since, on Windows, in-use executables can't be deleted or updated. This feature is not foolproof yet. - ull release notes are at https://gitlab.com/dkml/distributions/dkml/-/releases/2.1.2.
Enjoy! And thanks to OCSF for supporting Windows in the last couple of gap years.
Bug reports: GitHub users or [[https://gitlab.com/dkml/distributions/dkml-issues][GitLab users]].
Outreachy Demo Presentation
Patrick Ferris announced
It is my pleasure to announce that next Friday [date=2024-08-30 time=13:00:00 timezone="Europe/London"] we will host the Outreachy Demo presentation. We invite all of the OCaml community and beyond to join us in celebrating the hard work of the community's three interns who have been working on:
- ocaml-api-watch: Libraries and tools to keep watch on you OCaml lib's API changes
- diffcessible: a terminal based diff viewer with an emphasis on being accessible
- ocaml-practice-exercises: Practice exercises for learning OCaml supporting GitHub Codespaces, Replit, and locally with Jupyter Notebook or directly on your machine.
We'll post the meeting link closer to the time. Hopefully see you there! :camel:
opam 2.2.1
R. Boujbel announced
We are pleased to announce the release of opam 2.2.1.
We've fixed a couple of regressions and would like to encourage users of opam 2.2 to upgrade:
- Fix a regression in
opam install --deps-only
where the direct dependencies were not set as root packages - Fix a regression when fetching git packages where the resulting git repository could lead to unexpected outputs of git commands, by disabling shallow clone by default except when fetching an opam repositories
- Mitigate curl/curl#13845 by falling back from
--write-out
to--fail
if exit code 43 is returned by curl. In particular, this fixesopam init
when run from cmd/PowerShell on Windows 11 23H2
You’ll find more information in the release blog post .
To upgrade, simply run for Unix systems
bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) --version 2.2.1"
from PowerShell for Windows systems
Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/ocaml/opam/master/shell/install.ps1) }"
David Allsopp then added
Windows 11 users are strongly encouraged to upgrade to opam 2.2.1 for the mitigation for curl 8.8.0.
opam 2.2.1 is also available via winget
, with winget upgrade OCaml.opam
. The OCaml.opam
winget package downloads the opam
binary from GitHub releases page (thanks to @prometheansacrifice, for contributing the original package!), so installing via winget
is functionally equivalent to using our install.ps1
script.
Ppxlib dev meetings
Patrick Ferris announced
This week's meeting notes are available online.
Here's a brief TL;DR of some of the main points of discussion.
5.2 AST bump progress is waiting for patches to as many ppxes as possible and for fixes to the migration bug(s) (see next bullet point). If ppx authors wish to try the new ppxlib they can add an opam-overlay which also contains patches to a few existing ppxes:
$ opam repo add git+https://github.com/patricoferris/opam-ppxlib-repository.git
- Nathan has worked on a better AST printer inspired by the
ppx_tools
printer and the existing printing functionality of ppxlib. See this PR for more details. This should help better debug AST migration bugs. It makes good use of the AST lift class. - With breakages happening in
Ast_helper
andAst_builder
it became unclear whyAst_helper
exists at all. There's a move to deprecateAst_helper
and promote the use ofAst_builder
instead. This should help reduce maintenance costs and API breakages. - We need to consolidate our documentation better. There should be a focus on moving as much documentation to the
mld
andmli
files as possible.
Happy ppxing :camel: !
First release of corosync
Vincnet Liu announced
Aug 2024 - I am happy to announce the release of https://opam.ocaml.org/packages/corosync/, a binding to libcorosync. It is not (yet) a complete binding to all the APIs of libcorosync, but the bindings to the following libraries are implemented:
- libcmap (in memory stats and config database)
- libquorum and libvotequorum (query of quorum states)
- libcfg (config reload, etc)
- libcpg (closed process group, corosync's model of a cluster)
This project lives on https://github.com/Vincent-lau/ocaml-corosync, and feel free to contact me if you have any questions!
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.