From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=WPmRlt9L; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 9AEAA400A5 for ; Tue, 20 Jan 2026 09:19:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=SJlLOBVNJVQCtSGrBcIWB2d9wB15l/PLXRLbyjj2rpY=; b=WPmRlt9LkbIoN/vI/IwLFzPEOEf4YfgUFLAyMEgaeNfoj3MafHegHDJR hDtquUQxhyzoYDY+3hNtDzbAdXkibj4mbpSFL5jfpqRTg/u9AKoA5Gjdh AVAnWSfVc/+3Vg148OKJ+n+3GM/PLwvgzY2x7xij1IBTAqw1W4EgueKFi Q=; X-CSE-ConnectionGUID: GR2Lk/1VRA+tSpxSbOndeA== X-CSE-MsgGUID: 4bmjOzU3Q76uk/67popD+g== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.21,240,1763420400"; d="scan'208,217";a="259401338" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 20 Jan 2026 10:19:25 +0100 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 8750A839A3; Tue, 20 Jan 2026 10:19:24 +0100 (CET) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id D0BE5817E3 for ; Tue, 20 Jan 2026 10:19:15 +0100 (CET) X-CSE-ConnectionGUID: BWkze3k3RryaWdWcfg/q3w== X-CSE-MsgGUID: DUdD7RahT2i+NdJ8qdPJpA== IronPort-SDR: 696f4892_9z3ikwmUoA1ZjuiOleYT5U2ZWQQ/zKSQhQYdWpiEW18Dxlu lkhZTmGNKWlsLaf2QkQLRFdn1kc9Bb09TqlVxuA== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0HHBQAgSG9phSIeaIFahBZbKRoBbF8ZGgcISQOEGTyDT?= =?us-ascii?q?44lgRUBiH2HOop7gWmBLBYjFQEDAQ0uARsEAQIEAQEDAQIBggyCdAKMeQIfB?= =?us-ascii?q?gEENBMBAgQBAQEBAwIDAQEBAQEBAQEBDQEBBQEBAQIBAQIEBgECEAEBAQFAS?= =?us-ascii?q?YYVBwQvDYJFUVQdXgYBCAEGAS8BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAgQEBAECCiQDKyQODgECBgoTAQEmEhgjAxAEA?= =?us-ascii?q?QYDAhEBNQMBEwESFAIDAYJoAYIgAgJPAwUMBpJfmnwaN3qBMoEBggwBAQaBC?= =?us-ascii?q?D4CAQEBDQMBDgkm2hCBSxwJFIE5hW6CShsBKklRGgEChCkgCYMVgR0CJw+BV?= =?us-ascii?q?USBFYIoSgUCb4JEBhcBAQEBAReBDBEEAwEBTQmDJYJpghEVehQddYEYAS4Dg?= =?us-ascii?q?UE1AYVZBoFIYyaHC4FEIgMmMywBVRMXCwcFXoEIAyovLW4yHYEjPhcyWBsHB?= =?us-ascii?q?YEiiQQPiTOBXwMLbT03FBuPb0IZHCuBNgUmDjgGAhUnJAIYBQkFAwUDCRYBA?= =?us-ascii?q?QUdLQEEBA4VEQUHAxkRCAQJBQUEARoQAxYGCQICCysChGONawwREwEDBhcNA?= =?us-ascii?q?nWaEYJsk3ZtNAeEH4FeBgyJCIEmkjCDV4QEgVeFQIV8hwKSUiKYZCKCNoYog?= =?us-ascii?q?QCBIQUJgW9rhSOBSnCOAwQBA4VQgX8jPA1iAR0MBzMaMEMNCoIcAQEBMQlGH?= =?us-ascii?q?A+JNoRCATQWgRIBAQiCQoEBPYEmgXQ7wwBCNQIBAQQGBSkCBwEKAQEDCYVFH?= =?us-ascii?q?QEBaYsdNIFLAQE?= IronPort-PHdr: A9a23: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 /k72UeE5gdxwWe/ZDZ95FIyxg== IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:u7scr6O1X2WPYMBcTzj155DYdb4zR+YMi2TDiHoedfUFSKOlfp 6V8MjztSWE9Ar5lktQ7uxoWZPwDE80kKQFmfhrAV7MZniVhILFFvAW0WKm+UyoJ8SczJ8W6U 4DSdkJNDSYNzET56uKmTVUC+xQv6j4zEnrv5aX854Hd3AgV0gU1XY5Nu/tKDw5eOApP+tMKL OsouJaujudY3gNB/7LRUUtbqzonfGOvpTgZhINGh4g7yezrR7A0s+BLzGomj0lf3dq27kNzU jp+jaJm5lLtcvLuiP05iv2xdB9nsLwo+EzZ/Cku4wwAHHNjQiyaJ56H4CDuDxdmpDI1H8a1P 3n5zInOd020XPeeWmpvQDgsjOQtwoG2jvH4xuijX7qsaXCJA7S6fAx9r5xQ1/840okltB116 VG2njcn4ZLDFfhkU3Glr31fiAvskK1pFAimekVg3lEFbETb7JctqwTlXklcqvoZBiKp7zPR9 MeQP301bJtSmnyVQGYgoEErebGP0gbL1O9QEhHgcqfzyJK9UoJq3cw9Ygjn2wN/I8GQZFC4O jedptlj7xPRNJ+V9MNONs8 X-Talos-CUID: =?us-ascii?q?9a23=3AkRaSEmgiIT+xWzB1DHPmbTXPMzJuWELe3nqLIBS?= =?us-ascii?q?CE3dgd7GqQlGfv7o/jJ87?= X-Talos-MUID: =?us-ascii?q?9a23=3AqkQbpwyr6HfLf7uyfd8sRjCGeNiaqIiTBGxSq5w?= =?us-ascii?q?Gh5OFdgp8GWeEgAyVWqZyfw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.21,240,1763420400"; d="scan'208,217";a="259401173" X-MGA-submission: =?us-ascii?q?MDGjf1NLaLuomX/k139A6eAA0EvIZHRq4/3eNf?= =?us-ascii?q?bXAjIZysRKkyZvYJ3dD1OZn1KPRUGhM7ec+eQRbUhjE+UoLPODETS7qn?= =?us-ascii?q?6M9loW4vuGcTGii1fgajxkj/0QJTEfKmWizjhSsjMfpvGm2d9xDo9lUq?= =?us-ascii?q?oPla780iBRU8cWEPgypn0G4Q=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jan 2026 10:19:14 +0100 Received: from TM.local (unknown [131.254.252.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 133A718143; Tue, 20 Jan 2026 10:19:14 +0100 (CET) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 20 Jan 2026 10:19:13 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jan 20 10:19:14 2026 +0100 (CET)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.484015, queueID=43CBB1A382 X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19430 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of January 13 to 20, 2026. Table of Contents =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Standard Library Team OCaml Software Foundation: January 2026 update Dune 3.21.0 Raven Dev Meetings Ufind 0.2.0 Curious OCaml: Functional Programming in OCaml Testo 0.3 The dk0 build system Opam 104: Sharing Your Code, by OCamlPro Other OCaml News Old CWN Standard Library Team =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Nicolas Ojeda Bar announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80 Dear Community, On behalf of the OCaml developer team, I am happy to announce the formation of a "Standard Library Team" which will take the lead in shepherding, reviewing and generally staying on top of standard library contributions in the service of the community. Its members (and GitHub handles) are: =E2=80=A2 Kate Deplaix @kit-ty-kate =E2=80=A2 Simon Cruanes @c-cube =E2=80=A2 Daniel B=C3=BCnzli @dbuenzli =E2=80=A2 L=C3=A9o Andr=C3=A8s @redianthus (previously @zapashcanon) =E2=80=A2 Nicolas Ojeda Bar @nojb (myself, acting as relay with the core = dev team) All of them are experienced users who have made great contributions to the standard library, and the community in general, over the years. Making them part of this team is a way of recognizing a role they already play in many ways. Besides crediting their valuable work, I hope this will encourage them to take even greater responsibility in the evolution of the standard library. We hope that by putting this team together, we will be able to improve the way standard library contributions are handled: making sure that contributions are acted on in a timely fashion, that decisions are taken (instead of sometimes letting contributions languish without a clear decision), and that a coherent set of criteria and direction is applied to decide what gets integrated into the standard library. Very much related to this, a document with design guidelines for standard library contributions is being proposed for integration in the compiler repository. This document, which is rather general in character, is meant to guide the work of this team. Everyone is welcome to peruse it. Do not hesitate to get back to me or to any other member of the team if you have any questions. Best wishes, Nicolas OCaml Software Foundation: January 2026 update =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: gasche announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 This is an update on recent works of the [OCaml Software Foundation], covering our 2025 actions =E2=80=93 the previous update was in [January 2025]. (In the present thread I will mention things that we agreed to fund in 2025; many of the actions that actually happened in 2025 were approved in 2024 and are listed in the previous thread.) The OCaml Software Foundation is a non-profit foundation that receives funding from [industrial sponsors] each year, and tries its best to spend it to support and strengthen the OCaml ecosystem and community. The funding volume we receive each year is around 200K=E2=82=AC. (For comparison: this is the yearly cost of one experienced full-time software engineer in many parts of the world.) We do not fund people full-time for long periods. Most actions receive from 3K=E2=82=AC to 20K= =E2=82=AC. The work to prepare and execute actions is mostly done by the (unpaid) [Executive Committee]. It is currently formed by Nicol=C3=A1s Ojeda B=C3= =A4r, Damien Doligez, Xavier Leroy, Kim Nguy=E1=BB=85n, Virgile Prevosto and my= self, with administrative personnel provided by [INRIA] and general assistance by Alan Schmitt. Our current sponsors (thanks!) are [ahrefs], [Jane Street], [Tezos], [Bloomberg], [Lexifi], [SimCorp], [MERCE] and [Tarides]. (If your company would like to join as a sponsor, please [get in touch]. Unfortunately, we still cannot efficiently process small donations, so we are not calling for individual donations.) Feel free to use this thread for questions/suggestions :-) [OCaml Software Foundation] [January 2025] [industrial sponsors] [Executive Committee] [INRIA] [ahrefs] [Jane Street] [Tezos] [Bloomberg] [Lexifi] [SimCorp] [MERCE] [Tarides] [get in touch] Education and outreach =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C We keep funding the OCaml meetups in Paris and Toulouse, France. The meetup in Chennai, India unfortunately seems to be inactive currently. A new meetup is starting in London ( ), we are setting up funding. (If you want to start an OCaml meeting in some other place, please do not hesitate to get in touch!) We sponsored the [JFLA 2026], a functional programming conference in France. We also sponsored ICFP 2025 in Singapore, and provided financial support for the colocated [OCaml Workshop 2025], for PC members and speakers who could not otherwise cover the travel and registration costs. We recently started funding Thomas Leonard for his time writing excellent technical blog posts about OCaml. The first [blog post] covered by this support is on his new OCaml library and tool for linux mode setting (very technical!). [JFLA 2026] [OCaml Workshop 2025] [blog post] Research =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C The OCaml Software Foundation is typically not involved in funding research, focusing on actions that have a more immediate impact on the language and its community. We do provide recurrent funding to the Cambium research team at INRIA, which corresponds to the funding they received from the OCaml consortium before the OCaml Foundation was created. This year we also agreed to fund a grant for a long internship on [Cameleer], a program-verification tool for OCaml on top of the Why3 verification environment. M=C3=A1rio Perreira, funding recipient and auth= or of Cameleer, also wrote [a book] on the tool with his student Pedro Gasparinho. Finally, Jane Street agreed to provide additional funding (roughly one person-year) for the professional expenses of people at INRIA who work on the OCaml compiler. [Cameleer] [a book] Ecosystem =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C =E2=97=8A Compiler We supported Tarides for some (a small portion) of the time spent by David Allsopp and Olivier Nicole on compiler maintenance. We funded Cl=C3=A9ment Blaudeau to work on the implementation of the OCaml module system, as a more practical follow-up after his PhD on the OCaml module system. Cl=C3=A9ment found many small issues and started fixing them, and is now working on a much more ambitious [plan for 'transparent ascriptions'] in OCaml, which could improve module-checking performance and is a requirement for modular implicits. We funded Pierre Boutillier to work on the OCaml bytecode debugger. Pierre Boutillier wanted to provide built-in support for running `ocamldebug' from Dune, an equivalent of `dune utop' for a toplevel. He completed the compiler side of the work, but he moved to a different full-time job before attacking the Dune side. We funded Thomas Refis to review the "Type error recovery" PR from Xavier van de Woestyne (Tarides), which upstreams a part of the Merlin changes to the typechecker, to make Merlin maintenance easier in the future. We funded Jan Midtgaard to keep working on his [multicoretests] fuzzing suite, which has found various Multicore-related correctness issues in the OCaml runtime and standard library. [plan for 'transparent ascriptions'] [multicoretests] =E2=97=8A Infrastructure As in previous years, we funded the work of Kate Deplaix to check that the OCaml ecosystem is compatible with upcoming compiler releases. We are trying our best to support the work of opam-repository maintainers, through individual funding grants for the active maintainers. This year we supported Tarides for some of the time of Shon Feder on the opam-repository, and we fund Jan Midtgaard for opam-repository maintenance, with in particular a focus on Windows and FreeBSD support. Probably the biggest "infrastructure" change which involved the Foundation this year is the [OCaml Security Team], which was created by the Foundation as a result of a proposal by Tarides, with in particular generous financial support of Bloomberg. The Security Team just published [their own activity report]. [OCaml Security Team] [their own activity report] =E2=97=8A Tools We funded the maintenance of `ppxlib' by Nathan Rebours. We funded development on the `opam' client by Raja Boujbel (OCamlPro). We funded contributions of Ali Caglayan to `dune'. We funded Jules Aiguillon (Tarides) to update `ocamlformat' for OCaml 5.5. =E2=97=8A Libraries We supported the work of Petter Urkedal on the [Caqti] library, the main database connection library in the OCaml community. We supported the maintenance of the Ocsigen web toolkit. We funded the maintenance of [ctypes]. We funded Thomas Leonard to work on a Wayland window manager in OCaml. We supported the contributions of Daniel B=C3=BCnzli to the OCaml ecosystem. This year, Daniel used this support to fund the development of =E2=80=A2 [support] for Unicode 17.0 in his Unicode libraries =E2=80=A2 [bytesrw], a library of composable byte stream readers and writ= es, extended in version 0.3 for support with various TLS-related crypto algorithms. =E2=80=A2 the 0.4 release of [Cmarkit], a CommonMark parser and renderer. =E2=80=A2 [release 2.0.0] of the Cmdliner library for command-line argume= nt parsing, bringing support for manpage installation and auto-completion. [Caqti] [ctypes] [support] [bytesrw] [Cmarkit] [release 2.0.0] Hannes Mehnert asked and gasche replied =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Is it true that Tarides sponsors OCSF and at the same time Tarides receives money from OCSF? It's a mistake on my part, Tarides was not among our sponsors for the reason you mentioned. (We have strict rules not to do this as paying someone who sponsors us could be interpreted as a tax-evasion scheme. This is the same reason why OCamlPro are not sponsors since a few years ago.) Their people are doing useful work that we want to be able to support, and we decided that it was more important than receiving their funding. Dune 3.21.0 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90 Archive: Shon announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 The Dune team is pleased to announce [the release of dune 3.21.0]. This is a large release, including dozens of fixes, improvements, and additions, thanks to many contributors. See [the full changelog] for all changes and contributors. If you encounter a problem with this release, please report it in [our issues tracker]. We also note that @maiste has stepped away from the role of release manager: on behalf of the Dune team, I extend @maiste our thanks for his time doing this important work! :pray: [the release of dune 3.21.0] [the full changelog] [our issues tracker] Raven Dev Meetings =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90 Archive: Continuing this thread, Thibaut Mattio announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 We're moving the Raven dev meetings to a monthly basis. The next dev meeting will be *Monday, February 2, 2026, at 10:00 AM CET* with the same link: We've seen limited interest in the dev meetings so far, so I'm considering discontinuing them after the current Outreachy internships. Let me know if you're in favor of keeping them, that will help gauge the community interest beyond the attendance of the first two meetings. Ufind 0.2.0 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90 Archive: sanette announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Hello I'm happy to announce that the [Ufind] library is now available on `opam'. `Ufind' is a Utf8 search engine with parameterized case and accent sensibility. _Example:_ I use it daily at work for the following problem: I have lists of names (students, professors) where I Iike to keep all the correct accents (like "Ljubi=C4=8Di=C4=87", or "Gi=C3=A1p =C4=90=C3=B4ng = Ngh=E1=BB=8B", or "H=C3=A9l=C3=A8ne", etc.) However, I often have to match these names against other lists from the University administration which, usually, have no or very few accents. I wrote `Ufind' for this. Now I can search for "dong" and it will return "Gi=C3=A1p =C4=90=C3=B4ng = Ngh=E1=BB=8B" (with some ranking score) See the [README] file or the [documentation] for more details. Internally, `ufind' uses [ubase] for dealing with accents/diacritics. [Ufind] [README] [documentation] [ubase] Curious OCaml: Functional Programming in OCaml =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Lukasz Stafiniak announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80 Hi! I=E2=80=99m happy to announce a translation of my Functional Programming = (in OCaml) lectures into a textbook format, modernized to cover algebraic effects, is complete! Claude Opus 4.5 did the bulk of the work; GPT-5.2 wrote chapter 10 and tackled the toughest challenges. HTML version: PDF version: Website and Markdown original as README: Enjoy! Testo 0.3 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90 Archive: Martin Jambon announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Testo 0.3.4 is out! [Testo] is an industry-grade test framework for OCaml. It is suitable for unit-testing OCaml code and for end-to-end testing command-line executables. Testo is an [open-source project] maintained by the OCaml community, with support from Semgrep. Highlights of this release include: =E2=80=A2 better integration with Dune (testo-template, `--chdir') =E2=80=A2 improved Windows support (internal CI checks, CRLF/LF diff highlighting) =E2=80=A2 quick start instructions and revised tutorial Enjoy! [Testo] [open-source project] The dk0 build system =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90 Archive: jbeckford announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80 It is my pleasure to announce the first official release of `dk0'. It is a build system with the following features: =E2=80=A2 Written in OCaml with minimal dependencies. Its C code is porta= ble (no depext). The main OCaml dependencies are fmlib-parse and spawn. =E2=80=A2 Language agnostic like Bazel/Buck2. =E2=80=A2 Repeatable builds (my made-up term for a weak form of reproduci= ble builds). =E2=80=A2 Lua scripting for build rules. The Lua implementation is pure O= Caml and extends [Lua-ML] (thanks @lindig et al). In `dk0' Lua plays the same role as Starlark in Bazel and Buck2. =E2=80=A2 Dynamic dependencies. This is somewhat esoteric for build syste= ms but important for some languages (OCaml, C++20). =E2=80=A2 Single file scripts. Think `uv' but for arbitrary languages. =E2=80=A2 Multi-platform federated binary caching with indexed downloads. Think `nix' binary package caching, but each package can do its own caching in GitHub Actions / etc. =E2=80=A2 Attestations (security) But repeatable builds means repackaging common system packages (git, tar, etc.) and providing build rules for compilers (msvc, clang, ocamlopt, etc.). That is a difficult, time-consuming assignment, especially when packaging for multiple operating systems (Windows, macOS and Linux). Status: =E2=80=A2 dk0 is ready enough for making useful packages. However, a few backwards incompatible changes still need to be made and that might require tweaks to packages. =E2=80=A2 Today I have a couple packages; realistically there needs to be 20-30 packages to be useful. OCaml in particular will need a lot of packages that **do not exist today**. =E2=80=A2 When I complete a new package I'll post an `[ANN]' similar to n= ew opam packages. Docs: =E2=80=A2 spec: =E2=80=A2 site: On the "site" link above you'll see an example for a single-file script with C# / .NET =E2=80=A6 that example exists because I needed the script but more importantly because .NET has minimal transitive dependencies. If development goes well I'll replace that with a more useful example that builds a Windows OCaml executable on macOS/Linux (using build rules that download/run wine, msvc, etc.). If you are interested in contributing packages, I can setup video or audio time to get you or a group started quickly. Lastly, I happen to like Dune (especially its watch mode) and the simplicity of Alice. Obviously I wouldn't have made `dk0' if I didn't need to go beyond what exists today, but `dk0' is open-source (libraries are Apache-2.0, executable is OSL-3.0) =E2=80=A6 I hope librar= ies can be shared across the different build systems! And because `dk0' has dynamic dependencies, it is straightforward for dk0 to wrap other build systems (that is what I did with the .NET build system). Thanks, Jonah [Lua-ML] Opam 104: Sharing Your Code, by OCamlPro =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: OCamlPro announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80 *Greetings Cameleers,* We=E2=80=99ve just released a new blog post: *[Opam 104: Sharing Your Cod= e]* This article is the final entry in our **opam deep-dives** series, and it focuses on a key step in every OCaml project=E2=80=99s life: making it= easy for others to work with your code =E2=80=94 and sharing it with the wider community. We cover two practical topics: =E2=80=A2 Quickly setting up a complete development environment for an existing project =E2=80=A2 Releasing your package to the official `opam-repository' Along the way, we look at developer-focused `opam install' workflows, local switches, dependency locking with `opam lock', and reproducible setups for teams and CI. We then walk through publishing a package using `opam-publish', with a clear explanation of how releases actually make their way into opam. The post stays hands-on and workflow-oriented, building on the previous Opam 101=E2=80=93103 articles, and wraps up the opam10x series w= ith a full start-to-release pipeline. :memo: Read it, and the rest of the `opam deep-dives' on the [OCamlPro Blog] ! Perfect for developers onboarding to an existing project, or for anyone preparing to publish their first OCaml package, and of course, the curious beginner Cameleer ! As always, feedback welcome! =E2=80=94 The OCamlPro Team [Opam 104: Sharing Your Code] [OCamlPro Blog] Other OCaml News =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 >>From the ocaml.org blog =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Here are links from many OCaml blogs aggregated at [the ocaml.org blog]. =E2=80=A2 [Base Image Builder] =E2=80=A2 [Updating ARM64 Workers to Ubuntu Noble] =E2=80=A2 [Moving to opam 2.5] =E2=80=A2 [Base Fibonacci] =E2=80=A2 [More OCaml on Pi Pico 2 W] [the ocaml.org blog] [Base Image Builder] [Updating ARM64 Workers to Ubuntu Noble] [Moving to opam 2.5] [Base Fibonacci] [More OCaml on Pi Pico 2 W] Old CWN =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 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]. [Alan Schmitt] [send me a message] [the archive] [RSS feed of the archives] [caml-list] [Alan Schmitt] --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of January 13 to 20, 202= 6.

