OCaml Weekly News
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 isx-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 theavoid-version
withdeprecated
.
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
Archive: https://discuss.ocaml.org/t/proposed-package-archiving-policy-for-the-opam-repository/15713/6
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
andPrint.char
in theQCheck
module, mirroring theQCheck2.Print
module's behaviour. Also quote and escapePrint.bytes
in bothQCheck
andQCheck2
. - Clean-up
QCheck
andQCheck2
documentation pages - Add
exponential
generator toQCheck
,QCheck.Gen
, andQCheck2.Gen
- Add
Shrink.bool
and use it inQCheck.bool
- Remove unread
fun_gen
field fromQCheck2
'sfun_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
Archive: https://discuss.ocaml.org/t/ocamls-code-of-conduct-team-rotation-of-one-team-member/15791/1
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 generatedQCheck.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.