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=H/1zGqJX; 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=p6Un4N3R; 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 BA381B80123 for ; Tue, 24 Sep 2024 14:18:49 +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=gwj/4y5dHXZBkNt4ZfFDzihCrXaKH5Fw2O1u+vg2xxQ=; b=H/1zGqJXuBYvVRwwWnxyItepvfET0etzYTuBKUjp8BK4SSuNVRI4wTfS kYdxLezPitJpjgKkG9zZA83kbbxcZkFrQOh0YU0ug1pgTwnZo0mXqtnfI x6dIavV2mItApui484/Wu/uE7a7fhMGZDM7Uk4eX9PeJ5UI6yNuMuWAW2 8=; 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.10,254,1719871200"; d="scan'208,217";a="184861226" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 24 Sep 2024 15:18:48 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 667B1E0D19; Tue, 24 Sep 2024 15:18:48 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id AD589E0035 for ; Tue, 24 Sep 2024 15:18:42 +0200 (CEST) IronPort-SDR: 66f2bc2e_kiXksPx/ZaI8wtXLM2ADof+mqKnk2OuZQvuiOuuA6uf0E9x jL6Hs8SYBZbKyXHiXLmQOVlCL0bEEYT7CI6/caw== X-IPAS-Result: =?us-ascii?q?A0ESAQADu/JmmCIeaIFaFoJCgUGBAxkBY1ozBwhIAwGEU?= =?us-ascii?q?oFjgWyOIIEWkDWGMYE7WoIxgVYUgREDGDkUAQMBDS4BDgQBAgQBAQMBAgGDS?= =?us-ascii?q?XFGAooDAh8GAQQyBw4BAgQBAQEBAwIDAQEBAQEBCAEBBQEBAQIBAQIEBgECE?= =?us-ascii?q?AEBAQEBAQEBNwVJhXUNgkYZFSNxXgcJNgEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQECDTdnAQgKEwEBJgwGGCMDFAEGAwIRA?= =?us-ascii?q?TUDARMBEhQFAYJnAYJkAwUMBj+TRppsGjd6gTKBAYIMAQEGgQg+AgECCQICA?= =?us-ascii?q?wEOCSUB2gWBYwmBSIgxGgEqSGoChEQJgzd7Jw+BVUSBFTWCIhsHb4I/CxcBA?= =?us-ascii?q?QEBAReBEQERAgEICQkPJAmDJYJpgzGCblUSaYMNYWgBbIEJLxaCbgwTgSQDA?= =?us-ascii?q?mEQJIEYTlcPVwFuPhJCDjIDgRCBPXwlgSIQhihfgQQTgXCCJ4wsgUdLMyETA?= =?us-ascii?q?VUTFwsJBWSGC4JJgyaCFIQVhSWBZwlhh2eBb4E+gVlHgnFKhUiBBoJRa045A?= =?us-ascii?q?g0CN4IoJGqCWoNkgRYdQAMLbT01FBurRQQNKAGBWwFHgUkKJQ4KATMCEgMnD?= =?us-ascii?q?xQBBhQJBQUBBQ4FAxAJFwIkCAIGAgUDBhUKBw8ZGQQJCgQCDgUHAQEJBA0RA?= =?us-ascii?q?QgDAgUEAgQpA5I2FBAVAyoDdI46omc0B4QagV0GDIhGPYEklXOEBYFWiyuGf?= =?us-ascii?q?osEhhw9ZCKYVCKCNIJBhF8KgRsJX4EOapVOBA8NGYUbgW0BMzwwPwEBHAMJB?= =?us-ascii?q?zMaMEMNBAoCAQmCDAEBMgkKDDAcD41/LQEWg1iBPoEmgXU7gkHBBANBNQIBA?= =?us-ascii?q?Q4pAgcBCgEBAwmFYgEBaYUKMoFLAQE?= IronPort-PHdr: A9a23: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 Z2se88rd9OmUx6H IronPort-Data: A9a23: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 vRALZTz6IRp5X29AIGr9Dg= IronPort-HdrOrdr: A9a23:K3tDFKNHJ/+m78BcTs6jsMiBIKoaSvp037BL7TEWdfUxSKalfq +V7ZYmPHPP+VUssRIb+exoWpPwJE80nKQdieJxAV7IZniDhILHFvAE0WIg+VHd8u/Fm9K1GZ 0OT0G2MrPNMWQ= X-Talos-CUID: 9a23:DA+QQGHbC76n//gzqmJg/mQqRdEDbEbYwVDZA3WhCDpFRLysHAo= X-Talos-MUID: 9a23:GB93NQlLl1y9dYkwmyLBdnolCZ1jw6m2Lnodsqgr5fCIbAJ3JAW02WE= X-IronPort-Anti-Spam-Filtered: true X-URL-LookUp-ScanningError: 1 X-IronPort-AV: E=Sophos;i="6.10,254,1719871200"; d="scan'208,217";a="97280914" X-MGA-submission: =?us-ascii?q?MDFTvbSBa2nOvicKxJ9u955bwy3yzYkjmjthKc?= =?us-ascii?q?gTh00JxfTUrLOY8E1ztKi7V+cBzn1XEa/FhvIUOBalSRSqiqMlNwcdHN?= =?us-ascii?q?n4PvbK8U2bYsQsmkiOyBRXjd89H6dJpa4uP+Sg/NCwo+JJzkuoA3w4ZU?= =?us-ascii?q?PwBc6ap40cp3py10jU/5Rjog=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Sep 2024 15:18:38 +0200 Received: from mac-03220211.irisa.fr (mac-03220211.irisa.fr [131.254.21.249]) (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 A0B3B56491E; Tue, 24 Sep 2024 15:18:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1727183916; bh=QgQ7aKNV6uZ1xXXVYejpCxsEOGSe6YG8JFQu2rh2dNA=; h=From:To:Subject:Date:Message-ID; b=p6Un4N3RHoIH6C9A5Nhrzj6qm3ADBa94HL0RGs+F6dBntprKbDPnHnNoWZa2lSt+E 238C9ROBznEHQ0FrN5NGGAJaCI3yuqZP2x51Hq90mcEJTFCw9ukf5Ngmq4lqsiXjhe kgUbYsp8GO9cVD495hIwVLDnLZvDSxeijv9zQ0ro= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 24 Sep 2024 15:18:36 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Sep 24 15:18:37 2024 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.492377, queueID=EA8AE564922 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: 19181 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 September 17 to 24, 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 ocaml-trace 0.8 qcheck-lin and qcheck-stm 0.2 3rd editor tooling dev-meeting: 26th of September =F0=9F=A7=99 First release of hachis OCaml Platform Newsletter: June-August 2024 First alpha release of OCaml 5.3.0 Ascend - Dungeon RPG for your terminal first release of ppx_deriving_jsonschema opam 2.3.0~alpha1 Other OCaml News Old CWN ocaml-trace 0.8 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Simon Cruanes 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 [ocaml-trace 0.8] was just released. It features a new trace collector for multiprocess programs, and a new library, `trace.subscriber', for handling events in a more modular, compositional way. For background, `trace' is a lightweight library that can be used to instrument your code (libraries or executable), either by hand or using `ppx_trace', and offers a `collector' abstraction to actually collect/handle/store/write the trace events somewhere. The overhead when no collector is installed is low. There are also several collectors in `trace-tef', `trace-fuchsia', and (in a separate repo) `tracy-client'. See the [github repo] for more details. [ocaml-trace 0.8] [github repo] qcheck-lin and qcheck-stm 0.2 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Jan Midtgaard 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 I'm happy to share the 0.4 release of `qcheck-lin', `qcheck-stm', and `qcheck-multicoretests-util': The testing libraries are useful for testing your OCaml code for parallelism safety: =E2=80=A2 `qcheck-lin' offer a low effort approach, requiring little more= than type signatures of the target interface (example above) =E2=80=A2 `qcheck-stm' offers stronger correctness guarantees by comparin= g the observed behaviour to a functional model description - under both sequential and parallel usage. The 0.4 release brings two new "stress test" functions and also adjusts the cmd list distribution of `STM_sequential': =E2=80=A2 #415: Remove `--verbose' in internal `mutable_set_v5' expect te= st to avoid a test failure on a slow machine =E2=80=A2 #443: Add `Lin_domain.stress_test' as a lighter stress test, not requiring an interleaving search. =E2=80=A2 #462: Add `STM_domain.stress_test_par', similar to `Lin_domain.stress_test' for STM models. =E2=80=A2 #472: Switch `arb_cmds' to use an exponential distribution with= a mean of 10, avoiding lists of up to 10000 cmds in `STM_sequential' (reported by @nikolaushuber). Happy testing! :smiley: 3rd editor tooling dev-meeting: 26th of September =F0=9F=A7=99 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=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: vds 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 The meeting is back! We are organizing the next one on next Thursday, the 26th of September at 5pm CEST (sorry, still no timezone rotation, but we probably will for the next one). Whether you are a long time maintainer, an occasional contributor, a new comer, or simply a curious passer-by, please feel free to attend! :sparkles: For this session, @jchavarri is going to present [Melange], a toolchain that compiles ocaml/reason to javascript, and its integration in the tooling ecosystem. :clipboard: Meeting agenda: =E2=80=A2 A tour-de-table to allow the participants that wish to do so to present themselves and mention issues / prs they are interested in. =E2=80=A2 Talk and Q&A =E2=80=A2 Discuss issues and pull requests that were tagged in advance or mentioned during the tour-de-table. We=E2=80=99re looking forward to meeting you! Meeting link: [https://meet.google.com/nzt-owbh-yoo ] Previous meeting notes are available in [Merlin=E2=80=99s repository wiki= ]. [Melange] [https://meet.google.com/nzt-owbh-yoo ] [Merlin=E2=80=99s repository wiki] First release of hachis =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Fran=C3=A7ois Pottier 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 It is my pleasure to announce the first release of `hachis', a library that offers hash sets and hash maps. These data structures handle collisions via linear probing, a technique that relies on linear searches within an array. All of the data is stored within one large array (for hash sets) or two large arrays (for hash maps). As a result, these data structures offer good locality. Some benchmarks suggest that `hachis' can consistently outperform the standard library's hash maps (`Hashtbl'). To install the library, type `opam update && opam install hachis'. For more details, see the [documentation]. [documentation] Simon Cruanes then added =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=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 code is [here] for those who are curious to see how the sausage is done :-) [here] OCaml Platform Newsletter: June-August 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=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 twelfth edition of the OCaml Platform newsletter! In this June-August 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 *Dune package management soon in public beta:* [Developer Previ= ew Program] expands with 60+ interviews, NPS soaring from +9 to +28! Public beta coming soon with exciting features like automatic dependency locking and dev tool management. [See it in action]! =E2=80=A2 *Opam 2.2 is out:* [Native Windows support is here]! Seamless s= etup with `opam init', `opam-repository' compatible with Windows. OCaml on Windows is now a reality. =E2=80=A2 *Odoc 3.0 gets close to a release:* New features like global sidebars and media support are ready in odoc. Integration with Dune and OCaml.org pipeline in progress - get ready to test the new documentation experience soon! [Check out the RFCs]. =E2=80=A2 *Project-wide references is live:* Merlin 5.1 and OCaml LSP 1.1= 8.0 bring powerful code navigation to your editor. Built on years of compiler work, it's a game-changer for large codebases. =E2=80=A2 *Starting to bridge the gap between Merlin and OCaml LSP:* New = LSP queries for type enclosing, documentation, and more. We=E2=80=99re wor= king towards consistent, feature-rich experience across all editors powered by OCaml LSP. *Releases:* =E2=80=A2 [opam 2.2.0~beta3] =E2=80=A2 [opam 2.2.0~rc1] =E2=80=A2 [opam 2.2.0] =E2=80=A2 [opam 2.2.1] =E2=80=A2 [Dune 3.16.0] =E2=80=A2 opam-publish 2.3.1 =E2=80=A2 [Merlin 5.1] =E2=80=A2 [Merlin 4.16] =E2=80=A2 [Merlin 4.15] =E2=80=A2 [OCaml LSP 1.19.0] =E2=80=A2 [OCaml LSP 1.18.0] =E2=80=A2 [Ppxlib 0.33.0] [previous editions] [roadmap] [Developer Preview Program] [See it in action] [Native Windows support is here] [Check out the RFCs] [opam 2.2.0~beta3] [opam 2.2.0~rc1] [opam 2.2.0] [opam 2.2.1] [Dune 3.16.0] [Merlin 5.1] [Merlin 4.16] [Merlin 4.15] [OCaml LSP 1.19.0] [OCaml LSP 1.18.0] [Ppxlib 0.33.0] *Dune Package Management ([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 *Contributed by:* @rgrinberg (Tarides), @Leonidas-from-XIV (Tarides), @gridbugs (Tarides), @Alizter *Synopsis:* Integrating package management into Dune, making it the sole tool needed for OCaml development. This unification eliminates installation time (just download Dune's pre-built binary), automates external tool management (e.g., for `dune fmt' or `dune ocamllsp'), and significantly reduces build times through caching (packages and compiler are built only once across projects). *Summary:* Following our announcement of reaching the Minimal Viable Product (MVP) stage for Dune's package management in the [last newsletter], we've made substantial progress on our stated goals. As promised, we've shifted our focus from prototyping to user testing and refining the developer experience (DX). The Developer Preview Program (see [latest update]) has expanded significantly from its early stages. We've conducted approximately 60 developer interviews, representing a diverse cross-section of the OCaml community. The interviewees include both newcomers and experienced OCaml users. Notably, about 40% of participants have over 3 years of OCaml experience, while 35% are relative newcomers with less than a year of experience. The majority come from Linux and macOS environments, with participants representing various sectors including tech companies, research institutions, and independent developers. These sessions have provided crucial feedback and driven improvements. This extensive user testing has paid off, with the Net Promoter Score jumping from +9 to an estimated +28 - a clear sign that the community is excited about the improvements we've made. Key developments since the last update include: =E2=80=A2 A nightly binary distribution of Dune with package management enabled, which will be made available publicly in the coming weeks. =E2=80=A2 We started work on automated handling of developer tools (ocamlformat, ocamllsp, odoc) =E2=80=93 users will be able run `dune fm= t', or `dune ocamllsp', and Dune will take care of installing OCamlFormat and OCaml LSP automatically if they are not available. =E2=80=A2 Implementation of automatic dependency locking when project=E2= =80=99s dependency changes =E2=80=93 you can now run Dune in watch mode and let= it install your dependencies without any intervention after updating your dune-project =E2=80=A2 We=E2=80=99ve enabled Dune cache by default, which works with y= our package dependencies. With this change, Dune will not recompile dependencies more than once when building new projects, including the compiler! The team has moved beyond just testing with OCaml.org and Bonsai, now conducting broader compatibility tests across the opam repository. Initial results show about 50% of packages can be authored using Dune with package management, with ongoing efforts to increase the coverage (we expect resolution of a few issues on a select few foundational packages to significantly increase that percentage). In line with the commitment to prepare for a first release, the team plans to launch a public beta in the coming weeks. This marks a significant step from our current private Developer Preview testing with selected beta testers, to a broader community release. Stay tuned for the upcoming announcement, and in the meantime, have a look a the demos and some enthusiastic messages from beta testers: =E2=80=A2 Demo on [Mastodon] or [X] =E2=80=A2 =E2=80=9CJust did the dune package management preview, it=E2=80= =99s looking very sharp=E2=80=9D =E2=80=93 [https://x.com/ckarmstrong/status/183093715643= 4747566] =E2=80=A2 =E2=80=9CReally looking forward to this! No more switches, no m= ore opam, just dune behaving like a modern package manager. Having played around with it, it's just so so nice. The focus on DX really makes me hopeful about OCaml's future.=E2=80=9D =E2=80=93 [https://x.com/synecdokey/status/1825533523283079474] *Activities:* =E2=80=A2 Implemented workaround to avoid unstable compilers =E2=80=93 [ocaml/dune#10668] =E2=80=A2 Added support for multiple checksums ([ocaml/dune#10624], [ocaml/dune#10791]) =E2=80=A2 Began upstreaming the Dune toolchain feature ([ocaml/dune#10639= ], [ocaml/dune#10719]) =E2=80=A2 Added implicit relock when dependencies change =E2=80=93 [ocaml= /dune#10641] =E2=80=A2 Improved dependency solving and constraint handling ([ocaml/dune#10726]) =E2=80=A2 Added developer preview features and configuration options ([ocaml/dune#10627]) =E2=80=A2 Implemented progress indicators for package builds and lockfile generation ([ocaml/dune#10802], [ocaml/dune#10803]) =E2=80=A2 Improved error messages and logging ([ocaml/dune#10662]) =E2=80=A2 Created extensive test suite for new package management features ([ocaml/dune#10798]) =E2=80=A2 Resolved issues with building specific packages (e.g., seq, lwt) ([ocaml/dune#10788], [ocaml/dune#10839]) =E2=80=A2 Enable cache on fetch actions for faster builds ([ocaml/dune#10= 850]) =E2=80=A2 Improved handling of dev tools like ocamlformat ([ocaml/dune#10= 647]) =E2=80=A2 Developed tools for testing package compatibility coverage on opam-repository [W4] [last newsletter] [latest update] [Mastodon] [X] [https://x.com/ckarmstrong/status/1830937156434747566] [https://x.com/synecdokey/status/1825533523283079474] [ocaml/dune#10668] [ocaml/dune#10624] [ocaml/dune#10791] [ocaml/dune#10639] [ocaml/dune#10719] [ocaml/dune#10641] [ocaml/dune#10726] [ocaml/dune#10627] [ocaml/dune#10802] [ocaml/dune#10803] [ocaml/dune#10662] [ocaml/dune#10798] [ocaml/dune#10788] [ocaml/dune#10839] [ocaml/dune#10850] [ocaml/dune#10647] *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 *Contributed by:* @rjbou (OCamlPro), @kit-ty-kate (Ahrefs), @dra27 (Tarides), @AltGr (OCamlPro) *Synopsis:* Releasing opam 2.2 with native Windows support to enhance OCaml's viability on Windows, making the official `opam-repository' usable on Windows and encouraging more Windows-friendly packages. *Summary:* The release of opam 2.2.0, [announced on Discuss] early July, marks a significant milestone for the OCaml ecosystem. This version brings native support for both the opam client and compiler packages in `opam-repository' on Windows, opening new possibilities for OCaml development on this platform. opam 2.2.0 officially supports Cygwin and is compatible with MSYS2. Windows users can now run `opam init' in their preferred console for a guided setup, resulting in a fully functional OCaml environment. This release represents the culmination of a [multi-year effort] involving extensive contributions from the community. The OCaml ecosystem is already adapting to this new capability. A [CI check for Windows compilation] has been added to opam-repository, and the [GitHub Action ocaml/setup-ocaml] now uses opam 2.2.0, facilitating OCaml development on Windows in GitHub projects. Community members are actively working to improve Windows compatibility across the ecosystem. Notable efforts include [Hugo Heuzard's] work on [OCamlBuild] and several other [Windows-related PRs]. We encourage package authors to set up Windows CI for their projects and address Windows-related issues. This collective effort will be crucial in expanding OCaml's reach and usability on the Windows platform. *Activities:* =E2=80=A2 Opam binary: =E2=80=A3 Fixed issues with `opam init' on Windows =E2=80=93 [ocaml/opa= m#5991], [ocaml/opam#5992], [ocaml/opam#5993], [ocaml/opam#5994], [ocaml/opam#5995], [ocaml/opam#5996], [ocaml/opam#5997], [ocaml/opam#5998], [ocaml/opam#6000] =E2=80=A3 Improved status display during slow operations on Windows =E2= =80=93 [ocaml/opam#5977] =E2=80=A3 Enabled opam to work with Windows usernames containing spaces= =E2=80=93 [ocaml/opam#5457] =E2=80=A3 Fixed `opam init -yn' to handle menus in the release candidat= e =E2=80=93 [ocaml/opam#6033] =E2=80=A3 Updated PowerShell script for installing opam from GitHub releases: [ocaml/opam#5906] =E2=80=A3 Fixed hang issue with `setup-ocaml' and depexts =E2=80=93 [ocaml/opam#6046] =E2=80=A2 Update opam-repository to be compatible with Windows: =E2=80=A3 Updated `opam-repository' Windows CI =E2=80=93 [ocaml/opam-repository#26081], [ocaml/opam-repository#26073], [ocaml/opam-repository#26080] =E2=80=A3 Added backport of MSVC in OCaml-variants.5.2.0+msvc =E2=80=93 [ocaml/opam-repository#26082] =E2=80=A3 Updated native Cygwin depexts =E2=80=93 [ocaml/opam-repositor= y#26130] =E2=80=A3 Updated opam-repository with Windows-specific package informa= tion: =E2=80=A3 Added Windows compiler packages ([ocaml/opam-repository#258= 61]) =E2=80=A3 Fixed issues with OCaml variants on Windows ([ocaml/opam-repository#26033]) =E2=80=A3 Updated and released mingw-w64-shims.0.2.0 to fix setup-ocaml issues ([ocaml/opam-repository#26123]) =E2=80=A2 Released stable version of opam 2.2.0 with full Windows support= =F0=9F=8E=89 ([announcement]) [W5] [announced on Discuss] [multi-year effort] [CI check for Windows compilation] [GitHub Action ocaml/setup-ocaml] [Hugo Heuzard's] [OCamlBuild] [Windows-related PRs] [ocaml/opam#5991] [ocaml/opam#5992] [ocaml/opam#5993] [ocaml/opam#5994] [ocaml/opam#5995] [ocaml/opam#5996] [ocaml/opam#5997] [ocaml/opam#5998] [ocaml/opam#6000] [ocaml/opam#5977] [ocaml/opam#5457] [ocaml/opam#6033] [ocaml/opam#5906] [ocaml/opam#6046] [ocaml/opam-repository#26081] [ocaml/opam-repository#26073] [ocaml/opam-repository#26080] [ocaml/opam-repository#26082] [ocaml/opam-repository#26130] [ocaml/opam-repository#25861] [ocaml/opam-repository#26033] [ocaml/opam-repository#26123] [announcement] *Upgrading OCaml Package Documentation with Odoc 3.0 ([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 *Contributed by:* @jonludlam (Tarides), @julow (Tarides), @panglesd (Tarides), @EmileTrotignon (Tarides), Luke Maurer (Jane Street) *Synopsis:* Upgrading OCaml package documentation experience with odoc 3, featuring improved navigation, cross-package referencing, media support, and more. This upgrade aims to improve the documentation experience both locally and on OCaml.org, encouraging higher-quality package documentation. *Summary:* Following the completion and community review of the RFCs for odoc 3.0, we've made significant strides in implementing the new design and features. Our progress over the past few months has brought us close to a complete implementation of the odoc 3.0 feature set. As we finalize development and approach the first release, our focus is shifting towards integration with the rest of the ecosystem. Key Developments in the past months include: =E2=80=A2 Adding new options to the `odoc' CLI to begin the implementatio= n of the `odoc' 3 CLI =E2=80=A2 Implementing new syntax such as path-references =E2=80=A2 Developing the global sidebar with a TOC featuring standalone p= ages and package module hierarchy As we near completion of the core odoc 3.0 feature set, our focus is shifting towards finalizing integration with Dune and the OCaml.org documentation pipeline. We're excited to get all of these improvements in your hands and get your feedback on the new documentation experience. Stay tuned for announcements regarding testing opportunities and the upcoming release of odoc 3.0! *Activities:* =E2=80=A2 Added `path-references' lookup functionality =E2=80=93 [ocaml/o= doc#1150] =E2=80=A2 Added the `--current-package' option =E2=80=93 [ocaml/odoc#1151] =E2=80=A2 Fixed hierarchical pages being given wrong parent ID =E2=80=93 [ocaml/odoc#1148] =E2=80=A2 Parsing of `path-references' to pages and modules ([ocaml/odoc#1142]) =E2=80=A2 Support for assets and media in documentation ([ocaml/odoc#1184= ]) =E2=80=A2 Implemented "Global" sidebar feature ([ocaml/odoc#1145]) =E2=80=A2 Added support for external pages and non-package documentation ([ocaml/odoc#1183]) =E2=80=A2 Improved CSS for better visual presentation ([ocaml/odoc#1159]) =E2=80=A2 Add a marshalled output for index generation ([ocaml/odoc#1084]) =E2=80=A2 Implemented Voodoo/Dune driver for improved integration ([ocaml/odoc#1168]) =E2=80=A2 Added frontmatter support to mld pages ([ocaml/odoc#1187]) =E2=80=A2 Improved breadcrumbs to show packages and libraries ([ocaml/odoc#1190]) [W25] [ocaml/odoc#1150] [ocaml/odoc#1151] [ocaml/odoc#1148] [ocaml/odoc#1142] [ocaml/odoc#1184] [ocaml/odoc#1145] [ocaml/odoc#1183] [ocaml/odoc#1159] [ocaml/odoc#1084] [ocaml/odoc#1168] [ocaml/odoc#1187] [ocaml/odoc#1190] *Project-Wide References in OCaml Editors ([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 *Contributed by:* @vds (Tarides) *Synopsis:* Introducing project-wide reference features in Merlin and OCaml LSP to enhance code navigation and refactoring capabilities, bringing OCaml's editor experience in line with other modern programming languages. *Summary:* As [announced] in June, Merlin project-wide references is now available in Merlin 5.1 and the preview of OCaml LSP 1.18.0. Users of LSP-powered editors (like VSCode with the OCaml Platform extension) and classic Emacs and Vim plugins can now query project-wide references of OCaml terms. This requires building the index with the new Dune alias `@ocaml-index'. This release represents the culmination of a multiyear effort by the Merlin team, including extensive work on the compiler to provide the necessary information for implementing this feature in Merlin. We're thrilled to share this feature with the community and look forward to your feedback. While the feature should work well in most cases, we're aware of some limitations. Our next steps include adding support for interface files and module paths. Stay tuned! *Activities:* =E2=80=A2 Completed work on incremental occurrences indexation and related Dune rules =E2=80=93 [ocaml/dune#10422] =E2=80=A2 Fixed issues with querying from interface files =E2=80=93 [ocaml/merlin#1779], [ocaml/merlin#1781] =E2=80=A2 Improved behavior when cursor is on label/constructor declarati= ons =E2=80=93 [ocaml/merlin#1785] =E2=80=A2 Released `Merlin.5.1-502', `ocaml-index.1.0', and a new preview= of `ocaml-lsp-server' with project-wide occurrences support =E2=80=93 [ocaml/opam-repository#26114] =E2=80=A2 Announced the release on Discuss =E2=80=93 [Project-wide occurr= ences in Merlin and LSP] =E2=80=A2 Wrote a [wiki page] for project-wide occurrences =E2=80=A2 Updated [the Merlin website] =E2=80=A2 Updated the [platform changelog] =E2=80=A2 Improved handling of label and constructor declarations ([ocaml/merlin#1785]) =E2=80=A2 Contributed compiler improvements: =E2=80=A2 Implemented distinct unique identifiers for implementations and interfaces ([ocaml/ocaml#13286]) =E2=80=A2 Developed a system for linking unique identifiers of declaratio= ns ([ocaml/ocaml#13308]) =E2=80=A2 Contributed to improvements in longident locations ([ocaml/ocaml#13302]) [W19] [announced] [ocaml/dune#10422] [ocaml/merlin#1779] [ocaml/merlin#1781] [ocaml/merlin#1785] [ocaml/opam-repository#26114] [Project-wide occurrences in Merlin and LSP] [wiki page] [the Merlin website] [platform changelog] [ocaml/ocaml#13286] [ocaml/ocaml#13308] [ocaml/ocaml#13302] *Bridging the Gap Between Merlin and OCaml LSP ([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 *Contributed by:* @xvw (Tarides), @vds (Tarides) *Synopsis:* Working towards feature parity between Merlin and OCaml LSP to provide a consistent, feature-rich development experience across all editors, making OCaml LSP the comprehensive backend for OCaml editor support. *Summary:* In June, we started work on bridging the gap between OCaml LSP and Merlin. We've started with exposing Merlin's type-enclosing request in OCaml LSP. The feature is now available as `ocamllsp/typeEnclosing' and we will work on editor integration next. As a reminder, Merlin's `type-enclosing' feature allows users to get the type of the identifier under the cursor. It highlights the identifier and displays its type. Users can climb the typed-tree to display the type of larger expressions surrounding the cursor. Since June, we=E2=80=99ve worked on a number of new LSP queries and code actions, including: =E2=80=A2 A custom `ocamllsp/getDocumentation' query to request the `odoc' documentation =E2=80=A2 A custom `ocamllsp/construct' query to browse and fill typed ho= les (`_') =E2=80=A2 A code-action for syntactic and semantic movement shortcuts bas= ed on Merlin's Jump command *Activities* =E2=80=A2 Added custom queries for type enclosing and documentation retri= eval: =E2=80=A3 Type enclosing query ([ocaml/ocaml-lsp#1304]) =E2=80=A3 Documentation query ([ocaml/ocaml-lsp#1336]) =E2=80=A2 Created a custom construct query ([ocaml/ocaml-lsp#1348]) =E2=80=A2 Implemented semantic and syntactic movement shortcuts ([ocaml/ocaml-lsp#1364]) =E2=80=A2 Backported and released Merlin 4.16 with necessary commands ([opam-repository PR]) =E2=80=A2 Refactored usage of `Typedtree' from `ocaml-lsp' to `merlin-lib' ([ocaml/merlin#1811], [ocaml/merlin#1812]) [W19] [ocaml/ocaml-lsp#1304] [ocaml/ocaml-lsp#1336] [ocaml/ocaml-lsp#1348] [ocaml/ocaml-lsp#1364] [opam-repository PR] [ocaml/merlin#1811] [ocaml/merlin#1812] First alpha release of OCaml 5.3.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 Archive: octachron 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 Four months after the release of OCaml 5.2.0, the set of new features for the future version 5.3.0 of OCaml has been frozen. We are thus happy to announce the first alpha release for OCaml 5.3.0. This alpha version is here to help fellow hackers join us early in our bug hunting and opam ecosystem fixing fun (see below for the installation instructions). More information about the whole release process is now available in the [compiler repository]. The progresses on stabilizing the ecosystem are tracked on the [opam readiness for 5.3.0 meta-issue]. The full release is expected around November, see the [new prospective calendar] for more information. If you find any bugs, please report them on [OCaml's issue tracker]. If you are interested in the ongoing list of new features and bug fixes, the updated change log for OCaml 5.3.0 is available [on GitHub]. [compiler repository] [opam readiness for 5.3.0 meta-issue] [new prospective calendar] [OCaml's issue tracker] [on GitHub] Installation Instructions =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=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 base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create 5.3.0~alpha1 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 The source code for the alpha is also available at these addresses: =E2=80=A2 [GitHub] =E2=80=A2 [OCaml archives at Inria] [GitHub] [OCaml archives at Inria] =E2=97=8A Fine-Tuned Compiler Configuration If you want to tweak the configuration of the compiler, you can switch to the option variant with: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create ocaml-variants.5.3.0~alpha1+op= tions =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 where `option_list' is a space separated list of `ocaml-option-*' packages. For instance, for a flambda and no-flat-float-array switch: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam switch create 5.3.0~alpha1+flambda+nffa ocaml-variants.5.3= .0~alpha1+options ocaml-option-flambda ocaml-option-no-flat-float-array =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 All available options can be listed with `opam search ocaml-option'. Ascend - Dungeon RPG for your terminal =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: eir 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 Announcing the first release of *[ascend]*! Venture into the depths to retrieve the stolen artifact, and hopefully escape with your life=E2=80=A6 NetHack lite. *Get it via:* =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam install ascend =E2=94=82 ascend =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Rievax the Revelator is recruiting you for some "manual testing". [ascend] first release of ppx_deriving_jsonschema =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Louis Roch=C3=A9 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 It is my pleasure to announce the first release of [ppx_deriving_jsonschema]. Source repo is This small ppx should help you generate a (hopefully valid) json schema from an ocaml type. Generally the derivation tries to produce a schema which looks natural, and that would also be compatible with the existing derivers for json out there. Basically you should be able to change the annotation to `[@@deriving jsonschema, yojson]' (or `json' instead of `yojson') and to read/write json values that are matching the schema. There is a bit of tension on things like variants, which are represented as arrays by ppx_yojson_conv and ppx_deriving_yojson, but represented as enums by ppx_deriving_jsonschema. I plan to add a way to switch between the two behaviors soon. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 type address =3D { =E2=94=82 street: string; =E2=94=82 city: string; =E2=94=82 zip: string; =E2=94=82 } [@@deriving jsonschema] =E2=94=82=20 =E2=94=82 type t =3D { =E2=94=82 name: string; =E2=94=82 age: int; =E2=94=82 email: string option; =E2=94=82 address: address; =E2=94=82 } [@@deriving jsonschema] =E2=94=82=20 =E2=94=82 let schema =3D Ppx_deriving_jsonschema_runtime.json_schema t_js= onschema =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Will be turned into this schema =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 { =E2=94=82 "$schema": "https://json-schema.org/draft/2020-12/schema", =E2=94=82 "type": "object", =E2=94=82 "properties": { =E2=94=82 "address": { =E2=94=82 "type": "object", =E2=94=82 "properties": { =E2=94=82 "zip": { "type": "string" }, =E2=94=82 "city": { "type": "string" }, =E2=94=82 "street": { "type": "string" } =E2=94=82 }, =E2=94=82 "required": [ "zip", "city", "street" ] =E2=94=82 }, =E2=94=82 "email": { "type": "string" }, =E2=94=82 "age": { "type": "integer" }, =E2=94=82 "name": { "type": "string" } =E2=94=82 }, =E2=94=82 "required": [ "address", "age", "name" ] =E2=94=82 } =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Some more advanced functionalities are documented in the readme. Please let me know if you see any important feature missing, if there are bugs, or if you have ideas of improvements. This project was originally started during a Ahrefs dojo, in parallel to the ICFP conference in Milan, as a way to learn how to write a ppx. I can't recommend enough to get going. [ppx_deriving_jsonschema] opam 2.3.0~alpha1 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=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 As mentioned in [our talk at the OCaml Workshop 2024], we decided to switch to a time-based release cycle (every 6 months), starting with opam 2.3. As promised, we are happy to announce the first alpha release of opam 2.3.0. [our talk at the OCaml Workshop 2024] What's new? =E2=95=8C=E2=95=8C=E2=95=8C=E2=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 When loading a repository, *opam now ignores files in packages' `files/' directories which aren't listed in the `extra-files' field* of the opam file. :warning: If you maintain an opam repository, please read our [blog post] to make sure your repository stays compatible. =E2=80=A2 *Packages requiring an unsupported version of opam are now mark= ed unavailable*, instead of causing a repository error. This means an opam repository can now allow smoother upgrade in the future =E2=80=A2 *`opam list --latests-only'*: a new option to list only the lat= est versions of packages =E2=80=A2 *`--verbose-on'*: a new option to enable verbose output for specified package names. =E2=80=A2 *`opam switch import --deps-only'*: a new option to install onl= y the dependencies of the root packages listed in the opam switch export file =E2=80=A2 *`opam switch list-available'* will now not display compilers flagged with `avoid-version~/~deprecated' unless `--all' is given, meaning that the "trunk" build of OCaml no longer appears to be the latest version =E2=80=A2 *The `builtin-0install' solver was improved* and should now be capable of being your default solver instead of `builtin-mccs+glpk'. If you wish to give it a try, simply call `opam option solver=3Dbuiltin-0install' =E2=80=A2 Most of the *unhelpful conflict messages were fixed* :flashligh= t: Various performance and other improvements were made and bugs were fixed. :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] Try it! =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C The upgrade instructions are unchanged: For Unix systems =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.3.0~alpha1" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 or from PowerShell for Windows systems =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/ocaml/opam/master/shell/install.ps1) } -Version 2.3.0~alpha1" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Please report any issues to [the bug-tracker]. [the 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 [Upcoming OCaml Events (Sep 22, 2024 and onwards)] =E2=80=A2 [Eio From a User's Perspective: An Interview With Simon Grondin] =E2=80=A2 [Introducing the `odoc' Cheatsheet: Your Handy Guide to OCaml Documentation] [the ocaml.org blog] [Upcoming OCaml Events (Sep 22, 2024 and onwards)] [Eio From a User's Perspective: An Interview With Simon Grondin] [Introducing the `odoc' Cheatsheet: Your Handy Guide to OCaml Documentation] 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 September 17 to 24, 2= 024.