Standard Library Team

Nicolas Ojeda Bar announced

Dear Community,

On behalf of the OCaml developer team, I am happy to announce the formation= of a "Standard Library Team" which will take the lead in shepherding, revi= ewing and generally staying on top of standard library contributions in the= service of the community. Its members (and GitHub handles) are:

  • Kate Deplaix @kit-ty-kate
  • Simon Cruanes @c-cube
  • Daniel B=C3=BCnzli @dbuenzli
  • L=C3=A9o Andr=C3=A8s @redianthus (previously @zapashcanon)
  • Nicolas Ojeda Bar @nojb (myself, acting as relay with the core dev team= )

All of them are experienced users who have made great contributions to the = standard library, and the community in general, over the years. Making them= part of this team is a way of recognizing a role they already play in many= ways. Besides crediting their valuable work, I hope this will encourage th= em to take even greater responsibility in the evolution of the standard lib= rary.

We hope that by putting this team together, we will be able to improve the = way standard library contributions are handled: making sure that contributi= ons are acted on in a timely fashion, that decisions are taken (instead of = sometimes letting contributions languish without a clear decision), and tha= t a coherent set of criteria and direction is applied to decide what gets i= ntegrated into the standard library.

Very much related to this, a document with design guidelines for standard l= ibrary contributions is being proposed for integration in the compiler repo= sitory. This document, which is rather general in character, is meant to gu= ide the work of this team. Everyone is welcome to peruse it.

