From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org 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=YIgb8gfL; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=0ez70/tv; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id BFA94B80123 for ; Tue, 11 Jun 2024 16:05:10 +0100 (BST) 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=Y6oI5/C21YGBzUCML3v/gdIV1b18RfRcW+qJgHjFfmQ=; b=YIgb8gfLvRQtWKWjMDfSEShyf+QL3Wcz1FOTlht2PkwcK+2vrPhpXnsW r1uxeSRSCERMTikdV7VLHNxJEr3S/BO0ZYJVfB+yd9gK5v6DabqnM2FWj I4Mjeaqz1WOCtpdbbVuhK56i8es5QJPHvy9VBy97Tx+oD6gTfKuIHLEu8 M=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; 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:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (body hash did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.08,230,1712613600"; d="scan'208,217";a="170116268" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 11 Jun 2024 17:05:08 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 63929E0CD0; Tue, 11 Jun 2024 17:05:08 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id F2881E0035 for ; Tue, 11 Jun 2024 17:05:05 +0200 (CEST) IronPort-SDR: 66686786_OqxW0kD+6qEKwECcnIPYSC6+y2ZJCaEJHHUO9jMIzvHj61a wjOoX/aMSwg4yTx80Ki2kcZoWrR6gajxz9wAh1g== X-IPAS-Result: =?us-ascii?q?A0HRAQDlZmhmkCIeaIFQCoJYgUFbKBkBYlozBwhIAwGEU?= =?us-ascii?q?oNPhS2IboEWkDGIQoIwgVYUgREDGBYjBBABAwENLgEOBAECBAEBAwEDgguCd?= =?us-ascii?q?AKIaAIfBgEEMAkOAQIEAQEBAQMCAwEBAQEBAQgBAQUBAQECAQECBAYBAhABA?= =?us-ascii?q?QEBAQEgHhAOJ4U7CDENgkouI2tjAgYDNwEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQERAgwBJVsaAgEIBAYTAQErAQEFBhgjAwkHBAEGAwIRATUDARMBEhQGA?= =?us-ascii?q?YJlAYJkAwQBDAaSd5s7en8zgQGCDAEBBnsNPgMCCQICAwEOCSUB2gSBSRoJg?= =?us-ascii?q?UiIDgkaASRIaQKEJQmENycPgVVEgRQBgihKB2+BQQFcIQsXAgEBGH8JCQEHC?= =?us-ascii?q?gIBBgIGDA8kCQmDHIJpgWiDIYEAJoFeAYVJQBcVD1qCASJBMoEbAiwBWgESg?= =?us-ascii?q?QgvFw2BfmkEBQYPJ4EBBWgQEBQCTRqBAVsPWoE1FEICDBWBN4E/aRYmCzEPA?= =?us-ascii?q?yoxEIIuhzmBSyIDJjMhEwFVExcLPgkWAhYDGxQEMA8JCyYqBjkCEgwGBgZZN?= =?us-ascii?q?AkEIwMIBANCAyBxEQMEGgQLB3eBPIFpBBNEA4E3hxuCVoM7ghmEGkuEboFrD?= =?us-ascii?q?GGID4FzgT6BZk+DBlGCFB1AAwttPTUUG6hwBDYCgnMBJQ4LLQIGDRgXHAEHA?= =?us-ascii?q?gQDCgcOBQEHDAgHBQICFwEIAg0XCgQECAEFHwcFBwMZEQgECQoEAw0FBw8BE?= =?us-ascii?q?woBCwIJAgcXDwOSLwsJBAwYKgIBco4qjT2UERxsNAeEFoFcBgyIfYEkiFiNF?= =?us-ascii?q?4QFgVaFN4Q2gT0ahmGDToxagS1kIphDIII0hktTClNICYFtaZUWKQMCAhwZh?= =?us-ascii?q?RmBZTo8MD8BARkBAgwHMxowQw0QAYJJCRYwHA9Yi1aDBRwBAgWCRIE+gTBxe?= =?us-ascii?q?jvEakE1AgEBBwIuAgcBCgEBAwmFRR0BAWmCIQIDIwcFgUgBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 9VsD7UD6Jy5FX1s IronPort-HdrOrdr: A9a23:Vo4dhaPXBWa0xMBcTvyjsMiBIKoaSvp037BL7TETdfUxSKalfq +V8sjzuSWYtN9zYhEdcLK7WZVoKEm0nfVICOIqUotKMjOLhEKYaKlcqaHizzfjFyCWzJ8+6Y 5QN45kBpnVBVh+5PyKhDVQ/uxQpeW6zA== X-Talos-CUID: 9a23:OAJTR2Ga6VdTrBQYqmJJ8hcMEJwlbkH441L6OG+ZFUdybueKHAo= X-Talos-MUID: 9a23:8/w2zgiEULe4esKUzAvstMMpbOBZuZmLUGU2l9Y96pLeGS5OFheHk2Hi X-IronPort-Anti-Spam-Filtered: true X-URL-LookUp-ScanningError: 1 X-IronPort-AV: E=Sophos;i="6.08,230,1712613600"; d="scan'208,217";a="170116161" X-MGA-submission: =?us-ascii?q?MDHgq0LwehOabYMKCiZaBLVWuYpln4QaIsBF0V?= =?us-ascii?q?H7n7HTtn8nWI4uFY6ed82oalQhJ6FKvqdhkzv57uDCncy9/UU4Ucp1/V?= =?us-ascii?q?I25ePFBTa6iIsZ2TN2+OOSKTzUiguxs7X2Pqju3qEievg74tR/j3XL15?= =?us-ascii?q?1j+2lskRb8GsJbyW0oE5gH9g=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; 11 Jun 2024 17:04:38 +0200 Received: from TM.local (host-188.117.138.90.static.3s.pl [188.117.138.90]) (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 3E56D564700; Tue, 11 Jun 2024 17:04:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1718118277; bh=bwa6BfOjYYn5y/++g0+s/bhIME11wIo5ZHrek+tbwu8=; h=From:To:Subject:Date:Message-ID; b=0ez70/tvGxuv6tpZK5HSw3bYq6AiWEBoZfQakiMxduV+gFSLguIRwrIPyzsati1Zn vhHgM2MQQ6/Q8SMLSNP80jlZOEjXy6nJN90xSYyd+6uutMHe7M7M4lHtiJJ5RQScMV HIp7d6Zz2F4DRDEvt9vYH7VXqsfUizfqgjum5g3I= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 11 Jun 2024 17:04:36 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jun 11 17:04:38 2024 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.390599, queueID=E118D564701 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: 19144 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 June 04 to 11, 2024. 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 Providing Opam system dependancies with Nix ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0 Effective ML Through Merlin's Destruct Command OCaml Windows Working Group Flambda2 Ep. 2: Loopifying Tail-Recursive Functions, by OCamlPro OCaml Platform Newsletter: March-May 2024 OCaml.org Newsletter: May 2024 OCaml Windows Working Group Registration for Fun OCaml 2024 Opens Shortly opam 2.2.0~beta3 Other OCaml News Old CWN Providing Opam system dependancies with Nix =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: Ryan 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 I've opened a [PR] with input from @dra27 and @avsm adding support for Nix depexts (system dependencies) to Opam. Opam supports system dependencies for other platforms by invoking the system package manager, e.g. `apt-get install ...'. However Nix is a bit different, as in general installing a package to your system doesn't create the development environment required to use it; it will only add executables to your `$PATH'. To find, for example, objects files, outside of a Nix derivation you can use `nix-shell' and it's descendant `nix develop'. E.g.: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 $ nix-shell -p gmp =E2=94=82 $ echo $NIX_LDFLAGS =E2=94=82 -rpath /nix/store/20g5iw2r512gnfrdr4imp2y940v3vlif-shell/lib -= L/nix/store/rx6nkd40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib -L/nix/= store/rx6nkd40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 We support Nix depexts with Opam in a similar way. A Nix derivation is build with the desired packages as inputs, and the resulting environment is output as a file in the Opam switch in a format that Opam can parse. This `nix.env' file is a symlink into the Nix store, so acts as a garbage collection root =E2=80=93 packages won't be removed = from the store while this file exists. Opam outputs these environment variables on an invocation of `opam env'. This fixes issues such as . While the primary use case is on NixOS, this depext mechanism could be used on other platforms to provide a consistent experience including other Linux distributions, BSDs, (and possibly [even windows] in the future). Nixpkgs typically only packages one version of a package at a time, but I'm working on versioned depexts with previous version of Nixpkgs as outlined [here]. I'm keen to get people's opinions and perspective on this! [PR] [even windows] [here] ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.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=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: Nathan Rebours 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 I am happy to announce the release of ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0, the first release of those packages in years! The main feature here is the port of [ppx_deriving]'s standard derivers (`[@@deriving show, make, ord, eq, ...]') and [ppx_deriving_yojson] to [ppxlib]'s `Deriving' api. There are no changes to how you'd use those derivers but many benefits: =E2=80=A2 Better performances and better integration with other ppx-es as= the code is now generated as part of ppxlib's driver main AST rewriting phase rather than in a separate, dedicated phase. =E2=80=A2 They can now be used with `[@@deriving_inline]' =E2=80=A2 None of them will break the location invariant required by merl= in anymore, fixing a long lasting bug and providing a much better user experience. You can find the full release notes for ppx_deriving [here] and for ppx_deriving_yojson [here]. I'd like to thank @sim642 for all their work on the ppxlib ports and their patience, and all our other contributors. I'd also like to thank the [OCaml Software Foundation] who has been funding my work on those releases. [ppx_deriving] [ppx_deriving_yojson] [ppxlib] [here] [here] [OCaml Software Foundation] Effective ML Through Merlin's Destruct Command =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: Xavier Van de Woestyne 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 I'm very pleased to present you [an article] with a collection of small illustrations and examples of how to use the `destruct' command to generate patterns in the presence of pattern matches. The command has been present in [Merlin] for several years (and accessible via [OCaml-LSP]) but, as the various changelogs relating to Merlin mention, we have spent some time polishing it and adapting it to the evolutions of OCaml, making it more stable (essentially in the presence of punning) and taking into account the changes made to the representation of functions (and their parameters). The aim of the article is to show how the `destruct' command works in a number of very concrete cases, and ends with an example (a little artificial for the purposes of the article and for teaching purposes) which shows how to use `destruct' interactively. =E2=80=A2 [ Effective ML Through Merlin's Destruct Command]: original art= icle, written in English, on the Tarides blog. =E2=80=A2 [ Effective ML, au travers de la commande 'destruct']: A French-language interpretation of the article, published on my blog. Can't wait to hear your feedback! Happy reading! [an article] [Merlin] [OCaml-LSP] [ Effective ML Through Merlin's Destruct Command] [ Effective ML, au travers de la commande 'destruct'] OCaml Windows Working Group =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: Sudha Parimala 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 I=E2=80=99m happy to share that we=E2=80=99re starting a working group fo= r OCaml Windows. This is part of a larger effort, [First-class Windows], to enhance the OCaml experience on Windows. Through this effort, we aim to coordinate our collective knowledge to identify high-priority items for First-class Windows. We've started a mailing list to exchange ideas and would greatly appreciate inputs. You can sign up at =E2=80=93 While the mailing list is intended to be the primary means of communication, we plan to do a sync meeting once a month, to start with. We plan to do a kick-off meeting early next week. Please fill in this poll if you're interested to join: . Happy camling :camel: [First-class Windows] Flambda2 Ep. 2: Loopifying Tail-Recursive Functions, 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=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 would like to share with you our latest *Flambda2 Snippet*: [Flambda2 Ep. 2: Loopifying Tail-Recursive Functions]! Indeed, today's topic is what is called `Loopify', one of the many optimisation algorithms found in the `Flambda2' optimising compiler project. We believe `Loopify' is a nicely representative piece of software for our readers to grasp at the general design and philosophy for all optimisations available in `Flambda2'! Hopefully, you will do too! Be sure to check out the [`Flambda2 Ep.0'] article to get all the context for the project itself and the series of blog posts! In any case, we await your feedback below, and hope that you will enjoy reading this post, and all ensuing ones! Kind regards, The OCamlPro Team [Flambda2 Ep. 2: Loopifying Tail-Recursive Functions] [`Flambda2 Ep.0'] OCaml Platform Newsletter: March-May 2024 =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: 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 Welcome to the eleventh edition of the OCaml Platform newsletter! In this March-May 2024 edition, we are excited to bring you the latest on the OCaml Platform, continuing our tradition of highlighting recent developments as seen in [previous editions]. To understand the direction we're headed, especially regarding development workflows and user experience improvements, check out our [roadmap]. *Highlights:* =E2=80=A2 Explorations on Dune package management have reached a Minimal-Viable-Product (MVP) stage: a version of Dune that can build non-trivial projects like [OCaml.org] and [Bonsai]. With a working MVP, the team is shifting their focus to putting Dune package management in the hands of the community. To that end, we have started the Dune Developer Preview Program, where we will test Dune package management with users and refine the user experience in preparation for a final release. =E2=80=A2 The opam team released a second beta of [opam 2.2], and with it, opened the [final PR] to add support for Windows OCaml to the opam-repository. Once the PR is merged, opam 2.2 will be usable with the upstream opam-repository on Windows, paving the way for a third beta very soon, and a Release Candidate next. =E2=80=A2 The odoc team has finalized the initial design for Odoc 3.0 and opened several [RFCs] to gather community input. We've implemented a new [Odoc driver] that follows the Odoc 3.0 design and have already started prototyping key parts of the design. =E2=80=A2 Merlin's project-wide references query is getting very close to release. The necessary [compiler PR] has been merged and included in OCaml 5.2, and the [Dune rules PR] has been merged and included in Dune 3.16. The next steps are to merge the [PR in Merlin] itself and the small patch in OCaml LSP. =E2=80=A2 The set of standard derivers shipped with `ppx_deriving.std' (i.e. `[@@deriving show, make, ord, eq, ...]') as well as `ppx_deriving_yojson' are now directly written against Ppxlib's API. That impacts developers in two ways. First, it allows you to enjoy reliable editor features in projects with those derivers (Ppxlib preserves Merlin's location invariants). Second, you can avoid a hard dependency on those derivers by using Ppxlib's `deriving_inline' feature on them. Thanks a lot to @sim642 for all your work and very kind patience, @NathanReb for reviewing and release managing, and everyone else involved! *Releases:* =E2=80=A2 [Ppxlib 0.32.1] =E2=80=A2 [Merlin 5.0] =E2=80=A2 [Dune 3.14.2] =E2=80=A2 [Dune 3.15.0] =E2=80=A2 [Dune 3.15.2] =E2=80=A2 [Dune 3.15.3] =E2=80=A2 [Odoc 2.4.2] =E2=80=A2 [opam 2.1.6] =E2=80=A2 [opam 2.2.0~beta2] =E2=80=A2 [ocamlformat 0.26.2] [previous editions] [roadmap] [OCaml.org] [Bonsai] [opam 2.2] [final PR] [RFCs] [Odoc driver] [compiler PR] [Dune rules PR] [PR in Merlin] [Ppxlib 0.32.1] [Merlin 5.0] [Dune 3.14.2] [Dune 3.15.0] [Dune 3.15.2] [Dune 3.15.3] [Odoc 2.4.2] [opam 2.1.6] [opam 2.2.0~beta2] [ocamlformat 0.26.2] *[Dune]* Exploring Package Management in Dune ([W4]) =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=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=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C= =E2=95=8C=E2=95=8C *Contributed by:* @rgrinberg (Tarides), @Leonidas-from-XIV (Tarides), @gridbugs (Tarides), @Alizter *Why:* Unify OCaml tooling under a single command line for all development workflows. This addresses one of the most important pain points [reported by the community]. *What:* Prototyping the integration of package management into Dune using opam as a library. We're introducing a `dune pkg lock' command to generate a lock file and enhancing `dune build' to handle dependencies in the lock file. More details in the [Dune RFC]. *Summary:* Over the past three months, significant progress has been made in adding Dune's support for package management. We are thrilled to report that our prototypes have reached a Minimal Viable Product (MVP) stage: an experimental version of Dune package management that can be used to build non-trivial projects, including OCaml.org and Bonsai, which we are using in our tests. There is still a long way to go, but with this milestone reached, we are now shifting our focus from prototyping to putting the feature in the hands of the community. We are moving to testing the new Dune feature with users, and in particular, now that we have a good understanding of the technical blockers and their workarounds, we will be focusing on validating and refining the developer experience (DX) of Dune package management in preparation for a first release. To that end, the Dune team has started a Dune Developer Preview Program. We're currently testing the Developer Preview of package management with selected beta testers, and once the biggest issues have been addressed, we'll be opening it to the broader community. *Activities:* =E2=80=A2 Continued addressing remaining issues with ocamlfind and zarith. =E2=80=A2 Added repro PRs for ocamlfind and zarith issues =E2=80=93 [ocaml/dune#10233], [ocaml/dune#10235]. =E2=80=A2 Iterated on a solution for relocatable ocamlfind =E2=80=93 [ocaml/ocamlfind#72]. =E2=80=A2 Removed `.mml' references in ocamlfind =E2=80=93 [ocaml/ocaml= find#75]. =E2=80=A2 Set OCAMLFIND_DESTDIR for install actions to fix ocamlfind installation issues =E2=80=93 [ocaml/dune#10267]. =E2=80=A2 Added a test reproducing error when locking when a pin stanza contains a relative path outside the workspace =E2=80=93 [ocaml/dune#10= 255]. =E2=80=A2 Fixed package creation issues with directories on different filesystems =E2=80=93 [ocaml/dune#10214]. =E2=80=A2 Opened PRs to address user errors, improve error messages, and enhance environment handling for pkg rules =E2=80=93 [ocaml/dune#10385], [ocaml/ocamlbuild#327], [ocaml/dune#10403], [ocaml/dune#10407], [ocaml/dune#10455]. =E2=80=A2 Addressed several issues related to `withenv' actions, `dune pkg lock', and unexpected behavior with variable updates =E2=80=93 [ocaml/dune#10404], [ocaml/dune#10408], [ocaml/dune#10417], [ocaml/dune#10440], [ocaml/opam#5925], [ocaml/opam#5926]. =E2=80=A2 Approved relocatable releases of ocamlfind and ocamlbuild =E2= =80=93 [ocaml-dune/opam-overlays#1], [ocaml-dune/opam-overlays#2]. =E2=80=A2 Cleaned up and sought feedback on the relocatable ocamlfind PR = =E2=80=93 [ocaml/ocamlfind#72]. =E2=80=A2 To work around the fact that the compiler is not relocatable (y= et!), we worked on adding support to Dune to manage compiler and developer tools, an experimental feature we call Dune Toolchain. =E2=80=93 [ocaml/dune#10470], [ocaml/dune#10474], [ocaml/dune#10475], [ocaml/dune#10476], [ocaml/dune#10477], [ocaml/dune#10478]. =E2=80=A2 Addressed various issues related to pkg lock, environment updat= es, and package management =E2=80=93 [ocaml/dune#10512], [ocaml/dune#10499], [ocaml/dune#10498], [ocaml/dune#10531], [ocaml/dune#10521], [ocaml/dune#10539], [ocaml/dune#10540], [ocaml/dune#10543], [ocaml/dune#10544], [ocaml/dune#10545], [ocaml/dune#10538], [ocaml/dune#10542], [ocaml/dune#10595], [ocaml/dune#10596], [ocaml/dune#10592], [ocaml/dune#10593]. =E2=80=A2 Merged PRs to use unpack code for rsync URLs and disable hg/dar= cs fetch code =E2=80=93 [ocaml/dune#10556], [ocaml/dune#10561]. [W4] [reported by the community] [Dune RFC] [ocaml/dune#10233] [ocaml/dune#10235] [ocaml/ocamlfind#72] [ocaml/ocamlfind#75] [ocaml/dune#10267] [ocaml/dune#10255] [ocaml/dune#10214] [ocaml/dune#10385] [ocaml/ocamlbuild#327] [ocaml/dune#10403] [ocaml/dune#10407] [ocaml/dune#10455] [ocaml/dune#10404] [ocaml/dune#10408] [ocaml/dune#10417] [ocaml/dune#10440] [ocaml/opam#5925] [ocaml/opam#5926] [ocaml-dune/opam-overlays#1] [ocaml-dune/opam-overlays#2] [ocaml/dune#10470] [ocaml/dune#10474] [ocaml/dune#10475] [ocaml/dune#10476] [ocaml/dune#10477] [ocaml/dune#10478] [ocaml/dune#10512] [ocaml/dune#10499] [ocaml/dune#10498] [ocaml/dune#10531] [ocaml/dune#10521] [ocaml/dune#10539] [ocaml/dune#10540] [ocaml/dune#10543] [ocaml/dune#10544] [ocaml/dune#10545] [ocaml/dune#10538] [ocaml/dune#10542] [ocaml/dune#10595] [ocaml/dune#10596] [ocaml/dune#10592] [ocaml/dune#10593] [ocaml/dune#10556] [ocaml/dune#10561] *[opam]* Native Support for Windows in opam 2.2 ([W5]) =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=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=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 *Contributed by:* @rjbou (OCamlPro), @kit-ty-kate (Ahrefs), @dra27 (Tarides), @AltGr (OCamlPro) *Why:* Enhance OCaml's viability on Windows by integrating native opam and `opam-repository' support, fostering a larger community, and more Windows-friendly packages. *What:* Releasing opam 2.2 with native Windows support, making the official `opam-repository' usable on Windows platforms. *Summary:* The opam team is getting closer to a final release of opam 2.2 with support for Windows. In the past months, we have released a second beta of opam 2.2, addressing a number of issues reported by users on previous releases, including Windows issues. Excitingly, we also opened the [final PR] adding support for Windows OCaml to opam-repository. With the PR merged, the opam team is expecting to be able to move to a Release Candidate in June. Stay tuned for more exciting news and releases in the coming weeks and months! *Activities:* =E2=80=A2 Packaging the compiler in opam-repository =E2=80=A2 We cleared WIP items in the [windows-initial] branch, creatin= g the [mingw-w64-shims] repository for the C stub program and generation script needed for the mingw-w64-shims opam package. =E2=80=A2 Various fixes for msvs-detect were upstreamed and the opam packaging PR finalized =E2=80=93 [metastack/msvs-tools#17], [metastack/msvs-tools#18]. =E2=80=A2 Initial upstreaming PRs were opened for Visual Studio configuration =E2=80=93 [ocaml/opam-repository#25440], reorganization= of conf-zstd =E2=80=93 [ocaml/opam-repository#25441], and native Windows depexts =E2=80=93 [ocaml/opam-repository#25442]. =E2=80=A2 Fixed mccs package dependencies upstream =E2=80=93 [ocaml-opam/ocaml-mccs#52], [ocaml/opam-repository#25482]. =E2=80=A2 Upstreamed support for source-packaging of flexdll =E2=80=93 [ocaml/flexdll#135]. =E2=80=A2 Worked on packaging scripts for winpthreads for OCaml 5.3.0 = =E2=80=93 [ocaml/winpthreads#1]. =E2=80=A2 Further upstreaming PRs were opened for mingw-w64-shims =E2= =80=93 [ocaml/opam-repository#25454], and flexdll and winpthreads sources packages =E2=80=93 [ocaml/opam-repository#25512]. =E2=80=A2 Reviewed and tested changes related to the 4.14.2 release for= the sunset branch of opam-repository-mingw =E2=80=93 [ocaml-opam/opam-repository-mingw#20], [ocaml-opam/opam-repository-mingw#21]. =E2=80=A2 Updated the [windows-initial] branch to support MSYS2, includ= ing creating [msys2-opam] to complement [mingw-w64-shims]. =E2=80=A2 Upstreamed issues with the ocaml-variants.5.1.1+effect-syntax package =E2=80=93 [ocaml/opam-repository#25645]. =E2=80=A2 Investigated BER MetaOCaml, determining that 4.14.1+BER does = not work on Windows and disabled it in opam-repository =E2=80=93 [ocaml/opam-repository#25648]. =E2=80=A2 Worked further on the draft PR, addressing the issue of inval= id maintainer email addresses for packages =E2=80=93 [ocaml/opam-repository#25826]. =E2=80=A2 Opened the main PR for Windows compiler support =E2=80=93 [ocaml/opam-repository#25861], with a parallel draft PR for updating the compiler's opam file =E2=80=93 [ocaml/ocaml#13160]. =E2=80=A2 Backported [ocaml/ocaml#13100] to 5.1.x ocaml-variants =E2=80= =93 [ocaml/opam-repository#25828], awaiting opam 2.2.0~beta3 release. =E2=80=A2 Release opam 2.2 =E2=80=A2 Completed work on various patches and PRs, including fixes for accented characters in Dune =E2=80=93 [ocaml/opam#5861], [ocaml/opam#5871], [janestreet/spawn#58], [ocaml/opam#5862]. =E2=80=A2 Worked on performance improvements for Windows, including add= ing job statuses and a proof-of-concept for a spinner on slow-running build jobs =E2=80=93 [ocaml/opam#5883]. =E2=80=A2 Finalizing fix on Cygwin PATH handling for opam 2.2.0 beta2 = =E2=80=93 [ocaml/opam#5832]. =E2=80=A2 Mark the internal cygwin installation as recommended - [ocaml/opam#5903] =E2=80=A2 Hijack the `%{?val_if_true:val_if_false}%' syntax to support extending the variables of packages with + in their name - [ocaml/opam#5840] =E2=80=A2 Fixed issues with downloading URLs with invalid characters and opam's internal state =E2=80=93 [ocaml/opam#5921], [ocaml/opam#5922]. =E2=80=A2 Assembled test harnesses for `opam init' and addressed issues= with `opam lint' warnings =E2=80=93 [dra27/opam-testing], [ocaml/opam#5927= ], [ocaml/opam#5928]. =E2=80=A2 Fixed reversal of environment updates and minor issues in Git= Hub Actions =E2=80=93 [ocaml/opam#5935], [ocaml/opam#5938]. =E2=80=A2 [Released opam 2.2~beta2]. =E2=80=A2 Fixed issues related to environment variable handling =E2=80= =93 [ocaml/opam#5935]. =E2=80=A2 Finalized fixes for Git for Windows menu =E2=80=93 [ocaml/opa= m#5963]. =E2=80=A2 Minor fixes to `--cygwin-extra-packages' =E2=80=93 [ocaml/opa= m#5964]. =E2=80=A2 Refactored `opam init' for a more logical experience =E2=80=93 [ocaml/opam#5963]. =E2=80=A2 Updated lint warning 41 PR =E2=80=93 [ocaml/opam#5927]. =E2=80=A2 Responded to issues found by testers of Windows compiler pack= ages =E2=80=93 [ocaml/flexdll#138], [ocaml/flexdll#139]. =E2=80=A2 Completely reworked `opam init' to detect Cygwin and MSYS2 installations. =E2=80=A2 Fixed issues with the `?' operator and MSYS2's native curl implementation =E2=80=93 [ocaml/opam#5983], [ocaml/opam#5984]. [W5] [final PR] [windows-initial] [mingw-w64-shims] [metastack/msvs-tools#17] [metastack/msvs-tools#18] [ocaml/opam-repository#25440] [ocaml/opam-repository#25441] [ocaml/opam-repository#25442] [ocaml-opam/ocaml-mccs#52] [ocaml/opam-repository#25482] [ocaml/flexdll#135] [ocaml/winpthreads#1] [ocaml/opam-repository#25454] [ocaml/opam-repository#25512] [ocaml-opam/opam-repository-mingw#20] [ocaml-opam/opam-repository-mingw#21] [msys2-opam] [ocaml/opam-repository#25645] [ocaml/opam-repository#25648] [ocaml/opam-repository#25826] [ocaml/opam-repository#25861] [ocaml/ocaml#13160] [ocaml/ocaml#13100] [ocaml/opam-repository#25828] [ocaml/opam#5861] [ocaml/opam#5871] [janestreet/spawn#58] [ocaml/opam#5862] [ocaml/opam#5883] [ocaml/opam#5832] [ocaml/opam#5903] [ocaml/opam#5840] [ocaml/opam#5921] [ocaml/opam#5922] [dra27/opam-testing] [ocaml/opam#5927] [ocaml/opam#5928] [ocaml/opam#5935] [ocaml/opam#5938] [Released opam 2.2~beta2] [ocaml/opam#5963] [ocaml/opam#5964] [ocaml/flexdll#138] [ocaml/flexdll#139] [ocaml/opam#5983] [ocaml/opam#5984] *[=E2=80=8B`odoc'=E2=80=8B]* Odoc 3.0: Unify OCaml.org and Local Package Do= cumentation ([W25]) =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=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=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=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 *Contributed by:* @jonludlam (Tarides), @julow (Tarides), @panglesd (Tarides), Luke Maurer (Jane Street) *Why:* Improving local documentation generation workflow will help package authors write better documentation for their packages, and consolidating the different `odoc' documentation generators will help make continuous improvements to `odoc' available to a larger audience. *What:* We will create conventions that drivers must follow to ensure that their output will be functional. Once established, we will update the Dune rules to follow these rules, access new `odoc' features (e.g., source rendering), and provide similar functionalities to docs.ocaml.org (a navigational sidebar, for instance). This will effectively make Dune usable to generate OCaml.org package documentation. *Summary:* The Odoc team has made significant progress on the upcoming Odoc 3.0. We held productive in-person meetings in Paris to discuss crucial design aspects such as the CLI, source code rendering, and references. These discussions led to the publications of RFCs for the various components of the design specification. We also started implementing a new Odoc driver that adheres to the new design for testing purposes, and began prototyping several of the new features. While discussions on the RFCs and specific features are still ongoing, we are very excited to have a solid set of design specifications under community review and to have begun implementing key parts of the new design. *Activities:* =E2=80=A2 Investigated package name/library name mismatches and module na= me clashes =E2=80=93 [jonludlam/2997e905a468bfa0e625bf98b24868e5], [jonludlam/0a5f1391ccbb2d3040318b154da8593a]. =E2=80=A2 Continued work on odoc 3.0 design, including meetings and discussions, culminating in the publication of the RFC =E2=80=93 [ocaml/odoc/discussions/1097]. =E2=80=A2 Worked on the navigation PR, added functionalities, fixed bugs,= and completed the rebase =E2=80=93 [ocaml/odoc#1088]. =E2=80=A2 Met in Paris to discuss the odoc 3.0 design, covering topics su= ch as CLI, rendering source code, and references. =E2=80=A2 Opened a PR with basic support for markdown in standalone pages= =E2=80=93 [ocaml/odoc#1110]. =E2=80=A2 Published the current proposal for assets as a discussion =E2= =80=93 [ocaml/odoc#1113]. =E2=80=A2 Continued discussions on Markdown rendering and asset reference= s - [ocaml/odoc#1110]. =E2=80=A2 Implemented a new driver for testing the odoc 3.0 implementatio= n =E2=80=93 [ocaml/odoc#1121], [ocaml/odoc#1128]. =E2=80=A2 Worked on implementing the =E2=80=93parent-id flag part of the = Odoc 3.0 spec =E2=80=93 [ocaml/odoc#1126]. =E2=80=A2 Worked on implementing the `-L' and `-P' flags [ocaml/odoc#1132] [W25] [jonludlam/2997e905a468bfa0e625bf98b24868e5] [jonludlam/0a5f1391ccbb2d3040318b154da8593a] [ocaml/odoc/discussions/1097] [ocaml/odoc#1088] [ocaml/odoc#1110] [ocaml/odoc#1113] [ocaml/odoc#1121] [ocaml/odoc#1128] [ocaml/odoc#1126] [ocaml/odoc#1132] *[Merlin]* Support for Project-Wide References in Merlin ([W19]) =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=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=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 *Contributed by:* @vds (Tarides), @Ekdohibs (OCamlPro), @Octachron (INRIA), @gasche (INRIA), @emillon (Tarides), @rgrinberg (Jane Street), @Julow (Tarides) *Why:* Enhance code navigation and refactoring for developers by providing project-wide reference editor features, aligning OCaml with the editor experience found in other languages. *What:* Introducing `ocamlmerlin server occurrences' and LSP `textDocument/references' support, extending compiler's Shapes for global occurrences and integrating these features in Dune, Merlin, and OCaml LSP. *Summary:* The past few months have seen fantastic progress on releasing Merlin's project-wide reference query: The compiler PR got merged and included in the now released OCaml 5.2; The Dune rules PR got merged, and with it significant performance improvements have been made on the indexing tool. The [final PR] in Merlin is open and under review. That PR as well as the small LSP patch to support the feature are about to be merged. The PR on Merlin also adds support for the feature in the Merlin server plug-in for Emacs. Support for the Merlin server plug-in for Vim has been added separately. All editor plug-ins based on LSP will support the new feature automatically. *Activities:* =E2=80=A2 We followed up on our compiler PR to improve performance for sh= ape aliases weak reduction. It got merged, and made it into OCaml 5.2.0. =E2=80=93 [ocaml/ocaml#13001] =E2=80=A2 We improved the Dune rules that drive the indexer: Simplified t= he rules, added benchmarks, discussed and improved performance. The PR got merged, and made it into Dune 3.16. - [ocaml/dune#10422] =E2=80=A2 We polished the indexer `ocaml-index': Profiled it and improved= its speed by a factor ~2, and improved its CLI. =E2=80=A2 We added a `:MerlinOccurrencesProjectWide' command to the Vim plug-in based on the Merlin server - [ocaml/merlin#1767] [W19] [final PR] [ocaml/ocaml#13001] [ocaml/dune#10422] [ocaml/merlin#1767] OCaml.org Newsletter: May 2024 =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: Sabine Schmaltz 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 Welcome to the May 2024 edition of the OCaml.org newsletter! This update has been compiled by the OCaml.org team. You can find [previous updates] on Discuss. Our goal is to make OCaml.org the best resource for anyone who wants to get started and be productive in OCaml. The OCaml.org newsletter provides an update on our progress towards that goal and an overview of the changes we are working on. We couldn't do it without all the amazing people who help us review, revise, and create better OCaml documentation and work on issues. Your participation enables us to so much more than we could just by ourselves. Thank you! This newsletter covers: =E2=80=A2 *Recipes for the OCaml Cookbook:* Help us make the OCaml Cookbo= ok really useful by contributing and reviewing recipes for common tasks! =E2=80=A2 *Community & Marketing Pages Rework:* We have UI designs for the reworked and new pages of the community section and are starting to implement these. We made progress towards showing videos from the community on the OCaml Planet. =E2=80=A2 *General Improvements:* As usual, we also worked on general maintenance and improvements, so we're highlighting some of the work that happened below. [previous updates] Open Issues for Contributors =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=E2=95=8C=E2=95=8C=E2=95=8C= =E2=95=8C=E2=95=8C=E2=95=8C You can find [open issues for contributors here]! Here are some (as of writing this newsletter) open issues: =E2=80=A2 [Running OCaml Receipes in repl.it #2456] =E2=80=A2 [Use uucp caselesseq instead of structural equality and String.ascii_lowercase #2444] =E2=80=A2 [OG images for OCaml Packages #1786] [open issues for contributors here] [Running OCaml Receipes in repl.it #2456] [Use uucp caselesseq instead of structural equality and String.ascii_lowercase #2444] [OG images for OCaml Packages #1786] Recipes for the OCaml Cookbook =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=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 Cookbook is a place where OCaml developers share how to solve common tasks using packages from the ecosystem. A recipe is a code sample and explanations on how to perform a task using a combination of open source libraries. The Cookbook is live at [ocaml.org/cookbook], but there are not a lot of recipes published yet. When the cookbook was merged, all pull requests to the cookbook branch were automatically closed. We recreated these pull requests and they are ready for review. Here's how you can help: 1. Review [open pull requests for cookbook recipes]! 2. Contribute new recipes and tasks for the cookbook! *Relevant PRs and Activities:* =E2=80=A2 PR: Add a checklist for OCaml Cookbook recipe review [ocaml/ocaml.org#2419] by [@sabine] =E2=80=A2 PR: Cookbook filesystem [ocaml/ocaml.org#2399] =E2=80=A2 PR: Cookbook networking [ocaml/ocaml.org#2400] =E2=80=A2 PR: Cookbook xml [ocaml/ocaml.org#2401] =E2=80=A2 PR: cookbook httpclient [ocaml/ocaml.org#2402] =E2=80=A2 PR: cookbook uri [ocaml/ocaml.org#2403] =E2=80=A2 PR: Cookbook regexp2 [ocaml/ocaml.org#2404] =E2=80=A2 PR: Cookbook unzip [ocaml/ocaml.org#2405] =E2=80=A2 PR: Cookbook linalg [ocaml/ocaml.org#2406] =E2=80=A2 PR: Cookbook getenv [ocaml/ocaml.org#2407] =E2=80=A2 PR: Cookbook shell [ocaml/ocaml.org#2408] =E2=80=A2 PR: Cookbook geodesic [ocaml/ocaml.org#2409] =E2=80=A2 PR: Add cookbooks for JSON serialisation and deserialisation [ocaml/ocaml.org#2415] by [@gpopides] =E2=80=A2 PR: Cookbook Encode and Decode Bytestrings from Hex-Strings [ocaml/ocaml.org#2445] by [@ggsmith842] [ocaml.org/cookbook] [open pull requests for cookbook recipes] [ocaml/ocaml.org#2419] [@sabine] [ocaml/ocaml.org#2399] [ocaml/ocaml.org#2400] [ocaml/ocaml.org#2401] [ocaml/ocaml.org#2402] [ocaml/ocaml.org#2403] [ocaml/ocaml.org#2404] [ocaml/ocaml.org#2405] [ocaml/ocaml.org#2406] [ocaml/ocaml.org#2407] [ocaml/ocaml.org#2408] [ocaml/ocaml.org#2409] [ocaml/ocaml.org#2415] [@gpopides] [ocaml/ocaml.org#2445] [@ggsmith842] Community & Marketing Pages Rework =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=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 This month, we made some progress towards adding videos from the OCaml community (e.g., from YouTube and watch.ocaml.org) to the OCaml Planet. Since the size of the OCaml Planet RSS feed grew so large that automation tools (`dlvr.it') could no longer process it, we reduced the timeframe for posts to show up in the RSS feed to the last 90 days. Contributor [@ishar19] opened a pull request to add an RSS feed for the Community/Events page. This will allow posting new events to various social media automatically and allow you to subscribe to the Events RSS feed with a RSS reader of your choice. We have [UI designs for the reworked and new pages of the community section] and we are opening small issues for contributors to help. :orange_heart: *Relevant PRs and Activities:* =E2=80=A2 The OCaml Planet =E2=80=A2 PR: Community videos scraping and list page [ocaml/ocaml.org#= 2441] by [@cuihtlauac] =E2=80=A2 PR: Scrape watch.ocaml.org as an RSS feed [ocaml/ocaml.org#24= 28] by [@cuihtlauac] =E2=80=A2 PR: No longer feature posts on the OCaml Planet [ocaml/ocaml.org#2430] by [@cuihtlauac] =E2=80=A2 PR: Set the cutoff date for the OCaml Planet RSS feed to 90 d= ays [ocaml/ocaml.org#2416] by [@sabine] =E2=80=A2 PR: Filter OCaml Planet Blog posts for "OCaml" keyword [ocaml/ocaml.org#2443] by [@cuihtlauac] =E2=80=A2 PR: add redirect for /blog to /ocaml-planet [ocaml/ocaml.org#= 2450] by [@sabine] =E2=80=A2 PR: Dedupe RSS feed creation logic [ocaml/ocaml.org#2461] by [@cuihtlauac] =E2=80=A2 Events page =E2=80=A2 PR: Feat/events rss feed [ocaml/ocaml.org#2437] by [@ishar19] [@ishar19] [UI designs for the reworked and new pages of the community section] [ocaml/ocaml.org#2441] [@cuihtlauac] [ocaml/ocaml.org#2428] [ocaml/ocaml.org#2430] [ocaml/ocaml.org#2416] [@sabine] [ocaml/ocaml.org#2443] [ocaml/ocaml.org#2450] [ocaml/ocaml.org#2461] [ocaml/ocaml.org#2437] Outreachy Internship on Interactive Exercises =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 On May 27, [Divyanka Chaudhari] started working with the team, as an Outreachy intern. She's implementing support for running the exercises as a stand-alone project, either in GitHub Codespace, in `repl.it', using Jupyter or LearnOcaml. *Relevant PRs and Activities:* =E2=80=A2 PR: Fix 007 answer folder not running test cases [ocaml/ocaml.org#2458] by [@divyankachaudhari] ## General Improvements and Data Additions *Notable Changes:* =E2=80=A2 We restructured the main navigation to have a "Tools" section t= hat holds the OCaml Platform page and the OCaml compiler releases page. This should make the OCaml Platform page easier to find. =E2=80=A2 The Changelog can now be found under "News", from the main navigation. You can also find the OCaml Planet and the Newsletters in this new section. =E2=80=A2 The OCaml Language Manual is now served from OCaml.org, instead= of v2.ocaml.org. =E2=80=A2 We added some more links to learning resources to the Resources= page at . =E2=80=A2 Some documentation updates on "Is OCaml Web Yet?", "Is OCaml GUI Yet?", the ThreadSanitizer tutorial, and the "Functors" tutorial. *Relevant PRs and Activities:* =E2=80=A2 Features =E2=80=A2 PR: Introduce a tools section for platform page, releases pag= e, and a news section for changelog, OCaml Planet and Newsletters [ocaml/ocaml.org#2410] by [@sabine] =E2=80=A2 Migration of the Language Manual from v2.ocaml.org to OCaml.org =E2=80=A2 PR: fix: language manual redirect, remove unnecessary append = of index.html [ocaml/ocaml.org#2470] by [@sabine] =E2=80=A2 PR: Fix: redirect to downloadable manual files [ocaml/ocaml.org#2439] by [@sabine] =E2=80=A2 PR: Simplify and extend /releases/ redirects from legacy v2.ocaml.org URLs [ocaml/ocaml.org#2448] by [@cuihtlauac] =E2=80=A2 PR: Fix #2465 [ocaml/ocaml.org#2468] by [@cuihtlauac] =E2=80=A2 PR: Fix more redirect [ocaml/ocaml.org#2471] by [@cuihtlauac] =E2=80=A2 Data =E2=80=A2 PR: (data) add some learning resources [ocaml/ocaml.org#2474]= by [@sabine] =E2=80=A2 PR: Add University of Bologna as academic institution [ocaml/ocaml.org#2394] by [@boozec] =E2=80=A2 PR: (data) Update ocaml.org community meeting zoom link [ocaml/ocaml.org#2413] by [@sabine] =E2=80=A2 PR: (data) jobs: add a XenServer position again [ocaml/ocaml.org#2414] by [@edwintorok] =E2=80=A2 PR: (data) add ocaml.org newsletter April 2024 [ocaml/ocaml.org#2417] by [@sabine] =E2=80=A2 PR: OCaml 5.2.0 announce and release page [ocaml/ocaml.org#24= 21] by [@Octachron] =E2=80=A2 PR: Update OCamlPro's logo [ocaml/ocaml.org#2436] by [@hra687= 261] =E2=80=A2 PR: Changelog entry for OCaml 5.2.0~rc1 [ocaml/ocaml.org#2391= ] by [@Octachron] =E2=80=A2 PR: changelog: add Dune 3.15.1 and 3.15.2 [ocaml/ocaml.org#23= 89] by [@emillon] =E2=80=A2 PR: Add changelog entry for Merlin 5.0 [ocaml/ocaml.org#2472]= by [@pitag-ha] =E2=80=A2 Bugfixes =E2=80=A2 PR: fix dark style of package version pages [ocaml/ocaml.org#= 2438] by [@FrugBatt] =E2=80=A2 GitHub actions CI broke due to an OpenSSL issue on MacOS =E2=80=A2 PR: Update debug-ci.yml [ocaml/ocaml.org#2397] by [@cuihtla= uac] =E2=80=A2 PR: Update debug-ci.yml [ocaml/ocaml.org#2398] by [@cuihtla= uac] =E2=80=A2 PR: Do brew update before installing openssl@3 to fix macos= CI [ocaml/ocaml.org#2420] by [@sabine] =E2=80=A2 PR: (ci) Restrict openssl on macos to 3.2 to see if that fi= xes CI [ocaml/ocaml.org#2390] by [@sabine] =E2=80=A2 Documentation =E2=80=A2 PR: Explain how to avoid cyclic abbreviation error with funct= or application [ocaml/ocaml.org#2457] by [@cuihtlauac] =E2=80=A2 PR: Update tutorial =E2=80=9CTransitioning to Multicore with ThreadSanitizer=E2=80=9D [ocaml/ocaml.org#2459] by [@OlivierNicole] =E2=80=A2 PR: (docs) web.md: jsonchema->atd exists [ocaml/ocaml.org#245= 4] by [@Khady] =E2=80=A2 PR: Update is_ocaml_yet/gui.md: Plotting [ocaml/ocaml.org#245= 2] by [@lukstafi] [Divyanka Chaudhari] [ocaml/ocaml.org#2458] [@divyankachaudhari] [ocaml/ocaml.org#2410] [@sabine] [ocaml/ocaml.org#2470] [ocaml/ocaml.org#2439] [ocaml/ocaml.org#2448] [@cuihtlauac] [ocaml/ocaml.org#2468] [ocaml/ocaml.org#2471] [ocaml/ocaml.org#2474] [ocaml/ocaml.org#2394] [@boozec] [ocaml/ocaml.org#2413] [ocaml/ocaml.org#2414] [@edwintorok] [ocaml/ocaml.org#2417] [ocaml/ocaml.org#2421] [@Octachron] [ocaml/ocaml.org#2436] [@hra687261] [ocaml/ocaml.org#2391] [ocaml/ocaml.org#2389] [@emillon] [ocaml/ocaml.org#2472] [@pitag-ha] [ocaml/ocaml.org#2438] [@FrugBatt] [ocaml/ocaml.org#2397] [ocaml/ocaml.org#2398] [ocaml/ocaml.org#2420] [ocaml/ocaml.org#2390] [ocaml/ocaml.org#2457] [ocaml/ocaml.org#2459] [@OlivierNicole] [ocaml/ocaml.org#2454] [@Khady] [ocaml/ocaml.org#2452] [@lukstafi] OCaml Windows Working Group =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: Deep in this thread, Sudha Parimala 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 Thanks to everyone who joined the meeting! Please find the notes here: . The meeting time this time wasn't US time-zone friendly. We'll try to find a time that works for more people next time. Registration for Fun OCaml 2024 Opens Shortly =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: Sabine Schmaltz 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 Registration for Fun OCaml 2024 will open shortly at 17:00 CEST (Central European Summer Time) UTC/GMT +2 hours Please put yourself on the waiting list if you don't get a ticket immediately, we're doing this in a staggered fashion, unlocking more tickets over the next days! =F0=9F=A7=A1=F0=9F=90=AB opam 2.2.0~beta3 =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: Kate 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 We=E2=80=99re once again very excited to announce this third and final be= ta for opam 2.2.0. What=E2=80=99s new in this beta? =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=E2=95=8C=E2=95=8C =E2=80=A2 *opam init on Windows enhancements*: this beta greatly improves= the `opam init' user experience on Windows, and the number of recognised configurations =E2=80=A2 *opam init =E2=80=93cygwin-extra-packages=3D\*: a new ar= gument to specify additional packages for the internal Cygwin installation =E2=80=A2 *Support of user directories containing spaces*: opam now redir= ects the opam root to `C:\opamroot\opam-xxx' when the opam root contains spaces on Windows =E2=80=A2 *UTF-8 paged =E2=80=93help on Windows* thanks to cmdliner 1.3.0= and some additional Windows API calls, all the `opam --help' commands now display a paged view by default similar to Unix-like systems. =E2=80=A2 Many *fixes*, *performance* and general *improvements* :open_book: You can read our [blog post] for more information about these changes and more, and for even more details you can take a look at the [release note] or the [changelog]. [blog post] [release note] [changelog] Windows issues =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 Configuration of Windows is tricky, so please don=E2=80=99t be too disheartened if things don=E2=80=99t work instantly. If something doesn= =E2=80=99t work first time, [please do report it], even if you manage to find a way to workaround it. If opam didn=E2=80=99t elegantly tell you what was wrong, = then it=E2=80=99s a bug and we=E2=80=99d love to hear about it, rather than en= ding up with a series of workarounds flying around. It=E2=80=99s no problem at all for= us to receive a bug report which turns out to be user error - we=E2=80=99d f= ar rather that than not hear bugs which are opam=E2=80=99s error! =F0=9F=99= =80 [please do report it] How to upgrade =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=97=8A On Windows *BEWARE*: the command shown below is *experimental, use caution* and please do report any issues that you are experiencing. If you prefer to not use our experimental script, feel free to get the Windows binary directly from [the Release Page] and put it in your directory of choice instead. Now that the [Windows support was merged in opam-repository], installing opam is as simple as calling the following command from a PowerShell terminal: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubus= ercontent.com/kit-ty-kate/opam/windows-installer/shell/install.ps1) }" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 opening a new terminal, and a simple `opam init' will work out-of-the-box. [the Release Page] [Windows support was merged in opam-repository] =E2=97=8A On Unix-like systems To upgrade, simply run: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocam= l/opam/master/shell/install.sh) --version 2.2.0~beta3" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 We=E2=80=99re planning for an opam 2.2.0~rc1 release later next week, so please do report any issue you encounter on our [bug-tracker]. [bug-tracker] 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 [Release of Frama-C 29.0 (Copper)] =E2=80=A2 [Secure From the Ground Up: Introducing the FIDES Project Combi= ning RISC-V and MirageOS] [the ocaml.org blog] [Release of Frama-C 29.0 (Copper)] [Secure From the Ground Up: Introducing the FIDES Project Combining RISC-V and MirageOS] 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 June 04 to 11, 2024.

Providing Opam system dependancies with Nix

Ryan announced

I've opened a PR wi= th input from @dra27 and @avsm adding support for Nix depexts (system depen= dencies) to Opam.

Opam supports system dependencies for other platforms by invoking the syste= m package manager, e.g. apt-get install .... However Nix is a = bit different, as in general installing a package to your system doesn't cr= eate the development environment required to use it; it will only add execu= tables to your $PATH. To find, for example, objects files, out= side of a Nix derivation you can use nix-shell and it's descen= dant nix develop. E.g.:

$ nix-shell -p gmp
$ echo $NIX_LDFLAGS
-rpath /nix/store/20g5iw2r512gnfrdr4imp2y940v3vlif-shell/lib  -L/nix/store/=
rx6nkd40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib -L/nix/store/rx6nkd=
40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib

We support Nix depexts with Opam in a similar way. A Nix derivation is buil= d with the desired packages as inputs, and the resulting environment is out= put as a file in the Opam switch in a format that Opam can parse. This nix.env file is a symlink into the Nix store, so acts as a garbage= collection root – packages won't be removed from the store while th= is file exists. Opam outputs these environment variables on an invocation o= f opam env.

This fixes issues such as https://discuss.ocaml.org/= t/opam-and-nixos-is-there-an-alternative-to-nix-shell/13726.

While the primary use case is on NixOS, this depext mechanism could be used= on other platforms to provide a consistent experience including other Linu= x distributions, BSDs, (and possibly even windows in the future).

Nixpkgs typically only packages one version of a package at a time, but I'm= working on versioned depexts with previous version of Nixpkgs as outlined = here.

I'm keen to get people's opinions and perspective on this!

ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0

Nathan Rebours announced

I am happy to announce the release of ppx_deriving.6.0.2 and ppx_deriving_y= ojson.3.8.0, the first release of those packages in years!

The main feature here is the port of ppx_deriving's standard derivers ([@@deriving sho= w, make, ord, eq, ...]) and ppx_deriving_yojson to ppxlib's Deriving api. There are no changes to how you'd use those derivers but many benefits:

  • Better performances and better integration with other ppx-es as the cod= e is now generated as part of ppxlib's driver main AST rewriting phase rath= er than in a separate, dedicated phase.
  • They can now be used with [@@deriving_inline]
  • None of them will break the location invariant required by merlin anymo= re, fixing a long lasting bug and providing a much better user experience.<= /li>

You can find the full release notes for ppx_deriving here and for ppx_de= riving_yojson here.

I'd like to thank @sim642 for all their work on the ppxlib ports and their = patience, and all our other contributors.

I'd also like to thank the OCaml Software= Foundation who has been funding my work on those releases.

Effective ML Through Merlin's Destruct Command

Xavier Van de Woestyne announced

I'm very pleased to present you an article with a = collection of small illustrations and examples of how to use the dest= ruct command to generate patterns in the presence of pattern matches= .=20

The command has been present in Merlin for several years (and accessible via OCaml-LSP) but, as the various changelogs relating = to Merlin mention, we have spent some time polishing it and adapting it to = the evolutions of OCaml, making it more stable (essentially in the presence= of punning) and taking into account the changes made to the representation= of functions (and their parameters).

The aim of the article is to show how the destruct command wor= ks in a number of very concrete cases, and ends with an example (a little a= rtificial for the purposes of the article and for teaching purposes) which = shows how to use destruct interactively.

Can't wait to hear your feedback! Happy reading!

OCaml Windows Working Group

Sudha Parimala announced

I=E2=80=99m happy to share that we=E2=80=99re starting a working group for = OCaml Windows. This is part of a larger effort, First-class Wi= ndows, to enhance the OCaml experience on Windows. Through this effort,= we aim to coordinate our collective knowledge to identify high-priority it= ems for First-class Windows.

We've started a mailing list to exchange ideas and would greatly appreciate= inputs. You can sign up at – https://groups.google.com/u/0/g/ocaml-windows-wg

While the mailing list is intended to be the primary means of communication= , we plan to do a sync meeting once a month, to start with. We plan to do a= kick-off meeting early next week. Please fill in this poll if you're inter= ested to join: https://= strawpoll.com/polls/PbZqbmkNeyN.

Happy camling :camel:

Flambda2 Ep. 2: Loopifying Tail-Recursive Functions, by OCamlP= ro

OCamlPro announced

Greetings Cameleers,

We would like to share with you our latest Flambda2 Snippet: Flambda2 = Ep. 2: Loopifying Tail-Recursive Functions!

Indeed, today's topic is what is called Loopify, one of the ma= ny optimisation algorithms found in the Flambda2 optimising co= mpiler project.

We believe Loopify is a nicely representative piece of softwar= e for our readers to grasp at the general design and philosophy for all opt= imisations available in Flambda2! Hopefully, you will do too!

Be sure to check out the Flambda2 Ep.0 article to get all t= he context for the project itself and the series of blog posts!

In any case, we await your feedback below, and hope that you will enjoy rea= ding this post, and all ensuing ones!

Kind regards, The OCamlPro Team

OCaml Platform Newsletter: March-May 2024

Thibaut Mattio announced

Welcome to the eleventh edition of the OCaml Platform newsletter!

In this March-May 2024 edition, we are excited to bring you the latest on t= he OCaml Platform, continuing our tradition of highlighting recent developm= ents as seen in previous editions. To understand the direction we're headed, especia= lly regarding development workflows and user experience improvements, check= out our roadmap.

Highlights:

  • Explorations on Dune package management have reached a Minimal-Viable-P= roduct (MVP) stage: a version of Dune that can build non-trivial projects l= ike OCaml.org and Bonsai. With a working MVP, = the team is shifting their focus to putting Dune package management in the = hands of the community. To that end, we have started the Dune Developer Pre= view Program, where we will test Dune package management with users and ref= ine the user experience in preparation for a final release.
  • The opam team released a second beta of opam 2.2, and with it, opened the <= a href=3D"https://github.com/ocaml/opam-repository/pull/25861">final PR= to add support for Windows OCaml to the opam-repository. Once the PR is me= rged, opam 2.2 will be usable with the upstream opam-repository on Windows,= paving the way for a third beta very soon, and a Release Candidate next.
  • The odoc team has finalized the initial design for Odoc 3.0 and opened = several RFCs to g= ather community input. We've implemented a new Odoc driver that follows the Odoc 3.0 design an= d have already started prototyping key parts of the design.
  • Merlin's project-wide references query is getting very close to release= . The necessary compi= ler PR has been merged and included in OCaml 5.2, and the Dune rules PR has been merged a= nd included in Dune 3.16. The next steps are to merge the PR in Merlin itself and the small = patch in OCaml LSP.
  • The set of standard derivers shipped with ppx_deriving.std= (i.e. [@@deriving show, make, ord, eq, ...]) as well as ppx_deriving_yojson are now directly written against Ppxlib's API. = That impacts developers in two ways. First, it allows you to enjoy reliable= editor features in projects with those derivers (Ppxlib preserves Merlin's= location invariants). Second, you can avoid a hard dependency on those der= ivers by using Ppxlib's deriving_inline feature on them. Thank= s a lot to @sim642 for all your work and very kind patience, @NathanReb for= reviewing and release managing, and everyone else involved!

Releases:

[Dune] Exploring Package Management in Dune (<= a href=3D"https://ocaml.org/docs/platform-roadmap#w4-build-a-project">W4)

Contributed by: @rgrinberg (Tarides), @Leonidas-from-XIV (Tarides), = @gridbugs (Tarides), @Alizter

Why: Unify OCaml tooling under a single command line for all develop= ment workflows. This addresses one of the most important pain points reported by the community.

What: Prototyping the integration of package management into Dune us= ing opam as a library. We're introducing a dune pkg lock comma= nd to generate a lock file and enhancing dune build to handle = dependencies in the lock file. More details in the Dune RFC.

Summary:=20

Over the past three months, significant progress has been made in adding Du= ne's support for package management. We are thrilled to report that our pro= totypes have reached a Minimal Viable Product (MVP) stage: an experimental = version of Dune package management that can be used to build non-trivial pr= ojects, including OCaml.org and Bonsai, which we are using in our tests.

There is still a long way to go, but with this milestone reached, we are no= w shifting our focus from prototyping to putting the feature in the hands o= f the community. We are moving to testing the new Dune feature with users, = and in particular, now that we have a good understanding of the technical b= lockers and their workarounds, we will be focusing on validating and refini= ng the developer experience (DX) of Dune package management in preparation = for a first release.

To that end, the Dune team has started a Dune Developer Preview Program. We= 're currently testing the Developer Preview of package management with sele= cted beta testers, and once the biggest issues have been addressed, we'll b= e opening it to the broader community.

Activities:

[opam] Native Support for Windows in opam 2.2 = (W5)

Contributed by: @rjbou (OCamlPro), @kit-ty-kate (Ahrefs), @dra27 (Ta= rides), @AltGr (OCamlPro)

Why: Enhance OCaml's viability on Windows by integrating native opam= and opam-repository support, fostering a larger community, an= d more Windows-friendly packages.

What: Releasing opam 2.2 with native Windows support, making the off= icial opam-repository usable on Windows platforms.

Summary:

The opam team is getting closer to a final release of opam 2.2 with support= for Windows. In the past months, we have released a second beta of opam 2.= 2, addressing a number of issues reported by users on previous releases, in= cluding Windows issues.

Excitingly, we also opened the final PR adding support for Windows OCaml to opam-r= epository. With the PR merged, the opam team is expecting to be able to mov= e to a Release Candidate in June.

Stay tuned for more exciting news and releases in the coming weeks and mont= hs!

Activities:

[=E2=80=8Bodoc=E2=80=8B] Odoc 3.0= : Unify OCaml.org and Local Package Documentation (W25)

Contributed by: @jonludlam (Tarides), @julow (Tarides), @panglesd (T= arides), Luke Maurer (Jane Street)

Why: Improving local documentation generation workflow will help pac= kage authors write better documentation for their packages, and consolidati= ng the different odoc documentation generators will help make = continuous improvements to odoc available to a larger audience.

What: We will create conventions that drivers must follow to ensure = that their output will be functional. Once established, we will update the = Dune rules to follow these rules, access new odoc features (e.= g., source rendering), and provide similar functionalities to docs.ocaml.or= g (a navigational sidebar, for instance). This will effectively make Dune u= sable to generate OCaml.org package documentation.

Summary:

The Odoc team has made significant progress on the upcoming Odoc 3.0. We he= ld productive in-person meetings in Paris to discuss crucial design aspects= such as the CLI, source code rendering, and references. These discussions = led to the publications of RFCs for the various components of the design sp= ecification.

We also started implementing a new Odoc driver that adheres to the new desi= gn for testing purposes, and began prototyping several of the new features.

While discussions on the RFCs and specific features are still ongoing, we a= re very excited to have a solid set of design specifications under communit= y review and to have begun implementing key parts of the new design.

Activities:

  • Investigated package name/library name mismatches and module name clash= es =E2=80=93 jonludlam/2997e905a468bfa0e625bf98b24868e5, jonlud= lam/0a5f1391ccbb2d3040318b154da8593a.
  • Continued work on odoc 3.0 design, including meetings and discussions, = culminating in the publication of the RFC =E2=80=93 ocaml/odoc/discussions/1097.
  • Worked on the navigation PR, added functionalities, fixed bugs, and com= pleted the rebase =E2=80=93 ocaml/odoc#1088.
  • Met in Paris to discuss the odoc 3.0 design, covering topics such as CL= I, rendering source code, and references.
  • Opened a PR with basic support for markdown in standalone pages =E2=80= =93 ocaml/odoc#1110= .
  • Published the current proposal for assets as a discussion =E2=80=93 ocaml/odoc#1113= .
  • Continued discussions on Markdown rendering and asset references - ocaml/odoc#1110.
  • Implemented a new driver for testing the odoc 3.0 implementation =E2=80= =93 ocaml/odoc#1121= , ocaml/odoc#1128.<= /li>
  • Worked on implementing the –parent-id flag part of the Odoc 3.0 = spec =E2=80=93 ocaml/od= oc#1126.
  • Worked on implementing the -L and -P flags ocaml/odoc#1132

[Merlin] Support for Project-Wide References i= n Merlin (W19)

Contributed by: @vds (Tarides), @Ekdohibs (OCamlPro), @Octachron (I= NRIA), @gasche (INRIA), @emillon (Tarides), @rgrinberg (Jane Street), @Julo= w (Tarides)

Why: Enhance code navigation and refactoring for developers by provi= ding project-wide reference editor features, aligning OCaml with the editor= experience found in other languages.

What: Introducing ocamlmerlin server occurrences and LS= P textDocument/references support, extending compiler's Shapes= for global occurrences and integrating these features in Dune, Merlin, and= OCaml LSP.

Summary:

The past few months have seen fantastic progress on releasing Merlin's proj= ect-wide reference query: The compiler PR got merged and included in the no= w released OCaml 5.2; The Dune rules PR got merged, and with it significant= performance improvements have been made on the indexing tool. The final PR in Merlin is op= en and under review. That PR as well as the small LSP patch to support the = feature are about to be merged.

The PR on Merlin also adds support for the feature in the Merlin server plu= g-in for Emacs. Support for the Merlin server plug-in for Vim has been adde= d separately. All editor plug-ins based on LSP will support the new feature= automatically.

Activities:

  • We followed up on our compiler PR to improve performance for shape alia= ses weak reduction. It got merged, and made it into OCaml 5.2.0. =E2=80=93 = ocaml/ocaml#13001=
  • We improved the Dune rules that drive the indexer: Simplified the rules= , added benchmarks, discussed and improved performance. The PR got merged, = and made it into Dune 3.16. - ocaml/dune#10422
  • We polished the indexer ocaml-index: Profiled it and impro= ved its speed by a factor ~2, and improved its CLI.
  • We added a :MerlinOccurrencesProjectWide command to the Vi= m plug-in based on the Merlin server - ocaml/merlin#1767

OCaml.org Newsletter: May 2024

Sabine Schmaltz announced

Welcome to the May 2024 edition of the OCaml.org newsletter! This update ha= s been compiled by the OCaml.org team. You can find previous updates on Discuss.

Our goal is to make OCaml.org the best resource for anyone who wants to get= started and be productive in OCaml. The OCaml.org newsletter provides an u= pdate on our progress towards that goal and an overview of the changes we a= re working on.

We couldn't do it without all the amazing people who help us review, revise= , and create better OCaml documentation and work on issues. Your participat= ion enables us to so much more than we could just by ourselves. Thank you!

This newsletter covers:

  • Recipes for the OCaml Cookbook: Help us make the OCaml Cookbook = really useful by contributing and reviewing recipes for common tasks!
  • Community & Marketing Pages Rework: We have UI designs for t= he reworked and new pages of the community section and are starting to impl= ement these. We made progress towards showing videos from the community on = the OCaml Planet.
  • General Improvements: As usual, we also worked on general mainte= nance and improvements, so we're highlighting some of the work that happene= d below.

Recipes for the OCaml Cookbook

The OCaml Cookbook is a place where OCaml developers share how to solve com= mon tasks using packages from the ecosystem.

A recipe is a code sample and explanations on how to perform a task using a= combination of open source libraries.

The Cookbook is live at ocaml.org/co= okbook, but there are not a lot of recipes published yet.

When the cookbook was merged, all pull requests to the cookbook branch were= automatically closed. We recreated these pull requests and they are ready = for review.

Here's how you can help:

  1. Review open pull requests for cookbook recipes!
  2. Contribute new recipes and tasks for the cookbook!

Relevant PRs and Activities:

Community & Marketing Pages Rework

This month, we made some progress towards adding videos from the OCaml comm= unity (e.g., from YouTube and watch.ocaml.org) to the OCaml Planet.

Since the size of the OCaml Planet RSS feed grew so large that automation t= ools (dlvr.it) could no longer process it, we reduced the time= frame for posts to show up in the RSS feed to the last 90 days.

Contributor @ishar19 opened a pu= ll request to add an RSS feed for the Community/Events page. This will allo= w posting new events to various social media automatically and allow you to= subscribe to the Events RSS feed with a RSS reader of your choice.

We have UI designs for the reworked and new pages of the = community section and we are opening small issues for contributors to h= elp. :orange_heart:=20

Relevant PRs and Activities:

Outreachy Internship on Interactive Exercises

On May 27, Divyanka Chaudh= ari started working with the team, as an Outreachy intern. She's implem= enting support for running the exercises as a stand-alone project, either i= n GitHub Codespace, in repl.it, using Jupyter or LearnOcaml.

Relevant PRs and Activities:

## General Improvements and Data Additions

Notable Changes:

  • We restructured the main navigation to have a "Tools" section that hold= s the OCaml Platform page and the OCaml compiler releases page. This should= make the OCaml Platform page easier to find.
  • The Changelog can now be found under "News", from the main navigation. = You can also find the OCaml Planet and the Newsletters in this new section.=
  • The OCaml Language Manual is now served from OCaml.org, instead of v2.o= caml.org.
  • We added some more links to learning resources to the Resources page at= https://ocaml.org/resources.
  • Some documentation updates on "Is OCaml Web Yet?", "Is OCaml GUI Yet?",= the ThreadSanitizer tutorial, and the "Functors" tutorial.

Relevant PRs and Activities:

Registration for Fun OCaml 2024 Opens Shortly

Sabine Schmaltz announced

Registration for Fun OCaml 2024 will open shortly at 17:00 CEST (Central Eu= ropean Summer Time) UTC/GMT +2 hours

Please put yourself on the waiting list if you don't get a ticket immediate= ly, we're doing this in a staggered fashion, unlocking more tickets over th= e next days! =F0=9F=A7=A1=F0=9F=90=AB

https://fun-ocaml.com

opam 2.2.0~beta3

Kate announced

We=E2=80=99re once again very excited to announce this third and final beta= for opam 2.2.0.

What=E2=80=99s new in this beta?

  • opam init on Windows enhancements: this beta greatly improves th= e opam init user experience on Windows, and the number of reco= gnised configurations
  • opam init –cygwin-extra-packages=3D\<pkgs\>: a new = argument to specify additional packages for the internal Cygwin installatio= n
  • Support of user directories containing spaces: opam now redirect= s the opam root to C:\opamroot\opam-xxx when the opam root con= tains spaces on Windows
  • UTF-8 paged –help on Windows thanks to cmdliner 1.3.0 and= some additional Windows API calls, all the opam --help comman= ds now display a paged view by default similar to Unix-like systems.
  • Many fixes, performance and general improvements

:open_book: You can read our blog post for more information about these changes and more= , and for even more details you can take a look at the release note or the changelog.

Windows issues

Configuration of Windows is tricky, so please don=E2=80=99t be too disheart= ened if things don=E2=80=99t work instantly. If something doesn=E2=80=99t w= ork first time, please do = report it, even if you manage to find a way to workaround it. If opam d= idn=E2=80=99t elegantly tell you what was wrong, then it=E2=80=99s a bug an= d we=E2=80=99d love to hear about it, rather than ending up with a series o= f workarounds flying around. It=E2=80=99s no problem at all for us to recei= ve a bug report which turns out to be user error - we=E2=80=99d far rather = that than not hear bugs which are opam=E2=80=99s error! =F0=9F=99=80

How to upgrade

  • On Windows

    BEWARE: the command shown below is experimental, use caution = and please do report any issues that you are experiencing. If you prefer to= not use our experimental script, feel free to get the Windows binary direc= tly from the Release Page and put it in your directory of choice instead.

    Now that the Windows support was merged in opam-repository,

    installing opam is as simple as calling the following command from a PowerS= hell terminal:

    Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubuserconten=
    t.com/kit-ty-kate/opam/windows-installer/shell/install.ps1) }"
    

    opening a new terminal, and a simple opam init will work out-o= f-the-box.

  • On Unix-like systems

    To upgrade, simply run:

    bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/ma=
    ster/shell/install.sh) --version 2.2.0~beta3"
    

    We=E2=80=99re planning for an opam 2.2.0~rc1 release later next week, so pl= ease do report any issue you encounter on our bug-tracker.

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.

--=-=-=--