ocaml-trace 0.8

Simon Cruanes announced

ocaml-t= race 0.8 was just released. It features a new trace collector for multi= process programs, and a new library, trace.subscriber, for han= dling events in a more modular, compositional way.

For background, trace is a lightweight library that can be use= d to instrument your code (libraries or executable), either by hand or usin= g ppx_trace, and offers a collector abstraction t= o actually collect/handle/store/write the trace events somewhere. The overh= ead when no collector is installed is low. There are also several collector= s in trace-tef, trace-fuchsia, and (in a separate= repo) tracy-client. See the github repo for more details.

qcheck-lin and qcheck-stm 0.2

Jan Midtgaard announced

I'm happy to share the 0.4 release of qcheck-lin, qcheck= -stm, and qcheck-multicoretests-util: https://githu= b.com/ocaml-multicore/multicoretests/releases/tag/0.4

The testing libraries are useful for testing your OCaml code for parallelis= m safety:

  • qcheck-lin offer a low effort approach, requiring little m= ore than type signatures of the target interface (example above)
  • qcheck-stm offers stronger correctness guarantees by compa= ring the observed behaviour to a functional model description - under both = sequential and parallel usage.

The 0.4 release brings two new "stress test" functions and also adjusts the= cmd list distribution of STM_sequential:

  • #415: Remove --verbose in internal mutable_set_v5 expect test to avoid a test failure on a slow machine
  • #443: Add Lin_domain.stress_test as a lighter stress test,= not requiring an interleaving search.
  • #462: Add STM_domain.stress_test_par, similar to Lin= _domain.stress_test for STM models.
  • #472: Switch arb_cmds to use an exponential distribution w= ith a mean of 10, avoiding lists of up to 10000 cmds in STM_sequentia= l (reported by @nikolaushuber).