https://github.com/oc= aml/ocaml/pull/14459

Do not hesitate to get back to me or to any other member of the team if you= have any questions.

Best wishes, Nicolas

OCaml Software Foundation: January 2026 update

gasche announced

This is an update on recent works of the O= Caml Software Foundation, covering our 2025 actions – the previou= s update was in January 2025. (In the present thread= I will mention things that we agreed to fund in 2025; many of the actions = that actually happened in 2025 were approved in 2024 and are listed in the = previous thread.)

The OCaml Software Foundation is a non-profit foundation that receives fund= ing from industrial sponsors = each year, and tries its best to spend it to support and strengthen the OCa= ml ecosystem and community.

The funding volume we receive each year is around 200K=E2=82=AC. (For compa= rison: this is the yearly cost of one experienced full-time software engine= er in many parts of the world.) We do not fund people full-time for long pe= riods. Most actions receive from 3K=E2=82=AC to 20K=E2=82=AC. The work to p= repare and execute actions is mostly done by the (unpaid) Executive Committee. It is currently formed by= Nicol=C3=A1s Ojeda B=C3=A4r, Damien Doligez, Xavier Leroy, Kim Nguy=E1=BB= =85n, Virgile Prevosto and myself, with administrative personnel provided b= y INRIA and general assistance by Alan = Schmitt.

