OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of January 28 to February 04, 2025.

Table of Contents

Opam repository archive - clarification of the opam fields

Hannes Mehnert announced

Dear everyone,

we had further discussions about the semantics of x-maintenance-intent, and hope to clarify in this post. Also, we adapted the policy which is in the opam-repository git repository: https://github.com/ocaml/opam-repository/blob/master/governance/policies/archiving.md

x-maintenance-intent

We've had some further discussions on Phase 3 and the semantics of the x-maintenance-intent field.

  • Goal

    Our aim is to be not disruptive for the common OCaml programmer or user. The opam-repository supports (from February 1st on) OCaml 4.08 and greater. This means that if you install OCaml 4.08 you should be able to install all the packages that have ever been released with 4.08 support.

    The revised semantics of "(latest)" is "the latest version of this package, so that every supported OCaml version will have an installation candidate".

    • Example

      Let me give you an example, consider the package "basic" which exists in three versions:

      • basic.1.0.0 with the dependency "ocaml" {>= "4.05" & < "5"}
      • basic.1.0.1 with the dependency "ocaml" {>= "4.08" & < "5"}
      • basic.2.0.0 with the dependency "ocaml" {>= "4.14" & < "5"}

      Here, if the x-maintenance-intent: [ "(latest)" ] is present, we will only (try to) archive basic.1.0.0 – since 1.0.1 is needed for OCaml 4.08 .. 4.13.

  • Default value

    The default value of x-maintenance-intent will for now be "(any)" - so all versions are kept. In the future, we may change this default to "(latest)", but will announce this ahead of the change with plenty of time.

    This default value is agreed on by the non-disruptive agreement to cause the least trouble.

x-maintained

In addition to the x-maintenance-intent - which covers the semantics of all versions of an opam package, we support another field, x-maintained: BOOL. This is an overwrite for a specific opam package version, and allows to declare whether it is maintained or not.

It is useful in the setting where you've lots of pre-releases that are no longer maintained and you like to state this without writing a global intent for the opam package (e.g. for the OCaml compiler packages, the alpha, beta, and rc versions). Here, x-maintained: false is a nice setting. NB: earlier we proposed flags: deprecated - but we stay away from the flags, since there may be packages that are deprecated but still maintained (opam prints a warning if you install a package with the deprecated flag).

If you have a private project and depend on a specific version of an opam package, you can as well PR the x-maintained: true field for that opam file (please specify when, who, and why). This will ensure that this opam file stays in the opam repository.

Phase 3

In Phase 3, we will consider all packages marked with x-maintenance-intent (the versions not matching the intent) and x-maintained: false to be archived.

We plan to ensure that (a) all supported OCaml versions will retain an installation candidate (b) all reverse dependencies will still be installable. As a note, if you have an availability condition (some version will only work on some OS), we won't take that into consideration – you will need to specify the x-maintenance-intent to cover your versions.

Our plan is to publish the list of packages to be archived by February 15th on this discourse. It is likely we'll have candidate lists PRed to the opam-repository-archive earlier. We have lots of ideas and plans for CI systems to give feedback which opam versions are falling into the maintenance intent when you open a PR to the opam-repository (but we're not there yet).

Future

As noted above, the default value of x-maintenance-intent may change in time. If this is decided, we will announce this with plenty of time before.

Also, at some point in the future we will bump the OCaml lower bound (from February 1st it is 4.08).

Action

For the smooth shrinking of the opam-repository, please don't hesitate to fill in your x-maintenance-intent (especially "(none)" and "(latest)" are fine and safe choices).

If you want to contribute more, the opam-repository needs help for triaging and merging PRs - why not become a maintainer? See the old but still valid 'call for new opam-repository maintainers' if you're interested.

Chúc mừng năm mới Ất Tỵ 2025!

sanette announced

Happy Vietnamese (and Chinese too) New Year!

It's the year of the snake, no its has nothing to do with python, but why not play Snóke ;)

Happy OCaml snaky year to all

724ead058962d131571f612fa8939f1847758c7e_2_1146x1000.png

Rewriting Slipshow in OCaml: The undo-able monad

Paul-Elliot announced

Hello OCamlers,

I have recently rewritten Slipshow's engine from JavaScript to OCaml. It turns out this rewriting was very satisfying, and many niceties came out of it. I have written a blog post about a specifically interesting one: the use of custom let operators with the "undo-able" monad. I hope you enjoy the read!

The blog post: How I fixed Slipshow's worst flaw using OCaml and a monad.

Announcing climate.0.4.0

Steve Sherratt announced

Climate is a declarative command-line parser for OCaml. This release is mostly focused on improving --help messages and allowing the colours of help messages to be configured.

Added

  • Allow help messages colours to be configured (#7)
  • Proof of concept of manpage generation (disabled in release as it's very incomplete) (#11)

Changed

  • Changed default help message colour scheme to be more colour-blind readable

and more visible on light and dark terminals (#7)

  • Changed description of --help argument.

Fixes

  • Remove superfluous style reset escape sequences (#7)
  • Don't apply formatting to trailing spaces in argument names in help messages (#8)
  • Print a readable error when the argument spec is invalid (#10)

15th MirageOS retreat May 13th - 20th

Hannes Mehnert announced

Dear everybody,

we'll have another MirageOS retreat in May 2025 (13th - 20th). Happy to see lots of old and new faces there.

Please jump to https://retreat.mirageos.org for further details, and sign up and spread the word :)

Don't hesitate to ask questions in this topic.

Dune dev meeting

Etienne Marais announced

Hi Dune enthusiasts :smile:,

We will hold the regular Dune Dev Meeting on Wednesday, February, 5th at 9:00 CET. As usual, the session will be one hour long.

Whether you are a maintainer, a regular contributor, a new joiner or just curious, you are welcome to join: these discussions are opened! The goal of these meetings is to provide a place to discuss the ongoing work together and synchronize with the Dune developers! :ok_hand:

:calendar: Agenda

The agenda is available on the meeting dedicated page. Feel free to ask if you want to add more items in it.

:computer: Links

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.