From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=WmG7HyJk; 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=FBAPorPu; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 44D2540065 for ; Tue, 25 Mar 2025 08:06:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=pSCJnEpk5fvCd3UKw+VOJvKfYebrNEeCxHI8QPOmOtk=; b=WmG7HyJkN7E0d7VdcXMTgnPBq/njJOu6F0r+tcwEqMGwQHXWIxaQv6/B 1Hxc1S+KDgh4hosgRosCUmcAMTmJLSVOSVQWs0RYXTfNhZNarVT/+qDCe 7t/N6GMybwwqoC7YqH5zbSm0cjhXzGw8HmXSiJUNXeEUr6cTsh+yrKG8X 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:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@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 (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.14,274,1736809200"; d="scan'208,217";a="214576220" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 25 Mar 2025 09:06:36 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id D129BE0264; Tue, 25 Mar 2025 09:06:35 +0100 (CET) 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 4A6CAE007A for ; Tue, 25 Mar 2025 09:06:30 +0100 (CET) IronPort-SDR: 67e26405_2ggN5Bov1gUN5MvPREdrHPalJqFMGW3xFvOtEArBqYNORdZ x9WTv7xYufrLMd2aE6bZc8XcgJxMQ8XLJVyUbrA== X-IPAS-Result: =?us-ascii?q?A0HXBwDaYuJnjyIeaIFagl6BP1soGQFjWjMHCEgEhFGBY?= =?us-ascii?q?4FshS0IAYhtgRaQNIhHgi+BaoERAy4FHhQBAwENLgEOBAECBAEBAwECAYIMg?= =?us-ascii?q?T1xRgKLIgIfBgEENBMBAgQBAQEBAwIDAQEBAQEBEAEBBQEBAQIBAQIEBgECE?= =?us-ascii?q?AEBAQEBATkFSYV7DUkBAQEDAQoBgWpRYBF0AQEBAQEBAQEBAgEBASIBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgwBAhcKD?= =?us-ascii?q?QpkAQIGChMBASYSGBQCDQMJBwQBBgMCEQE1AxQBEhQGAYIPWAGCZAMEAQwGk?= =?us-ascii?q?nybS3qBMoEBggwBAQaBCD4BAgIJAgUBDgkm2geBZQmBMBiFbYJJGgEFJUhrA?= =?us-ascii?q?oQoIAmEMycPgVVEZi+CKEoHb4FCQEgMCwEBAQEBF30CCQQEFAEBAwMCOA0JC?= =?us-ascii?q?YMcgmmCM0VDMyuBMIEIgQyGNhJPg06BNFxQgQ43H3gshDIZNwQEEVYvPIMgg?= =?us-ascii?q?k8igQsoSIJMiQiBRyIDJjMsAVUTFwsHBWGBCwMqNDGBRXs3gg1pSToCDQI1g?= =?us-ascii?q?hskWIIogxSBOYQ+hD+FUIIRggSJJ4RgLU+CdR1AAwttPTcUG6M0CTg1ATqDR?= =?us-ascii?q?y8OOAYBEAYLHA8UAQYnFAgOAQETDQIrAwgOChAFBwUjDgsNBAEJBAEXAS0IA?= =?us-ascii?q?wsvkkMINCoDdJxqk3FtNAeEHoFdBgyJBYEkkiaDV4QDgVeLMocAiwiGXWYim?= =?us-ascii?q?FwigjaCeYQtCoEbCWCBD2qVGhAmBgICBA8JD4UpgX4jPG8BGgMMBzMaMCIhD?= =?us-ascii?q?RCCSgkJPRwPV40oLhYEg1SBPj5ogSNRFyS9ZAJCNQIBATgCBwEKAQEDCYVFH?= =?us-ascii?q?QEBgwSCF26DfDOBSwEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 tVh3pTmOHm4FQ== IronPort-HdrOrdr: A9a23:ik7Q9a7g/dYl/WFQ7wPXwPrXdLJyesId70hD6qkRc3Zom6mj/P xG88536faZslossQgb6Le90fC7MBXhHPxOgLX5TI3MYOCOggLBEGgF1+vfKlbbdREWmNQtsJ tIQuxTD8DxEEg/reuS2njdLz/4+qjlzEl/v5a980tQ X-Talos-CUID: =?us-ascii?q?9a23=3AsWVG6GtIar+2zohSBdJCLcbu6IsbNVjd1i31AXP?= =?us-ascii?q?iFHRWUZycSXjAp517xp8=3D?= X-Talos-MUID: =?us-ascii?q?9a23=3Ays1gFgxzp32YGI6/Sg8a8m9nyIKaqL3xVEpKq7g?= =?us-ascii?q?0gMCjLiZNajKAiwaMWYByfw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.14,274,1736809200"; d="scan'208,217";a="214576185" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDEcU2cjQgqxJx8A0Uvj1z9E2nndvzOdLdL5Ab?= =?us-ascii?q?8AAwx2zOIztNxsCF9m4/epIFQkz/lsqIbzbNMreTidC9sHxnAHzivA1W?= =?us-ascii?q?/cl9Po0t1pSt0uJdME1NKTZ85gBIvfCrHQbBroPi5/FbhXu2YNwX/qai?= =?us-ascii?q?cmkMKrxeV6MglXfPGLOltNBA=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; 25 Mar 2025 09:06:29 +0100 Received: from TM.local (cust-west-par-46-193-46-163.cust.wifirst.net [46.193.46.163]) (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 BCB52564BB0; Tue, 25 Mar 2025 09:06:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1742889987; bh=Z6ygVhq+/nz5LBO3SDwbT0nS1G9P6ywPUHpV3GvgiIE=; h=From:To:Subject:Date:Message-ID; b=FBAPorPu8oeoaNtK7tmM88WLAa5sLWJJh35SxFj0VKuw4e+dh/vmnfHBvm7QXF6BH XM8CtJ1fqSOsUatt3DF3IASggWJkFZ9mUQfG3Z8Hh/gCkV5KulbJIIBXHC9CIwYlF2 +DqlLQNyYxGqafJk2N03/B7tDsScznbVWtUlXZ00= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 25 Mar 2025 09:06:27 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Mar 25 09:06:28 2025 +0100 (CET)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499515, queueID=07106564BC1 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: 19283 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 March 18 to 25, 2025. 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 Ocsigen migrating to effect-based concurrency Slipshow! Odoc 3.0 released! 4th editor tooling dev-meeting: 28th of March The Call for Papers for FUNARCH2025 is open! Proposal for the replacement of Set and Map in the stdlib A tool to reverse debug OCaml (and other binaries) runs Feedback request: New lesson on `Lazy' OCaml Workshop 2025 at ICFP/SPLASH - announcement and call for proposals Old CWN Ocsigen migrating to effect-based concurrency =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=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: Vincent Balat 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 We're delighted to announce that the [Ocsigen] project has just launched one of its most ambitious changes: moving from Lwt to effects-based concurrency. If this experiment goes well, it will be another step towards simplifying Web development in OCaml, by eliminating the need for monads. Of course we will try to make this transition as smooth as possible, by providing a compatibility interface for application developers, and tools to help Web and mobile developers to do the transition themselves if they want to. These tools will be released in order to help other projects to do the transition and avoid incompatibilities between OCaml libraries as much as possible. This work was made possible thanks to the support of the [NGI Zero Core fund] through the [Nlnet foundation], and is perfomed by [Tarides]. Read the [full announcement] by Tarides. [Ocsigen] [NGI Zero Core fund] [Nlnet foundation] [Tarides] [full announcement] Slipshow! =E2=95=90=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: Paul-Elliot 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 Dear reader, I am _absolutely thrilled_ to announce the release of slipshow `0.1.1' on this forum! As you have all noticed, that is a _huge_ leap from the previous version, `0.0.34'. (What can have motivated this?) Recall that [Slipshow] is a tool to prepare presentation support, that is based on scripted scrolling and zooming (instead of slides). I'll use this single thread to announce all future versions of slipshow, to avoid polluting the global namespace, as it makes sense to keep this forum centered around OCaml, and this tool has nothing to do with OCaml =E2=80=A6 =E2=80=A6 well, almost nothing to do with OCaml, since in this version the engine has been fully rewritten in OCaml (hence the bold new version) and works much better! Making it a full OCaml project. Thanks, OCaml developers of open source libraries and language! To upgrade it, you can do: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 $ opam update =E2=94=82 $ opam upgrade slipshow =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 What? Some people don't have it installed already? For those, it will be: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 $ opam update =E2=94=82 $ opam install slipshow =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Now comes the moment you are all waiting for: the list of new features! *TLDR*: =E2=80=A2 Engine rewritten in OCaml =E2=80=A2 Fewer bugs when navigating back =E2=80=A2 Stronger foundation (eg, for subslips) =E2=80=A2 Custom scripts requires minor adjustments =E2=80=A2 Breaking change in subslip HTML =E2=80=A2 Drawing now in SVG =E2=80=A2 No more zoom issues =E2=80=A2 Erasing works "per-stroke" =E2=80=A2 Revamped table of content =E2=80=A2 Now based on title structure rather than subslips =E2=80=A2 New `--markdown-output' flag for converting to GFM =E2=80=A2 Parser bugfixes =E2=80=A2 License change: Now GPLv3 (previously MIT) =E2=80=A2 npm distribution discontinued. =E2=80=A2 Special thanks to NLNet for their [sponsorship]! Dear readers, I am thrilled to announce the 0.1 release of Slipshow, the slip-based presentation tool! This is a _major_ minor release. While versions `0.0.1' to `0.0.33' have served well to experiment, this release marks a fresh start, aimed at being a solid foundation for a project with a clear direction. A huge thank you to NLNet for [sponsoring] this milestone! So, what is new? Quite a lot, the main change being that the engine has been _fully rewritten_. [Slipshow] [sponsorship] [sponsoring] The engine =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C Started as a single file javascript project, the old engine evolved presentation by presentation =E2=80=93 leading to numerous bugs, maintena= nce challenge or extensibility issue. (In other word, I did all I could not to touch it despite all the bugs) This release introduces a complete rewrite of the engine in OCaml, with new design choices that improve reliability and expandability. Let's go over the key benefits and breaking changes. =E2=97=8A Navigating Forward=E2=80=A6 and Backward One of the greatest weakness of the old engine was handling backward navigation. Since it started as a simple "script scheduler", going back wasn't straightforward. The workaround involved taking a snapshot of=E2=80=A6 everything (the DOM, the state, =E2=80=A6), to be able to go = back in time. This had many bugs, in animations (such as the "focus" action), and in its iteraction with other features (such as drawing). So, what is new in this engine? The engine now records an undo function for each step of the presentation. While this may not sound much, it is a ton better in terms of development. It's a much stronger foundation to build new features from. It's also much more efficient for long presentations. In most cases, your old presentations will work without modification in the new engine. However, there is one case where it needs modification: when you include the execution of a custom script in your presentation. In this case, you need to return the function undo to undo the executed step: see the [documentation]! (This is not ideal and better solutions are being experimented) [documentation] =E2=97=8A Writing Previously, live annotations used the excellent [atrament] library. While great in many cases, its bitmap-based approach caused blurriness when zooming. This release introduces a custom SVG-based annotation system, which eliminates zoom issues. Another change: erasing now works stroke-by-stroke instead of pixel-by-pixel. [atrament] =E2=97=8A Table of content The old table of contents was based on the slip structure, which didn=E2=80=99t work well for presentations that primarily used a single s= lip (as is often the case with compiled presentations). The new sidebar-style table of contents is now generated from headers, making it more intuitive and aligned with the presentation=E2=80=99s structure=E2=80=94resulting in a much smoother navigation experience! =E2=97=8A Breaking change: Subslips The HTML structure for subslips has evolved, in particuler to avoid having to provide the scale of your subslips. Support for subslip in the new engine is not mature and will be announced in the next release, but bear in mind that if your presentation relies on them, you might want to wait a bit before migrating to the new engine! Compiler =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C While this release focuses on the engine, the compiler has also seen improvements, including bug fixes (particularly in the parser) and a new feature: =E2=97=8A `--markdown-output' for markdown exports If you want to print your presentation or host it as a static webpage, the default format can be cluttered with annotations. The new `--markdown-output' flag lets you generate a clean, GitHub Flavored Markdown (GFM) file without annotations. Other =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C A small but maybe important note: the license has changed, the project has transitioned from MIT to GPLv3, aligning better with its values. Conclusion =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C Looking forward to your bug reports! Christian Lindig asked and Paul-Elliot replied =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Could you link to a demo presentation done with this tool? Sure! [Here] is a presentation of the tool itself, in French. The source file for it is [here]. [Here] is a math presentation using more features (made using a previous version of the engine, which had more features and more bugs). [Here] is the historical first presentation made in Slipshow (made with the worst version of the engine). (I include presentations made with old versions of the engine to give an idea of what you can do, as the new engine is very new I don't have many examples using it, and it has some breaking changes which makes porting old presentations using too many features hard to port!) [Here] [here] [Here] [Here] Daniel B=C3=BCnzli 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 [Here] is a non-dogfooded one. [Here] Odoc 3.0 released! =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=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: Jon Ludlam 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 On behalf of the Odoc development team, I=E2=80=99m delighted to announce= the release of Odoc 3! This is a big big release with loads of new features and bug fixes, and I encourage everyone to install it and have a play! For an overview of the new features see our [beta release announcement]. tl;dr: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 $ opam install odoc-driver # will install odoc 3 =E2=94=82 $ odoc_driver odoc odoc-parser odoc-driver odoc-md sherlodoc --= remap =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 and point your browser at `_html/index.html'. This example shows odoc_driver creating the docs for the 5 packages specified and remapping links to other packages (see [here] for an explanation) If you try the above command, you'll note something interesting, and hopefully this will encourage you to run `odoc_driver' on your own packages before you release them, as then you'll be able to avoid slightly embarrassing post-release fixes like [this one] =F0=9F=98=AC Here are the changes from the beta release: [beta release announcement] [here] [this one] Added =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 =E2=80=A2 =E2=80=A2 Changed =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 Fixed =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 =E2=80=A2 4th editor tooling dev-meeting: 28th of March =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=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: PizieDust 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 Hi everyone, join us for the next *Editor Public Dev-Meeting* on *March 28th*! This session will feature a talk from *Xavier (@xvw)* on the latest *Emacs functionalities* integrated with *OCaml LSP server*. :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 from Xavier and Q&A =E2=80=A2 Discuss issues and pull requests that were tagged in advance or mentioned during the tour-de-table. =E2=80=A2 =F0=9F=94=B9 *What=E2=80=99s new in Emacs for OCaml development= ?* =E2=80=A2 =F0=9F=94=B9 *How the latest LSP improvements enhance the exper= ience?* =E2=80=A2 =F0=9F=94=B9 *Live demo and discussion on upcoming features* =E2=80=A2 =F0=9F=93=85 *Date:* March 28th =E2=80=A2 =F0=9F=95=90 *Time:* 4PM CET =E2=80=A2 =F0=9F=93=8D *Location:* [https://meet.google.com/wrv-dovu-ypb] This is a great opportunity to learn about the latest improvements and share feedback with the community. Looking forward to seeing you there! =F0=9F=9A=80 Previous meeting notes are available in [Merlin=E2=80=99s repository wiki] [https://meet.google.com/wrv-dovu-ypb] [Merlin=E2=80=99s repository wiki] The Call for Papers for FUNARCH2025 is open! =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=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: Jeffrey Young 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 Hello everyone, This year I am chairing the Functional Architecture workshop colocated with ICFP and SPLASH. I'm happy to announce that the Call for Papers for FUNARCH2025 is open - *deadline is June 16th*! Send us research papers, experience reports, architectural pearls, or submit to the open category! The [idea] behind the workshop is to cross pollinate the software architecture and functional programming discourse, and to share techniques for constructing large long-lived systems in a functional language. See [FUNARCH2025 - ICFP/SPLASH] for more information. You may also browse previous year's submissions [here] and [here]. See you in Singapore! [idea] [FUNARCH2025 - ICFP/SPLASH] [here] [here] Proposal for the replacement of Set and Map in the stdlib =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Christophe Raffalli 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 Hello, While working on AVL for teaching I found an alternative to the AVL that seems overall better than the current ocaml implementation. The code is available here: [https://github.com/craff/ocaml-avl/tree/master]. The Readme.md contains the inequality needed to prove correctness and termination of the balancing function "join". The idea is to replace the constraint =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 |height left_son - height right_son| <=3D 2=20 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 By =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 size left_son <=3D 2 * size right_son + 1 =E2=94=82 size right_son <=3D 2 * size left_son + 1 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 We see 3 advantages: =E2=80=A2 O(1) cardinal of set or map =E2=80=A2 slightly simpler code or at least not more complicated (see bel= ow) =E2=80=A2 seems faster in many cases (not always and strangely depends on compilation options). Use `dune exec ./test.exe' for some simple tests. Before submitting a PR, I think it call be a good idea to call for comments here. Cheers, Christophe [https://github.com/craff/ocaml-avl/tree/master] A tool to reverse debug OCaml (and other binaries) runs =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Sid Kshatriya 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'd like to announce a debugging tool I've built ! It's called *_Software Counters mode_ `rr'* . It is available at Many of you may have already heard of a debugger called [`rr'] =E2=80=93 = it allows you to record and replay programs on Linux. It is extremely useful for instance to debug issues with garbage collection or other low level issues in natively compiled OCaml programs. Once you capture a bug during the record phase, that bug can be replayed any number of times during replay. One major limitation of `rr' is that it requires access to CPU Hardware Performance counters which is usually not available in cloud VMs or containers. *_Software Counters mode_ `rr' is a modification of the `rr' debugger that lifts this limitation =E2=80=93 access to CPU Hardware Performance counters is not required*. This means you can run `rr' in many more configurations. I've been able to successfully record/replay the whole OCaml compiler test suite using _Software Counters_ mode `rr' (Except for a single ocaml test called `pr2195' which exhausts the file descriptors). *I've also written a blog post* about record/replay debugging generally and _Software Counters mode_ in particular. Please see [here]. [`rr'] [here] Feedback request: New lesson on `Lazy' =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Jakub Svec 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 Hello, I created a lesson on the `Lazy' module that I'd like to propose for the language tutorials section of ocaml.org. You can find the draft on [HackMD] Please suggest anything you would like, I'm happy to make several rounds of improvement. [HackMD] Lesson implementation decisions: =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=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 lesson is focused on beginners. The first draft of this lesson is 345 lines, which is on the shorter side compared to other lessons. The surface area of the `Lazy' module is small, so I took the opportunity to supplement the lesson with a thorough explanation of evaluation strategies. This is supplemental, however, and can be shortened or removed based on your preferences. Without the supplemental section, the lesson is only 200 lines long. OCaml Workshop 2025 at ICFP/SPLASH - announcement and call for proposals =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=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: Kiran Gopinathan 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 Hihi everyone!!! This year, the [ICFP] (International conference on Functional Programming) Programming Languages conferences will be held in Singapore (colocated with [SPLASH] in fact!): Continuing this community's annual tradition from 2012, we will be hosting the OCaml workshop after the ICFP conference, on the *17th October 2025 (Friday)*. The workshop is intended to cover all different kinds of aspects of the OCaml programming language as well as the OCaml ecosystem and its community, such as scientific and/or research-oriented, engineering and/or user-oriented, as well as social and/or community-oriented. [ICFP] [SPLASH] Call for talk proposals =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=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 [call for talk proposals] for the workshop is now open! [call for talk proposals] =E2=97=8A Dates Here are the important dates: =E2=80=A2 Talk proposal submission deadline: *July 3rd (Thursday)* =E2=80=A2 Author notification: *August 7th (Thursday)* =E2=80=A2 Workshop: *October 17th (Friday)* =E2=97=8A Submissions Submissions are typically around 2 pages long (flexible), describing the motivations of the work and what the presentation would be about. We encourage everyone who might be interested in giving a talk to submit a proposal! We truly mean everyone, and also have strongly anyone in mind who belongs to a group that=E2=80=99s traditionally underrepresented at OCaml workshops, e.g. due to your gender(s) or non-gender, where you=E2=80=99re from or based or whatever other kinds of characteristics you might have. You should all be able to find all information you=E2=80=99ll need to submit a proposal on the official [cal= l for talk proposals]. However, if you have any question, don=E2=80=99t hesitat= e to ask us. [call for talk proposals] =E2=97=8A Quota on accepted talks per affiliation Following the approach from last year which worked well, this year again we will try to enforce a quota of a maximum of four talks given by speakers with the same company/university/institute affiliation. In order to guarantee a coverage of a diverse range of topics and perspectives, we=E2=80=99ll experiment with the same affiliation quota ag= ain. Do not hesitate to submit your talk proposal in any case: quotas, if needed, will be taken into account by the PC after reviewing all submissions, so there=E2=80=99s no reason to self-select upfront. About the workshop itself =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C So far, we=E2=80=99ve only covered the talk proposals and formalities. The exciting part will be the workshop itself! The OCaml workshop is going to be a whole-day event and, similarly to previous years, it=E2=80=99s li= kely going to have four sessions of about four talks each. It=E2=80=99s a fair= ly informal and interactive environment, where people engage in all kinds of conversations about OCaml during the breaks and after the workshop. =E2=97=8A Hybrid attendance and cost for speakers We=E2=80=99re aiming to make the workshop hybrid with the same streaming modalities as last year, meaning that *talks as well as participation can be either in-person or remote*, and *remote attendance will be free*. To promote a good atmosphere, communication and engagement, we prefer to have most talks in-person, but remote talks will be most welcome as well. There may be opportunities for speakers who would not have funding otherwise (via their employer or university) to attend, although we are still in the process of confirming this. (Please keep an eye on this post, which will be updated once we get confirmation!) We will do our best to provide the best workshop experience possible for remote participants, within the constraints of the hybrid format. While attending in-person does come with advantages, it also comes with an environmental cost, and we strongly support transitioning to a less plane-intensive organization for conferences and community events :deciduous_tree: . =E2=97=8A Related events The day before the OCaml workshop, i.e. Oct 16th (Thursday), is the day of the [ML workshop], with focus on more theoretical aspects of OCaml and the whole family of ML languages in general. The ML workshop and tends to be very interesting for OCaml lovers as well. That aside, this year, I believe, is the first year that both the ICFP and SPLASH programming languages conferences are going to be co-located, so this is an exciting opportunity to experience the whole breadth of two of the top-ranked PL conferences over the span of a week! What a time to be alive! We=E2=80=99re looking forward to the the talk submissions and to the work= shop! Let us know if you have any questions. @Gopiandcode & @yasunariw [ML workshop] 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 March 18 to 25, 2025.

Ocsigen migrating to effect-based concurrency

Vincent Balat announced

We're delighted to announce that the Ocsige= n project has just launched one of its most ambitious changes: moving f= rom Lwt to effects-based concurrency.

If this experiment goes well, it will be another step towards simplifying W= eb development in OCaml, by eliminating the need for monads.

Of course we will try to make this transition as smooth as possible, by pro= viding a compatibility interface for application developers, and tools to h= elp Web and mobile developers to do the transition themselves if they want = to. These tools will be released in order to help other projects to do the = transition and avoid incompatibilities between OCaml libraries as much as p= ossible.=20

This work was made possible thanks to the support of the NGI Zero Core fund through the Nlnet foundation, and is perfomed by Tarides.

Read the full announcement by Tarides.

Slipshow!

Paul-Elliot announced

Dear reader,

I am absolutely thrilled to announce the r= elease of slipshow 0.1.1 on this forum! As you have all notice= d, that is a huge leap from the previous v= ersion, 0.0.34. (What can have motivated this?)

Recall that Slipshow i= s a tool to prepare presentation support, that is based on scripted scrolli= ng and zooming (instead of slides).

I'll use this single thread to announce all future versions of slipshow, to= avoid polluting the global namespace, as it makes sense to keep this forum= centered around OCaml, and this tool has nothing to do with OCaml …

… well, almost nothing to do with OCaml, since in this version the e= ngine has been fully rewritten in OCaml (hence the bold new version) and wo= rks much better! Making it a full OCaml project. Thanks, OCaml developers o= f open source libraries and language!

To upgrade it, you can do:

$ opam update
$ opam upgrade slipshow

What? Some people don't have it installed already? For those, it will be:

$ opam update
$ opam install slipshow

Now comes the moment you are all waiting for: the list of new features!

TLDR:

  • Engine rewritten in OCaml
    • Fewer bugs when navigating back
    • Stronger foundation (eg, for subslips)
    • Custom scripts requires minor adjustments
    • Breaking change in subslip HTML
  • Drawing now in SVG
    • No more zoom issues
    • Erasing works "per-stroke"
  • Revamped table of content
    • Now based on title structure rather than subslips
  • New --markdown-output flag for converting to GFM
  • Parser bugfixes
  • License change: Now GPLv3 (previously MIT)
  • npm distribution discontinued.
  • Special thanks to NLNet for their sponsorship!

Dear readers,

I am thrilled to announce the 0.1 release of Slipshow, the slip-based prese= ntation tool!

This is a major minor release. While versi= ons 0.0.1 to 0.0.33 have served well to experimen= t, this release marks a fresh start, aimed at being a solid foundation for = a project with a clear direction. A huge thank you to NLNet for sponsoring this milestone!

So, what is new? Quite a lot, the main change being that the engine has bee= n fully rewritten.

The engine

Started as a single file javascript project, the old engine evolved present= ation by presentation – leading to numerous bugs, maintenance challe= nge or extensibility issue. (In other word, I did all I could not to touch = it despite all the bugs)

This release introduces a complete rewrite of the engine in OCaml, with new= design choices that improve reliability and expandability. Let's go over t= he key benefits and breaking changes.

  • Navigating Forward… and Backward

    One of the greatest weakness of the old engine was handling backward naviga= tion. Since it started as a simple "script scheduler", going back wasn't st= raightforward. The workaround involved taking a snapshot of… everyth= ing (the DOM, the state, …), to be able to go back in time.

    This had many bugs, in animations (such as the "focus" action), and in its = iteraction with other features (such as drawing).

    So, what is new in this engine? The engine now records an undo function for= each step of the presentation. While this may not sound much, it is a ton = better in terms of development. It's a much stronger foundation to build ne= w features from. It's also much more efficient for long presentations.

    In most cases, your old presentations will work without modification in the= new engine. However, there is one case where it needs modification: when y= ou include the execution of a custom script in your presentation. In this c= ase, you need to return the function undo to undo the executed step: see th= e documentation! (This is not ideal and better solutions are bein= g experimented)

  • Writing

    Previously, live annotations used the excellent atrament library. While great in many cases, it= s bitmap-based approach caused blurriness when zooming.

    This release introduces a custom SVG-based annotation system, which elimina= tes zoom issues. Another change: erasing now works stroke-by-stroke instead= of pixel-by-pixel.

  • Table of content

    The old table of contents was based on the slip structure, which didn=E2=80= =99t work well for presentations that primarily used a single slip (as is o= ften the case with compiled presentations).

    The new sidebar-style table of contents is now generated from headers, maki= ng it more intuitive and aligned with the presentation=E2=80=99s structure= =E2=80=94resulting in a much smoother navigation experience!

  • Breaking change: Subslips

    The HTML structure for subslips has evolved, in particuler to avoid having = to provide the scale of your subslips.

    Support for subslip in the new engine is not mature and will be announced i= n the next release, but bear in mind that if your presentation relies on th= em, you might want to wait a bit before migrating to the new engine!

Compiler

While this release focuses on the engine, the compiler has also seen improv= ements, including bug fixes (particularly in the parser) and a new feature:

  • --markdown-output for markdown ex= ports

    If you want to print your presentation or host it as a static webpage, the = default format can be cluttered with annotations. The new --markdown-= output flag lets you generate a clean, GitHub Flavored Markdown (GFM= ) file without annotations.

Other

A small but maybe important note: the license has changed, the project has = transitioned from MIT to GPLv3, aligning better with its values.

Conclusion

Looking forward to your bug reports!

Christian Lindig asked and Paul-Elliot replied

Could you link to a demo presentation done with this tool?

Sure!

Here= is a presentation of the tool itself, in French. The source file for it is= here.

Here is a math presentation using more features (made using a previous= version of the engine, which had more features and more bugs).

Here= is the historical first presentation made in Slipshow (made with the worst= version of the engine).

(I include presentations made with old versions of the engine to give an id= ea of what you can do, as the new engine is very new I don't have many exam= ples using it, and it has some breaking changes which makes porting old pre= sentations using too many features hard to port!)

Daniel B=C3=BCnzli added

Here= is a non-dogfooded one.

Odoc 3.0 released!

Jon Ludlam announced

On behalf of the Odoc development team, I=E2=80=99m delighted to announce t= he release of Odoc 3! This is a big big release with loads of new features = and bug fixes, and I encourage everyone to install it and have a play!

For an overview of the new features see our beta release announcement. tl= ;dr:

$ opam install odoc-driver # will install odoc 3
$ odoc_driver odoc odoc-parser odoc-driver odoc-md sherlodoc --remap

and point your browser at _html/index.html. This example shows= odoc_driver creating the docs for the 5 packages specified and remapping l= inks to other packages (see here for an explanation)

If you try the above command, you'll note something interesting, and hopefu= lly this will encourage you to run odoc_driver on your own pac= kages before you release them, as then you'll be able to avoid slightly emb= arrassing post-release fixes like this one =F0=9F=98=AC

Here are the changes from the beta release:

4th editor tooling dev-meeting: 28th of March

PizieDust announced

Hi everyone, join us for the next Editor Public Dev-Meeting on Ma= rch 28th! This session will feature a talk from Xavier (@xvw) on= the latest Emacs functionalities integrated with OCaml LSP serve= r.

: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 from Xavier and Q&A
  • Discuss issues and pull requests that were tagged in advance or mention= ed during the tour-de-table.
  • =F0=9F=94=B9 What=E2=80=99s new in Emacs for OCaml development?<= /li>
  • =F0=9F=94=B9 How the latest LSP improvements enhance the experience?=
  • =F0=9F=94=B9 Live demo and discussion on upcoming features
  • =F0=9F=93=85 Date: March 28th
  • =F0=9F=95=90 Time: 4PM CET
  • =F0=9F=93=8D Location: https://meet.google.com/w= rv-dovu-ypb

This is a great opportunity to learn about the latest improvements and shar= e feedback with the community. Looking forward to seeing you there! =F0=9F= =9A=80

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

https://calendar.= app.google/zPx5ZQ47C4dwq3437

The Call for Papers for FUNARCH2025 is open!

Jeffrey Young announced

Hello everyone,

This year I am chairing the Functional Architecture workshop colocated with= ICFP and SPLASH.

I'm happy to announce that the Call for Papers for FUNARCH2025 is open - deadline is June 16th! Send us research papers, experience reports, ar= chitectural pearls, or submit to the open category! The idea behind the workshop is to cross poll= inate the software architecture and functional programming discourse, and t= o share techniques for constructing large long-lived systems in a functiona= l language.

See FUNARCH2025 - ICFP/SPLASH for more info= rmation. You may also browse previous year's submissions here and here.

See you in Singapore!

Proposal for the replacement of Set and Map in the stdlib

Christophe Raffalli announced

Hello,

While working on AVL for teaching I found an alternative to the AVL that se= ems overall better than the current ocaml implementation. The code is avail= able here: https= ://github.com/craff/ocaml-avl/tree/master. The Readme.md contains the i= nequality needed to prove correctness and termination of the balancing func= tion "join".

The idea is to replace the constraint

|height left_son - height right_son| <=3D 2=20

By

size left_son <=3D 2 * size right_son + 1
size right_son <=3D 2 * size left_son + 1

We see 3 advantages:

  • O(1) cardinal of set or map
  • slightly simpler code or at least not more complicated (see below)
  • seems faster in many cases (not always and strangely depends on compilation options). Use dune exec ./test.exe for some simple tests.

Before submitting a PR, I think it call be a good idea to call for comments= here.

Cheers, Christophe

A tool to reverse debug OCaml (and other binaries) runs

Sid Kshatriya announced

I'd like to announce a debugging tool I've built ! It's called Software Counters mode rr .=20

It is available at http= s://github.com/sidkshatriya/rr.soft

Many of you may have already heard of a debugger called rr – it allows you t= o record and replay programs on Linux. It is extremely useful for instance = to debug issues with garbage collection or other low level issues in native= ly compiled OCaml programs. Once you capture a bug during the record phase,= that bug can be replayed any number of times during replay.

One major limitation of rr is that it requires access to CPU H= ardware Performance counters which is usually not available in cloud VMs or= containers.

Software Counters mode rr = is a modification of the rr debugger that lifts this limitatio= n – access to CPU Hardware Performance counters is not required.= This means you can run rr in many more configurations.

I've been able to successfully record/replay the whole OCaml compiler test = suite using Software Counters mode r= r (Except for a single ocaml test called pr2195 which e= xhausts the file descriptors).

I've also written a blog post about record/replay debugging generall= y and Software Counters mode in particular= . Please see here.

Feedback request: New lesson on Lazy

Jakub Svec announced

Hello,

I created a lesson on the Lazy module that I'd like to propose= for the language tutorials section of ocaml.org.

You can find the draft on HackMD

Please suggest anything you would like, I'm happy to make several rounds of= improvement.

Lesson implementation decisions:

This lesson is focused on beginners.

The first draft of this lesson is 345 lines, which is on the shorter side c= ompared to other lessons.

The surface area of the Lazy module is small, so I took the op= portunity to supplement the lesson with a thorough explanation of evaluation strategies.= This is supplemental, however, and can be shortened or removed based on your prefer= ences.

Without the supplemental section, the lesson is only 200 lines long.

OCaml Workshop 2025 at ICFP/SPLASH - announcement and call for= proposals

Kiran Gopinathan announced

Hihi everyone!!!

This year, the ICFP (Internation= al conference on Functional Programming) Programming Languages conferences = will be held in Singapore (colocated with SPLASH in fact!):

3D"920=

Continuing this community's annual tradition from 2012, we will be hosting = the OCaml workshop after the ICFP conference, on the 17th October 2025 (= Friday). The workshop is intended to cover all different kinds of aspec= ts of the OCaml programming language as well as the OCaml ecosystem and its= community, such as scientific and/or research-oriented, engineering and/or= user-oriented, as well as social and/or community-oriented.

Call for talk proposals

The call for talk proposals for the workshop is now open!

  • Dates

    Here are the important dates:

    • Talk proposal submission deadline: July 3rd (Thursday)
    • Author notification: August 7th (Thursday)
    • Workshop: October 17th (Friday)
  • Submissions

    Submissions are typically around 2 pages long (flexible), describing the mo= tivations of the work and what the presentation would be about.

    We encourage everyone who might be interested in giving a talk to submit a = proposal! We truly mean everyone, and also have strongly anyone in mind who= belongs to a group that=E2=80=99s traditionally underrepresented at OCaml = workshops, e.g. due to your gender(s) or non-gender, where you=E2=80=99re f= rom or based or whatever other kinds of characteristics you might have. You= should all be able to find all information you=E2=80=99ll need to submit a= proposal on the official call for talk proposals. = However, if you have any question, don=E2=80=99t hesitate to ask us.

  • Quota on accepted talks per affiliation

    Following the approach from last year which worked well, this year again we= will try to enforce a quota of a maximum of four talks given by speakers w= ith the same company/university/institute affiliation. In order to guarante= e a coverage of a diverse range of topics and perspectives, we=E2=80=99ll e= xperiment with the same affiliation quota again.

    Do not hesitate to submit your talk proposal in any case: quotas, if needed= , will be taken into account by the PC after reviewing all submissions, so = there=E2=80=99s no reason to self-select upfront.

About the workshop itself

So far, we=E2=80=99ve only covered the talk proposals and formalities. The = exciting part will be the workshop itself! The OCaml workshop is going to b= e a whole-day event and, similarly to previous years, it=E2=80=99s likely g= oing to have four sessions of about four talks each. It=E2=80=99s a fairly = informal and interactive environment, where people engage in all kinds of c= onversations about OCaml during the breaks and after the workshop.

  • Hybrid attendance and cost for speakers

    We=E2=80=99re aiming to make the workshop hybrid with the same streaming mo= dalities as last year, meaning that talks as well as participation can b= e either in-person or remote, and remote attendance will be free= . To promote a good atmosphere, communication and engagement, we prefer to = have most talks in-person, but remote talks will be most welcome as well.

    There may be opportunities for speakers who would not have funding otherwis= e (via their employer or university) to attend, although we are still in th= e process of confirming this. (Please keep an eye on this post, which will = be updated once we get confirmation!)

    We will do our best to provide the best workshop experience possible for re= mote participants, within the constraints of the hybrid format. While atten= ding in-person does come with advantages, it also comes with an environment= al cost, and we strongly support transitioning to a less plane-intensive or= ganization for conferences and community events :deciduous_tree: .

  • Related events

    The day before the OCaml workshop, i.e. Oct 16th (Thursday), is the day of = the ML workshop, with focus on more theoretical aspects of OCaml and= the whole family of ML languages in general. The ML workshop and tends to = be very interesting for OCaml lovers as well.=20

    That aside, this year, I believe, is the first year that both the ICFP and = SPLASH programming languages conferences are going to be co-located, so thi= s is an exciting opportunity to experience the whole breadth of two of the = top-ranked PL conferences over the span of a week! What a time to be alive!

    We=E2=80=99re looking forward to the the talk submissions and to the worksh= op! Let us know if you have any questions. @Gopiandcode & @yasunariw

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.

--=-=-=--