Happy testing! :smiley:

3rd editor tooling dev-meeting: 26th of September =F0=9F=A7=99=

vds announced

The meeting is back! We are organizing the next one on next Thursday, the 2= 6th of September at 5pm CEST (sorry, still no timezone rotation, but we pro= bably will for the next one). Whether you are a long time maintainer, an oc= casional contributor, a new comer, or simply a curious passer-by, please fe= el free to attend!=20

:sparkles: For this session, @jchavarri is going to present Melange, a toolchain that compiles o= caml/reason to javascript, and its integration in the tooling ecosystem.

:clipboard: Meeting agenda:

  • A tour-de-table to allow the participants that wish to do so to present= themselves and mention issues / prs they are interested in.
  • Talk and Q&A
  • Discuss issues and pull requests that were tagged in advance or mention= ed during the tour-de-table.

We=E2=80=99re looking forward to meeting you!

Meeting link: https://meet= .google.com/nzt-owbh-yoo

Previous meeting notes are available in Merlin=E2=80=99s repository wiki<= /a>.

OCaml Platform Newsletter: June-August 2024

Thibaut Mattio announced

Welcome to the twelfth edition of the OCaml Platform newsletter!

In this June-August 2024 edition, we are excited to bring you the latest on= the OCaml Platform, continuing our tradition of highlighting recent develo= pments as seen in previous editions. To understand the direction we're headed, espec= ially regarding development workflows and user experience improvements, che= ck out our roadmap.

