OCaml Weekly News

Previous Week Up Next Week

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 use dk Ml.Switch init (or the deprecated dkml 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 and with-dkml.exe but both are deprecated. The new (unified) executable is dk.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 replacement dk Ml.Switch init and the with-dkml proxy commands, and can be disabled with dk Ml.News disable. In particular, use dk 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 fixes opam 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 and Ast_builder it became unclear why Ast_helper exists at all. There's a move to deprecate Ast_helper and promote the use of Ast_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 and mli 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:

  1. libcmap (in memory stats and config database)
  2. libquorum and libvotequorum (query of quorum states)
  3. libcfg (config reload, etc)
  4. 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

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.