OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of December 10 to 17, 2024.

Table of Contents

Opam repository archival, Phase 1: unavailable packages

Hannes Mehnert announced

It is my pleasure to announce below the list of opam packages that will move to the opam-repository-archive on January 1st 2025. In total there are 4170 opam files scheduled for being moved within 561 unique packages. This decreases the size of the opam-repository by roughly 12.7%.

This list contains all packages (a) marked as "available: false" (which may have various reasons: security issue, source unavailable, … - best to look into the "git log" for the specific package for the reason), and (b) packages which cannot be installed due to missing dependencies (with the packages mentioned in (a) being removed).

The second list of packages (b) has been automatically generated by the archive-opam utility - developed purely for the opam-repository archival project, and this utility may have bugs.

So, if you find a package in the list and you'd like to retain it in the opam-repository, there are some options:

  • (a) you can install it on your system (opam install <pkg>): this means there's a bug in the archive-opam utility, please provide the package name and version in the opam-repository-archive Phase 1 PR, together with your opam version, OCaml version, and operating system;
  • (b) it is not installable: please figure out the reasoning (the "Reasoning" may help you to find the root issue), and try to fix it yourself - if you're unable to fix the root cause, please also comment in the opam-repository-archive Phase 1 PR with the package name and version.

If you've any questions, please don't hesitate to ask here or on GitHub or via another communication channel.

You can help further on the archiving process:

  • as mentioned in the last announcement please add the x-maintenance-intent to your packages (a good choice for a lot of packages is x-maintenance-intent: [("latest")] if you're maintaining the latest version only) - this will be considered in Phase 3 (March 1st 2025);
  • if you are the author or maintainer of a package that is no longer useful or maintained, you can as well mark your opam files in the opam-repository with flags: deprecated (this will be taken into account in Phase 3 - March 1st 2025);
  • if you flagged your preliminary releases with flags: avoid-version, and they can now be removed (e.g. since a stable version has been released), please open a pull request to replace the avoid-version with deprecated.

Please note that the next Phase will be announced on January 15th with all packages that are only installable with OCaml < 4.08 - archiving is scheduled for February 1st.

To keep track of the announcements, please look at the opam-repository tag.

You can reproduce these lists by running opam-archive --unavailable --dry-run --later-installable --pkg-all using opam-archive at 666a3b3886acfbcf82a7d73134247ccaa605510a and opam-repository at de786e28dbea73843ad5e5f0290a4e81fba39370.

A big thanks to the OCaml Software Foundation for funding the opam-repository archival project.

Packages scheduled for archiving (pkg-name: pkg-version[, pkg-version]*)

editor note Please find this long list in the post itself: https://discuss.ocaml.org/t/opam-repository-archival-phase-1-unavailable-packages/15797

Proposed Package Archiving Policy for the opam Repository

Continuing this thread, Hannes Mehnert announced

Hey,

just a quick update on the proposed roadmap. The changes are we don't do avoid-version / deprecated flag cleanups in Phase 1. Instead, we plan to remove packages with deprecated flag in Phase 3. Packages with flag avoid-version will stay in opam-repository, but we reach out to maintainers and authors whether their intention is to mark these packages as deprecated (e.g. for alpha / beta releases and release candidates).

Please find the updated roadmap below:

  • December 1st 2024: announcement of this proposal
  • December 15th 2024: announcement of the packages affected by Phase 1 (uninstallable packages (“available: false”, “opam admin check –installability -i”)
  • January 1st 2025: Phase 1 cutting point: packages are moved to opam-repository-archive
  • January 15th 2025: announcement of the packages affected by Phase 2 (OCaml lower bound 4.08)
  • February 1st 2025: Phase 2 cutting point: packages are moved to opam-repository-archive
  • February 15th 2025: initial spring cleaning, announcement of packages (based on maintenance-intent), and flags: deprecated
  • March 1st 2025: spring cleaning cutting point: packages are moved to opam-repository-archive
  • Every quarter: repeat Phase 3
  • Every year: reconsider Phase 2 with an increased OCaml lower bound

QCheck 0.23

Jan Midtgaard announced

I'm happy to announce the 0.23 release of qcheck-core, qcheck, qcheck-alcotest, and qcheck-ounit, along with a 0.5 release of ppx_deriving_qcheck :tada:

The biggest user-visible change is the addition of a qcheck-core overview documentation page as well as clean-ups to the two module pages to provide a better overview of the different available features:

In more detail the 0.23 release has made the following changes:

  • Quote and escape in Print.string and Print.char in the QCheck module, mirroring the QCheck2.Print module's behaviour. Also quote and escape Print.bytes in both QCheck and QCheck2.
  • Clean-up QCheck and QCheck2 documentation pages
  • Add exponential generator to QCheck, QCheck.Gen, and QCheck2.Gen
  • Add Shrink.bool and use it in QCheck.bool
  • Remove unread fun_gen field from QCheck2's fun_repr_tbl type thereby silencing a compiler warning

The ppx_deriving_qcheck 0.5 release contains a fix to derive generators for mutually recursive data types involving records, thanks to a contribution from @Kakadu

Happy testing! :smiley:

OCaml's Code of Conduct team - rotation of one team member

Sonja Heinze announced

A bit over two years ago, the OCaml community wrote and adopted a code of conduct and put together a code of conduct team. The code of conduct team is there for anyone in the community whenever they have concerns about behavior that falls within the scope of the code of conduct. It's currently made up of @c-cube, @Khady, @mseri, @rjbou myself.

When putting together the code of conduct team, we mentioned that we'd rotate the team from time to time to keep it dynamic. We're now rotating one team member: I'm leaving the team and @shonfeder is joining. Thanks a lot, @shonfeder, for taking on this responsibility!

Let's also use this opportunity to explain how the Code of Conduct team operates: We generally do not step in on our own initiative, but only when asked. That's to avoid having five community members acting as a kind of "overarching community police". That said, we will step in without being asked in extreme cases, but this has not happened so far. We do moderate and/or act when people reach out to us. That does happen from time to time.

By the way, you can adopt the Code of Conduct yourself on your OCaml GitHub/GitLab repos by creating a `CODE_OF_CONDUCT.md`, containing the CODE_OF_CONDUCT_TEMPLATE - full instructions here. So far, it is already adopted on this discuss forum, the caml-list@inria.fr mailing list, the OCaml IRC, OCaml discord, physical events like OCaml Workshop, and these repositories. Absolutely everyone is welcome to adopt it on their OCaml repository as well. Adopting it doesn't have a practical effect in a big majority of cases, but it always makes contributors, particularly newcomers, feel more welcome.

Have a nice weekend everyone! Best, @pitag on behalf of the whole Code of Conduct team

qcheck-lin and qcheck-stm 0.2

Jan Midtgaard announced

I just rolled a 0.5 release of qcheck-lin, qcheck-stm, and qcheck-multicoretests-util: https://github.com/ocaml-multicore/multicoretests/releases/tag/0.5

The biggest news in the 0.5 release is the addition of Util.Pp.pp_fun_ for printing function values generated with QCheck.To ensure quoted and escaped output for chars and strings, this required bumping the qcheck-core lower bound to the freshly released qcheck-core.0.23. This in turn, enabled a couple of other clean-ups:

  • #492: Also use the new, upstreamed Gen.exponential combinator in STM
  • #491: Require qcheck.0.23, simplify show functions by utilizing it, and update expect outputs accordingly
  • #486: Add Util.Pp.pp_fun_ printer for generated QCheck.fun_ functions

Happy testing and happy holidays! :smiley: :christmas_tree:

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.