Highlights:

  • Dune package management soon in public beta: Developer Pre= view Program expands with 60+ interviews, NPS soaring from +9 to +28! P= ublic beta coming soon with exciting features like automatic dependency loc= king and dev tool management. See it in action!
  • Opam 2.2 is out: Native Windows support is here! Seamless setup wit= h opam init, opam-repository compatible with Wind= ows. OCaml on Windows is now a reality.
  • Odoc 3.0 gets close to a release: New features like global sideb= ars and media support are ready in odoc. Integration with Dune and OCaml.or= g pipeline in progress - get ready to test the new documentation experience= soon! Check out= the RFCs.
  • Project-wide references is live: Merlin 5.1 and OCaml LSP 1.18.0= bring powerful code navigation to your editor. Built on years of compiler = work, it's a game-changer for large codebases.
  • Starting to bridge the gap between Merlin and OCaml LSP: New LSP= queries for type enclosing, documentation, and more. We=E2=80=99re working= towards consistent, feature-rich experience across all editors powered by = OCaml LSP.

Releases:

Dune Package Management (W4)

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

Synopsis: Integrating package management into Dune, making it the so= le tool needed for OCaml development. This unification eliminates installat= ion time (just download Dune's pre-built binary), automates external tool m= anagement (e.g., for dune fmt or dune ocamllsp), = and significantly reduces build times through caching (packages and compile= r are built only once across projects).

Summary:

Following our announcement of reaching the Minimal Viable Product (MVP) sta= ge for Dune's package management in the last newsletter, we= 've made substantial progress on our stated goals. As promised, we've shift= ed our focus from prototyping to user testing and refining the developer ex= perience (DX).

The Developer Preview Program (see latest update) has expanded si= gnificantly from its early stages. We've conducted approximately 60 develop= er interviews, representing a diverse cross-section of the OCaml community.= The interviewees include both newcomers and experienced OCaml users. Notab= ly, about 40% of participants have over 3 years of OCaml experience, while = 35% are relative newcomers with less than a year of experience. The majorit= y come from Linux and macOS environments, with participants representing va= rious sectors including tech companies, research institutions, and independ= ent developers.

These sessions have provided crucial feedback and driven improvements. This= extensive user testing has paid off, with the Net Promoter Score jumping f= rom +9 to an estimated +28 - a clear sign that the community is excited abo= ut the improvements we've made.

Key developments since the last update include:

  • A nightly binary distribution of Dune with package management enabled, = which will be made available publicly in the coming weeks.
  • We started work on automated handling of developer tools (ocamlformat, = ocamllsp, odoc) – users will be able run dune fmt, or <= code>dune ocamllsp, and Dune will take care of installing OCamlForma= t and OCaml LSP automatically if they are not available.
  • Implementation of automatic dependency locking when project=E2=80=99s d= ependency changes – you can now run Dune in watch mode and let it in= stall your dependencies without any intervention after updating your dune-p= roject
  • We=E2=80=99ve enabled Dune cache by default, which works with your pack= age dependencies. With this change, Dune will not recompile dependencies mo= re than once when building new projects, including the compiler!

The team has moved beyond just testing with OCaml.org and Bonsai, now condu= cting broader compatibility tests across the opam repository. Initial resul= ts show about 50% of packages can be authored using Dune with package manag= ement, with ongoing efforts to increase the coverage (we expect resolution = of a few issues on a select few foundational packages to significantly incr= ease that percentage).

In line with the commitment to prepare for a first release, the team plans = to launch a public beta in the coming weeks. This marks a significant step = from our current private Developer Preview testing with selected beta teste= rs, to a broader community release.

Stay tuned for the upcoming announcement, and in the meantime, have a look = a the demos and some enthusiastic messages from beta testers:

Activities:

Native Support for Windows in opam 2.2 (W5)

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

Synopsis: Releasing opam 2.2 with native Windows support to enhance = OCaml's viability on Windows, making the official opam-repository usable on Windows and encouraging more Windows-friendly packages.

Summary:

The release of opam 2.2.0, announced on Discuss early July, marks a significan= t milestone for the OCaml ecosystem. This version brings native support for= both the opam client and compiler packages in opam-repository= on Windows, opening new possibilities for OCaml development on this platfo= rm.

opam 2.2.0 officially supports Cygwin and is compatible with MSYS2. Windows= users can now run opam init in their preferred console for a = guided setup, resulting in a fully functional OCaml environment. This relea= se represents the culmination of a multi-year effort involving extens= ive contributions from the community.

The OCaml ecosystem is already adapting to this new capability. A CI check for Windo= ws compilation has been added to opam-repository, and the GitHub Action ocaml= /setup-ocaml now uses opam 2.2.0, facilitating OCaml development on Win= dows in GitHub projects.

Community members are actively working to improve Windows compatibility acr= oss the ecosystem. Notable efforts include Hugo Heuzard's work on OCamlBuild and several other Windows-related PRs.

We encourage package authors to set up Windows CI for their projects and ad= dress Windows-related issues. This collective effort will be crucial in exp= anding OCaml's reach and usability on the Windows platform.

Activities:

Upgrading OCaml Package Documentation with Odoc 3.= 0 (W25)

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

Synopsis: Upgrading OCaml package documentation experience with odoc= 3, featuring improved navigation, cross-package referencing, media support= , and more. This upgrade aims to improve the documentation experience both = locally and on OCaml.org, encouraging higher-quality package documentation.

Summary:

Following the completion and community review of the RFCs for odoc 3.0, we'= ve made significant strides in implementing the new design and features. Ou= r progress over the past few months has brought us close to a complete impl= ementation of the odoc 3.0 feature set. As we finalize development and appr= oach the first release, our focus is shifting towards integration with the = rest of the ecosystem.

Key Developments in the past months include:

  • Adding new options to the odoc CLI to begin the implementa= tion of the odoc 3 CLI
  • Implementing new syntax such as path-references
  • Developing the global sidebar with a TOC featuring standalone pages and= package module hierarchy

As we near completion of the core odoc 3.0 feature set, our focus is shifti= ng towards finalizing integration with Dune and the OCaml.org documentation= pipeline. We're excited to get all of these improvements in your hands and= get your feedback on the new documentation experience. Stay tuned for anno= uncements regarding testing opportunities and the upcoming release of odoc = 3.0!

Activities:

Project-Wide References in OCaml Editors (W19)=

Contributed by: @vds (Tarides)

Synopsis: Introducing project-wide reference features in Merlin and = OCaml LSP to enhance code navigation and refactoring capabilities, bringing= OCaml's editor experience in line with other modern programming languages.

Summary:

As announced in June, Merlin project-wide references = is now available in Merlin 5.1 and the preview of OCaml LSP 1.18.0. Users o= f LSP-powered editors (like VSCode with the OCaml Platform extension) and c= lassic Emacs and Vim plugins can now query project-wide references of OCaml= terms. This requires building the index with the new Dune alias @oca= ml-index.

This release represents the culmination of a multiyear effort by the Merlin= team, including extensive work on the compiler to provide the necessary in= formation for implementing this feature in Merlin.

We're thrilled to share this feature with the community and look forward to= your feedback.

While the feature should work well in most cases, we're aware of some limit= ations. Our next steps include adding support for interface files and modul= e paths. Stay tuned!

Activities:

Bridging the Gap Between Merlin and OCaml LSP (W19)=

Contributed by: @xvw (Tarides), @vds (Tarides)

Synopsis: Working towards feature parity between Merlin and OCaml LS= P to provide a consistent, feature-rich development experience across all e= ditors, making OCaml LSP the comprehensive backend for OCaml editor support.

Summary:

In June, we started work on bridging the gap between OCaml LSP and Merlin. = We've started with exposing Merlin's type-enclosing request in OCaml LSP. T= he feature is now available as ocamllsp/typeEnclosing and we w= ill work on editor integration next.

As a reminder, Merlin's type-enclosing feature allows users to= get the type of the identifier under the cursor. It highlights the identif= ier and displays its type. Users can climb the typed-tree to display the ty= pe of larger expressions surrounding the cursor.

Since June, we=E2=80=99ve worked on a number of new LSP queries and code ac= tions, including:

  • A custom ocamllsp/getDocumentation query to request the odoc documentation
  • A custom ocamllsp/construct query to browse and fill typed= holes (_)
  • A code-action for syntactic and semantic movement shortcuts based on Me= rlin's Jump command

Activities

First alpha release of OCaml 5.3.0

octachron announced

Four months after the release of OCaml 5.2.0, the set of new features for t= he future version 5.3.0 of OCaml has been frozen. We are thus happy to anno= unce the first alpha release for OCaml 5.3.0.

This alpha version is here to help fellow hackers join us early in our bug = hunting and opam ecosystem fixing fun (see below for the installation instr= uctions). More information about the whole release process is now available= in the compiler repository.

The progresses on stabilizing the ecosystem are tracked on the opam readiness for 5.= 3.0 meta-issue.

The full release is expected around November, see the new prospective c= alendar for more information.

If you find any bugs, please report them on OCaml's issue tracker.

If you are interested in the ongoing list of new features and bug fixes, th= e updated change log for OCaml 5.3.0 is available on GitHub.

Installation Instructions

The base compiler can be installed as an opam switch with the following com= mands on opam 2.1 and later:

opam update
opam switch create 5.3.0~alpha1

The source code for the alpha is also available at these addresses:

  • Fine-Tuned Compiler Configuration

    If you want to tweak the configuration of the compiler, you can switch to t= he option variant with:

    opam update
    opam switch create <switch_name> ocaml-variants.5.3.0~alpha1+options =
    <option_list>
    

    where option_list is a space separated list of ocaml-opt= ion-* packages. For instance, for a flambda and no-flat-float-array = switch:

    opam switch create 5.3.0~alpha1+flambda+nffa ocaml-variants.5.3.0~alpha1+op=
    tions ocaml-option-flambda ocaml-option-no-flat-float-array
    

    All available options can be listed with opam search ocaml-option.

Ascend - Dungeon RPG for your terminal

eir announced

Announcing the first release of ascend!

Venture into the depths to retrieve the stolen artifact, and hopefully esca= pe with your life… NetHack lite.

Get it via:

opam install ascend
ascend

Rievax the Revelator is recruiting you for some "manual testing".

first release of ppx_deriving_jsonschema

Louis Roch=C3=A9 announced

It is my pleasure to announce the first release of ppx_deriving_jsonschema. Source = repo is http= s://github.com/ahrefs/ppx_deriving_jsonschema/

This small ppx should help you generate a (hopefully valid) json schema fro= m an ocaml type.=20

Generally the derivation tries to produce a schema which looks natural, and= that would also be compatible with the existing derivers for json out ther= e. Basically you should be able to change the annotation to [@@derivi= ng jsonschema, yojson] (or json instead of yojson= ) and to read/write json values that are matching the schema. There = is a bit of tension on things like variants, which are represented as array= s by ppx_yojson_conv and ppx_deriving_yojson, but represented as enums by p= px_deriving_jsonschema. I plan to add a way to switch between the two behav= iors soon.

type address =3D {
  street: string;
  city: string;
  zip: string;
} [@@deriving jsonschema]

type t =3D {
  name: string;
  age: int;
  email: string option;
  address: address;
} [@@deriving jsonschema]

let schema =3D Ppx_=
deriving_jsonschema_runtime.json_schema t_jsonschema

Will be turned into this schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "address": {
      "type": "object",
      "properties": {
        "zip": { "type": "string" },
        "city": { "type": "string" },
        "street": { "type": "string" }
      },
      "required": [ "zip", "city", "street" ]
    },
    "email": { "type": "string" },
    "age": { "type": "integer" },
    "name": { "type": "string" }
  },
  "required": [ "address", "age", "name" ]
}