Our current sponsors (thanks!) are ahrefs, Jane Street, Tezos, Bloomberg, <= a href=3D"https://lexifi.com/">Lexifi, SimCorp, MERCE = and Tarides. (If your company would li= ke to join as a sponsor, please get in touch. Unfortunately, we still cannot efficiently proce= ss small donations, so we are not calling for individual donations.)

Feel free to use this thread for questions/suggestions :-)

Education and outreach

We keep funding the OCaml meetups in Paris and Toulouse, France. The meetup= in Chennai, India unfortunately seems to be inactive currently. A new meet= up is starting in London ( https://discuss.ocaml.org/t/ann-caml-in-the-capital/1= 7428 ), we are setting up funding. (If you want to start an OCaml meeti= ng in some other place, please do not hesitate to get in touch!)

We sponsored the JFLA 2026<= /a>, a functional programming conference in France. We also sponsored ICFP 2025 in Singapore, and provided financial support fo= r the colocated OCaml Workshop 2025, for PC members and speakers who could not other= wise cover the travel and registration costs.

We recently started funding Thomas Leonard for his time writing excellent t= echnical blog posts about OCaml. The first blog post covered by this support i= s on his new OCaml library and tool for linux mode setting (very technical!= ).

Research

The OCaml Software Foundation is typically not involved in funding research= , focusing on actions that have a more immediate impact on the language and= its community. We do provide recurrent funding to the Cambium research tea= m at INRIA, which corresponds to the funding they received from the OCaml c= onsortium before the OCaml Foundation was created.

This year we also agreed to fund a grant for a long internship on Cameleer, a program= -verification tool for OCaml on top of the Why3 verification environment. M= =C3=A1rio Perreira, funding recipient and author of Cameleer, also wrote a book on the to= ol with his student Pedro Gasparinho.

Finally, Jane Street agreed to provide additional funding (roughly one pers= on-year) for the professional expenses of people at INRIA who work on the O= Caml compiler.

Ecosystem

  • Compiler

    We supported Tarides for some (a small portion) of the time spent by David = Allsopp and Olivier Nicole on compiler maintenance.

    We funded Cl=C3=A9ment Blaudeau to work on the implementation of the OCaml = module system, as a more practical follow-up after his PhD on the OCaml mod= ule system. Cl=C3=A9ment found many small issues and started fixing them, a= nd is now working on a much more ambitious plan for 'transparent ascriptions' in OCaml, which co= uld improve module-checking performance and is a requirement for modular im= plicits.

    We funded Pierre Boutillier to work on the OCaml bytecode debugger. Pierre = Boutillier wanted to provide built-in support for running ocamldebug<= /code> from Dune, an equivalent of dune utop for a toplevel. H= e completed the compiler side of the work, but he moved to a different full= -time job before attacking the Dune side.

    We funded Thomas Refis to review the "Type error recovery" PR from Xavier v= an de Woestyne (Tarides), which upstreams a part of the Merlin changes to t= he typechecker, to make Merlin maintenance easier in the future.

    We funded Jan Midtgaard to keep working on his multicoretests fuzzing suite, which = has found various Multicore-related correctness issues in the OCaml runtime= and standard library.

  • Infrastructure

    As in previous years, we funded the work of Kate Deplaix to check that the = OCaml ecosystem is compatible with upcoming compiler releases.

    We are trying our best to support the work of opam-repository maintainers, = through individual funding grants for the active maintainers. This year we = supported Tarides for some of the time of Shon Feder on the opam-repository= , and we fund Jan Midtgaard for opam-repository maintenance, with in partic= ular a focus on Windows and FreeBSD support.

    Probably the biggest "infrastructure" change which involved the Foundation = this year is the OCaml Security Team, which was created by the Foundation as= a result of a proposal by Tarides, with in particular generous financial s= upport of Bloomberg. The Security Team just published their = own activity report.

  • Tools

    We funded the maintenance of ppxlib by Nathan Rebours.

    We funded development on the opam client by Raja Boujbel (OCam= lPro).

    We funded contributions of Ali Caglayan to dune.

    We funded Jules Aiguillon (Tarides) to update ocamlformat for = OCaml 5.5.

  • Libraries

    We supported the work of Petter Urkedal on the Caqti library, the main database connection l= ibrary in the OCaml community.

    We supported the maintenance of the Ocsigen web toolkit.

    We funded the maintenance of ctypes.

    We funded Thomas Leonard to work on a Wayland window manager in OCaml.

    We supported the contributions of Daniel B=C3=BCnzli to the OCaml ecosystem= . This year, Daniel used this support to fund the development of

    • support for Unicode 17.0 in his Unicode l= ibraries
    • bytesrw, a library of composable byte stream readers= and writes, extended in version 0.3 for support with various TLS-related c= rypto algorithms.
    • the 0.4 release of Cmarkit, a CommonM= ark parser and renderer.
    • releas= e 2.0.0 of the Cmdliner library for command-line argument parsing, brin= ging support for manpage installation and auto-completion.

Hannes Mehnert asked and gasche replied

Is it true that Tarides sponsors OCSF and at the same time Tarides receives= money from OCSF?

It's a mistake on my part, Tarides was not among our sponsors for the reaso= n you mentioned. (We have strict rules not to do this as paying someone who= sponsors us could be interpreted as a tax-evasion scheme. This is the same= reason why OCamlPro are not sponsors since a few years ago.) Their people = are doing useful work that we want to be able to support, and we decided th= at it was more important than receiving their funding.

Dune 3.21.0

Shon announced

The Dune team is pleased to announce the release of dune 3.21.0.

This is a large release, including dozens of fixes, improvements, and addit= ions, thanks to many contributors. See the full changelog for all changes and contri= butors.

If you encounter a problem with this release, please report it in our issues tracker.

We also note that @maiste has stepped away from the role of release manager= : on behalf of the Dune team, I extend @maiste our thanks for his time doin= g this important work! :pray:

Raven Dev Meetings

Continuing this thread, Thibaut Mattio announced

We're moving the Raven dev meetings to a monthly basis. The next dev meetin= g will be Monday, February 2, 2026, at 10:00 AM CET with the same li= nk: https://meet.google.co= m/giw-bsdy-sjf

We've seen limited interest in the dev meetings so far, so I'm considering = discontinuing them after the current Outreachy internships. Let me know if = you're in favor of keeping them, that will help gauge the community interes= t beyond the attendance of the first two meetings.

Ufind 0.2.0

sanette announced

Hello

I'm happy to announce that the Ufind library is now available on opam.

Ufind is a Utf8 search engine with parameterized case and acce= nt sensibility.

Example: I use it daily at work for the fo= llowing problem: I have lists of names (students, professors) where I Iike = to keep all the correct accents (like "Ljubi=C4=8Di=C4=87", or "Gi=C3=A1p = =C4=90=C3=B4ng Ngh=E1=BB=8B", or "H=C3=A9l=C3=A8ne", etc.) However, I often= have to match these names against other lists from the University administ= ration which, usually, have no or very few accents. I wrote Ufind for this.

Now I can search for "dong" and it will return "Gi=C3=A1p =C4=90=C3=B4ng Ng= h=E1=BB=8B" (with some ranking score)

See the README= file or the documentation= for more details.

Internally, ufind uses ubase for dealing with accents/diacritics.

Curious OCaml: Functional Programming in OCaml

Lukasz Stafiniak announced

Hi!

I=E2=80=99m happy to announce a translation of my Functional Programming (i= n OCaml) lectures into a textbook format, modernized to cover algebraic eff= ects, is complete!

Claude Opus 4.5 did the bulk of the work; GPT-5.2 wrote chapter 10 and tack= led the toughest challenges.

HTML version: https://lukstafi.github.io/curious-ocaml/new_book.html

PDF version: https://github.com/lukstafi/curious-ocaml/blob/main/pdf= s/new_book.pdf

Website and Markdown original as README: https://github.com/lukstafi/curious-ocaml/tre= e/main

Enjoy!

Testo 0.3

Martin Jambon announced

Testo 0.3.4 is out!

Testo is an industry-grade test fram= ework for OCaml. It is suitable for unit-testing OCaml code and for end-to-= end testing command-line executables. Testo is an open-source project maintained by the OCaml communi= ty, with support from Semgrep.

Highlights of this release include:

  • better integration with Dune (testo-template, --chdir)
  • improved Windows support (internal CI checks, CRLF/LF diff highlighting= )
  • quick start instructions and revised tutorial

Enjoy!

The dk0 build system

jbeckford announced

It is my pleasure to announce the first official release of dk0. It is a build system with the following features:

  • Written in OCaml with minimal dependencies. Its C code is portable (no = depext). The main OCaml dependencies are fmlib-parse and spawn.
  • Language agnostic like Bazel/Buck2.
  • Repeatable builds (my made-up term for a weak form of reproducible buil= ds).
  • Lua scripting for build rules. The Lua implementation is pure OCaml and= extends Lua-ML (thanks @l= indig et al). In dk0 Lua plays the same role as Starlark in Ba= zel and Buck2.
  • Dynamic dependencies. This is somewhat esoteric for build systems but i= mportant for some languages (OCaml, C++20).
  • Single file scripts. Think uv but for arbitrary languages.=
  • Multi-platform federated binary caching with indexed downloads. Think <= code>nix binary package caching, but each package can do its own cac= hing in GitHub Actions / etc.
  • Attestations (security)

But repeatable builds means repackaging common system packages (git, tar, e= tc.) and providing build rules for compilers (msvc, clang, ocamlopt, etc.).= That is a difficult, time-consuming assignment, especially when packaging = for multiple operating systems (Windows, macOS and Linux).

Status:

  • dk0 is ready enough for making useful packages. However, a few backward= s incompatible changes still need to be made and that might require tweaks = to packages.
  • Today I have a couple packages; realistically there needs to be 20-30 p= ackages to be useful. OCaml in particular will need a lot of packages that = do not exist today.
  • When I complete a new package I'll post an [ANN] similar t= o new opam packages.

Docs:

On the "site" link above you'll see an example for a single-file script wit= h C# / .NET … that example exists because I needed the script but mo= re importantly because .NET has minimal transitive dependencies. If develop= ment goes well I'll replace that with a more useful example that builds a W= indows OCaml executable on macOS/Linux (using build rules that download/run= wine, msvc, etc.).

If you are interested in contributing packages, I can setup video or audio = time to get you or a group started quickly.

Lastly, I happen to like Dune (especially its watch mode) and the simplicit= y of Alice. Obviously I wouldn't have made dk0 if I didn't nee= d to go beyond what exists today, but dk0 is open-source (libr= aries are Apache-2.0, executable is OSL-3.0) … I hope libraries can = be shared across the different build systems! And because dk0 = has dynamic dependencies, it is straightforward for dk0 to wrap other build= systems (that is what I did with the .NET build system).

Thanks, Jonah

Opam 104: Sharing Your Code, by OCamlPro

OCamlPro announced

Greetings Cameleers,

We=E2=80=99ve just released a new blog post: Opam 104: Sharing Your Co= de

This article is the final entry in our opam deep-dives series= , and it focuses on a key step in every OCaml project=E2=80=99s life: makin= g it easy for others to work with your code =E2=80=94 and sharing it with t= he wider community.

We cover two practical topics:

  • Quickly setting up a complete development environment for an existing p= roject
  • Releasing your package to the official opam-repository

Along the way, we look at developer-focused opam install workf= lows, local switches, dependency locking with opam lock, and r= eproducible setups for teams and CI. We then walk through publishing a pack= age using opam-publish, with a clear explanation of how releas= es actually make their way into opam.

The post stays hands-on and workflow-oriented, building on the previous Opa= m 101=E2=80=93103 articles, and wraps up the opam10x series with a full sta= rt-to-release pipeline.

:memo: Read it, and the rest of the opam deep-dives on the OCamlPro Blog !

Perfect for developers onboarding to an existing project, or for anyone pre= paring to publish their first OCaml package, and of course, the curious beg= inner Cameleer !

As always, feedback welcome!

=E2=80=94 The OCamlPro Team

Other OCaml News

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 loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--=-=-=--