Some more advanced functionalities are documented in the readme.

Please let me know if you see any important feature missing, if there are b= ugs, or if you have ideas of improvements.

This project was originally started during a Ahrefs dojo, in parallel to th= e ICFP conference in Milan, as a way to learn how to write a ppx. I can't r= ecommend enough https://github.com/pedrobslisboa/ppx-by-example to get going.

opam 2.3.0~alpha1

Kate announced

As mentioned in our talk at the OCaml Workshop 2024, we de= cided to switch to a time-based release cycle (every 6 months), starting wi= th opam 2.3.

As promised, we are happy to announce the first alpha release of opam 2.3.0.

What's new?

  • When loading a repository, opam now ignores files in packages' files/ directories which aren't listed in the extra-files field of the opam file. :warning: If you maintain an opam repositor= y, please read our blog post to make sure your repository stays compatible.
  • Packages requiring an unsupported version of opam are now marked una= vailable, instead of causing a repository error. This means an opam rep= ository can now allow smoother upgrade in the future
  • opam list --latests-only: a new option to list only= the latest versions of packages
  • --verbose-on: a new option to enable verbose output= for specified package names.
  • opam switch import --deps-only: a new option to ins= tall only the dependencies of the root packages listed in the opam switch e= xport file
  • opam switch list-available will now not display com= pilers flagged with avoid-version~/~deprecated unless --= all is given, meaning that the "trunk" build of OCaml no longer appe= ars to be the latest version
  • The builtin-0install solver was improved and should= now be capable of being your default solver instead of builtin-mccs+= glpk. If you wish to give it a try, simply call opam option so= lver=3Dbuiltin-0install
  • Most of the unhelpful conflict messages were fixed :flashlight:<= /li>

Various performance and other improvements were made and bugs were fixed. :open_book: You can read our blog post for more information about these changes and mor= e, and for even more details you can take a look at the release note or the changelog= .

Try it!

The upgrade instructions are unchanged:

For Unix systems

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

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubuserconten=
t.com/ocaml/opam/master/shell/install.ps1) } -Version 2.3.0~alpha1"

Please report any issues to the 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.

--=-=-=--