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=boxqMPpQ; 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 DFC1A400A6 for ; Tue, 29 Apr 2025 08:39:51 +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=GqcK9p9kVr/GdqC2pDFC81YP0koC+yVG9JsH3qUEfbQ=; b=boxqMPpQiVmsuSVapxk6rXbEOK+LzcWrXsthWWSkhk8VaXD3kx2xBmCS mjxjnLX1jw7N6JbP4QmuJEZIiUPfLBEEaEMFiT3ojymuXFUVqLtRazOZy w+Vj4zqqLq9l6QvFnSJBxqTpZ9aXf56oeNZ7ip4oahT5wJ4lyeumt7di+ k=; Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr 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 X-IronPort-AV: E=Sophos;i="6.15,248,1739833200"; d="scan'208,217";a="219891494" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 29 Apr 2025 10:39:51 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 538E7E0D1D; Tue, 29 Apr 2025 10:39:50 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id A6CCDE007A for ; Tue, 29 Apr 2025 10:39:48 +0200 (CEST) X-IronPort-AV: E=Sophos;i="6.15,248,1739833200"; d="scan'208,217";a="219891456" Received: from mac-03220211.irisa.fr ([131.254.21.249]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2025 10:39:48 +0200 From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 29 Apr 2025 10:39:48 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19311 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: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgQXByaWwgMjIgdG8gMjksDQoyMDI1Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCmRyZWFtLWh0 bWwsIHB1cmUtaHRtbCAzLjEwLjAgYW5kIDMuMTAuMQ0KU3RhdGUgb2YgT0NhbWwgUGxhdGZvcm0g b24gV2luZG93cw0KVXBncmFkaW5nIFNlbWdyZXAgZnJvbSBPQ2FtbCA0IHRvIE9DYW1sIDUgKyBk eW5hbWljX2djIHV0aWxpdHkNClR5cGVzYWZlIGNvbXBsaWNhdGVkIGNvbWJpbmF0aW9ucw0KT3Ro ZXIgT0NhbWwgTmV3cw0KT2xkIENXTg0KDQoNCmRyZWFtLWh0bWwsIHB1cmUtaHRtbCAzLjEwLjAg YW5kIDMuMTAuMQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5v cmcvdC9hbm4tZHJlYW0taHRtbC1wdXJlLWh0bWwtMy0xMC0wLTMtMTAtMS8xNjUzNy8xPg0KDQoN Cllhd2FyIEFtaW4gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIYXBweSB0byBhbm5vdW5jZSBhIGNvdXBs ZSBvZiByZWxlYXNlcyBvZiBbZHJlYW0taHRtbF06DQoNCiAgMy4xMC4wOiBhZGQgc3VwcG9ydCBm b3IgW1JTUy9BdG9tXSBtYXJrdXA7IGFkZCBhYmlsaXR5IHRvIGhhbmRsZQ0KICBbbXVsdGlwbGVd IG5lc3RlZCBmb3JtIHZhbHVlczsgW2NvbmNhdGVuYXRlXSBIVE1MIG5vZGVzIHdpdGggYQ0KICBz ZXBhcmF0b3Igbm9kZSBiZXR3ZWVuIHRoZW07IGFkZCBzdXBwb3J0IGZvciBbcG9wb3ZlcnNdIGFu ZA0KICBbRGVjbGFyYXRpdmUgU2hhZG93IERPTV0gbWFya3VwLg0KDQogIDMuMTAuMTogdXNlIHNp bmdsZSBxdW90ZXMgZm9yIGF0dHJpYnV0ZXMgd2hpY2ggbXVzdCBjb250YWluIEpTT04NCiAgdmFs dWVzLCBsaWtlIGh0bXgncyBbaHgtdmFsc10uDQoNCg0KW2RyZWFtLWh0bWxdIDxodHRwczovL2dp dGh1Yi5jb20veWF3YXJhbWluL2RyZWFtLWh0bWw+DQoNCltSU1MvQXRvbV0NCjxodHRwczovL3lh d2FyYW1pbi5naXRodWIuaW8vZHJlYW0taHRtbC9wdXJlLWh0bWwvUHVyZV9odG1sLyNyc3MtYW5k LWF0b20+DQoNClttdWx0aXBsZV0NCjxodHRwczovL3lhd2FyYW1pbi5naXRodWIuaW8vZHJlYW0t aHRtbC9kcmVhbS1odG1sL0RyZWFtX2h0bWwvRm9ybS9pbmRleC5odG1sI3ZhbC1tdWx0aXBsZT4N Cg0KW2NvbmNhdGVuYXRlXQ0KPGh0dHBzOi8veWF3YXJhbWluLmdpdGh1Yi5pby9kcmVhbS1odG1s L3B1cmUtaHRtbC9QdXJlX2h0bWwvI3ZhbC1jb25jYXQ+DQoNCltwb3BvdmVyc10NCjxodHRwczov L3lhd2FyYW1pbi5naXRodWIuaW8vZHJlYW0taHRtbC9wdXJlLWh0bWwvUHVyZV9odG1sL0hUTUwv aW5kZXguaHRtbCN2YWwtcG9wb3Zlcj4NCg0KW0RlY2xhcmF0aXZlIFNoYWRvdyBET01dDQo8aHR0 cHM6Ly95YXdhcmFtaW4uZ2l0aHViLmlvL2RyZWFtLWh0bWwvcHVyZS1odG1sL1B1cmVfaHRtbC9I VE1ML2luZGV4Lmh0bWwjdmFsLXNoYWRvd3Jvb3RjbG9uYWJsZT4NCg0KW2h4LXZhbHNdDQo8aHR0 cHM6Ly95YXdhcmFtaW4uZ2l0aHViLmlvL2RyZWFtLWh0bWwvcHVyZS1odG1sL1B1cmVfaHRtbC9I eC9pbmRleC5odG1sI3ZhbC12YWxzPg0KDQoNClN0YXRlIG9mIE9DYW1sIFBsYXRmb3JtIG9uIFdp bmRvd3MNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQog IEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXN0YXRlLW9mLW9j YW1sLXBsYXRmb3JtLW9uLXdpbmRvd3MvMTY1NDAvMT4NCg0KDQpMZWFuZHJvIE9zdGVyYSBhbm5v dW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhlbGxvIGZvbGtzIDp3YXZpbmdfaGFuZDoNCg0K ICBXZSdyZSBoYXBweSB0byBzaGFyZSB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgU3RhdGUgb2Yg dGhlIE9DYW1sDQogIFBsYXRmb3JtIG9uIFdpbmRvd3MgZG9jdW1lbnQgd2l0aCB5b3UuIFBsZWFz ZSBmaW5kIHRoZSBkb2N1bWVudCBoZXJlOg0KICA8aHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9j dW1lbnQvZC8xLWFUeWd6RHN4eTRtbnF2U0tFVmhpZkExS0RSeVAtQXhkb2dqZ2I4aTNHZy9lZGl0 P3VzcD1zaGFyaW5nPi4NCg0KICBBcyBwYXJ0IG9mIHRoZSBbRmlyc3QtQ2xhc3MgV2luZG93c10g cHJvamVjdCwgd2UndmUgYmVlbiBhc3Nlc3NpbmcgdGhlDQogIHN0YXRlIG9mIE9DYW1sIG9uIFdp bmRvd3MuIFRoaXMgZG9jdW1lbnQgaXMgYSBzdW1tYXJ5IG9mIG91cg0KICBpbnZlc3RpZ2F0aW9u LCBpbmNsdWRpbmcgb3VyIGNvbnN1bHRhdGlvbnMgd2l0aCBpbmRpdmlkdWFscyBpbnZvbHZlZA0K ICBpbiBXaW5kb3dzLXJlbGF0ZWQgd29yay4NCg0KICBUaGlzIGRvY3VtZW50IHN0YXJ0ZWQgaW50 ZXJuYWxseSBhdCBUYXJpZGVzIGFuZCBxdWlja2x5IGluY2x1ZGVkIG1ham9yDQogIGNvbnRyaWJ1 dG9ycyBhbmQgdXNlcnMgb2YgT0NhbWwgb24gV2luZG93cyBmb3IgaXRzIGRyYWZ0aW5nIGFuZCBy ZXZpZXcNCiAgc3RhZ2VzLiBUaGFuayB5b3UgdG8gQGpiZWNrZm9yZCwgQGtsYWtwbG9rLCBAVmlu Y2VudF9CYWxhdCwgQFJ1Y2lraXIsDQogIEBsYW1iZGFfZm9vLCBAcmlrdXNpbHZvbGEsIEBrYXlj ZWVzcmssIEBkcmEyNywgQElzYWJlbGxhLCBAcmpib3UsDQogIEBhdnNtLCBAa2VudG9va3VyYSwg QG9hbmRyaWV1LCBAc2hvbmZlZGVyLCBAc2FiaW5lLCBhbmQgZXZlcnlvbmUgZWxzZQ0KICBhdCBU YXJpZGVzIGZvciBoZWxwaW5nIHVzIHNoYXBlIGFuZCByZXZpZXcgdGhpcyBkb2N1bWVudCENCiAg OmZvbGRlZF9oYW5kczoNCg0KICBUaGUgaW1tZWRpYXRlIGNhbGwgdG8gYWN0aW9uIGZvciB5b3Ug aXMgdG8gZ2l2ZSB1cyB5b3VyIGlucHV0cyBhbmQNCiAgdGhvdWdodHMsIGNoYWxsZW5nZSBpdCBh bmQgaGVscCB1cyBtYWtlIGl0IGJldHRlci4gWW91IGNhbiBkbyB0aGlzDQogIGRpcmVjdGx5IG9u IHRoYXQgZG9jdW1lbnQsIG9yIGJ5IHF1b3RpbmcgaW50byB0aGlzIHRocmVhZC4NCg0KICBXZSds bCBoYXZlIGEgd2luZG93IG9mIDggd2Vla3MgdG8gYWxsb3cgZm9yIHRoaXMgdG8gaGFwcGVuLiBB ZnRlciB0aGF0DQogIHdlIHdpbGwgbW92ZSB0aGlzIGludG8gdGhlIE9DYW1sIFBsYXRmb3JtIHNl Y3Rpb24gb2YgT0NhbWwub3JnIHRvIHVzZQ0KICBhcyBhIHJlZmVyZW5jZSBhbmQga2VlcCBpdCB1 cGRhdGVkIG92ZXIgdGltZS4NCg0KICBIYXBweSBjb2RpbmchIDp0d29faHVtcF9jYW1lbDoNCg0K ICAvIEBzdWRoYSAmIEBsZW9zdGVyYSBvbiBiZWhhbGYgb2YgVGFyaWRlcw0KDQoNCltGaXJzdC1D bGFzcyBXaW5kb3dzXQ0KPGh0dHBzOi8vdGFyaWRlcy5jb20vYmxvZy8yMDI0LTA1LTIyLWxhdW5j aGluZy10aGUtZmlyc3QtY2xhc3Mtd2luZG93cy1wcm9qZWN0Lz4NCg0KDQpVcGdyYWRpbmcgU2Vt Z3JlcCBmcm9tIE9DYW1sIDQgdG8gT0NhbWwgNSArIGR5bmFtaWNfZ2MgdXRpbGl0eQ0K4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC91 cGdyYWRpbmctc2VtZ3JlcC1mcm9tLW9jYW1sLTQtdG8tb2NhbWwtNS1keW5hbWljLWdjLXV0aWxp dHkvMTYyNTYvNT4NCg0KDQpDb250aW51aW5nIHRoaXMgdGhyZWFkLCBOYXQgTW90ZSBhbm5vdW5j ZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgA0KDQogIEkndmUganVzdCByZWxlYXNlZCBhIG5ldyB2ZXJzaW9uIHRo YXQgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBtb2R1bGU6DQoNCiAg4pSM4pSA4pSA4pSA4pSADQog IOKUgiBtb2R1bGUgQ29uZmlnIDogc2lnDQogIOKUgiAgICgqKiBQcm9kdWNlcyBhIHNpbXBsZSBj b25maWcgdGhhdCB3aWxsIHNldCBzcGFjZV9vdmVyaGVhZCB0byAxMjAsIHRoZSBkZWZhdWx0LA0K ICDilIIgICAgKiB3aGVuIHRoZSBzaXplIG9mIHRoZSBtYWpvciBoZWFwIGlzIGJlbG93IHRoZSBn aXZlbiB0aHJlc2hvbGQuIFdoZW4gdGhlIGhlYXANCiAg4pSCICAgICogaXMgbGFyZ2VyIHRoYW4g dGhlIGdpdmVuIHRocmVzaG9sZCwgc3BhY2Vfb3ZlcmhlYWQgd2lsbCBiZSBzZXQgdG8gODAuICop DQogIOKUgiAgIHZhbCBzaW1wbGU6IHRocmVzaG9sZF9tYjppbnQgLT4gY29uZmlnDQogIOKUgiBl bmQNCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgVGhhdCB3aWxsIG1ha2UgdGhlIHV0aWxpdHkgZXZl biBlYXNpZXIgdG8gY29uZmlndXJlIHdoaWxlIHN0aWxsDQogIGFsbG93aW5nIHRoZSBhcHBsaWNh dGlvbiBkZXZlbG9wZXIgdG8gc2V0IGEgbWVtb3J5IHRocmVzaG9sZCB0aGF0IGlzDQogIHJlbGV2 YW50IHRvIHRoZW0uDQoNCg0KVHlwZXNhZmUgY29tcGxpY2F0ZWQgY29tYmluYXRpb25zDQrilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8 aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Jsb2ctdHlwZXNhZmUtY29tcGxpY2F0ZWQtY29t YmluYXRpb25zLzE2NTQ4LzE+DQoNCg0KcmFuZCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhleWEgZXZlcnlvbmUg4oCTDQoNCiAgSSd2 ZSBbd3JpdHRlbiBhIGJsb2dwb3N0XSBiYXNlZCBvbiBhIHJlY2VudCBleHBlcmllbmNlIGFkZGlu Zw0KICB0eXBlc2FmZXR5IHRvIHRoZSBgcG1tZCcgY29kZWJhc2Ug4oCTIGhhbmRsaW5nIGEgbG90 IG9mIGRpZmZlcmVudCBkYXRhDQogIGFuZCBmdW5jdGlvbnMgdGhhdCBuZWVkcyB0byBiZSBjb21i aW5lZCBpbiB0aGUgcmlnaHQgd2F5cy4NCg0KICBJbiBpdCBJIG1ha2UgdXNlIG9mIHBoYW50b20g dHlwZXMgYW5kIE9DYW1scyBtb2R1bGUgc3lzdGVtIHRvIGV4cHJlc3MNCiAgdGhlIGludmFyaWFu dHMgLSB3aGljaCBJIGZpbmQgaXMgYSBuaWNlIHNldCBvZiB0eXBlc3lzdGVtIGZlYXR1cmVzIHRv DQogIGV4cHJlc3MgY29tcGxpY2F0ZWQgcmVsYXRpb25zIGluIGEgcmVsYXRpdmVseSBzaW1wbGUg YnV0IGVmZmljaWVudCBhbmQNCiAgc2NhbGVhYmxlIHdheS4gQWxzbywgSSB0aGluayBpbnRlcmVz dGluZyBkZXNpZ24gcGF0dGVybnMgY2FuIGVtZXJnZQ0KICBmcm9tIHRoaXMgd2F5IG9mIHdvcmtp bmcuDQoNCiAgTGV0IG1lIGtub3cgaGVyZSBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGNv bW1lbnRzDQoNCiAgVGhhbmtzICg6DQoNCg0KW3dyaXR0ZW4gYSBibG9ncG9zdF0NCjxodHRwczov L3I3cDUuZWFydGgvYmxvZy8yMDI1LTQtMjUvVHlwZXNhZmUlMjBjb21wbGljYXRlZCUyMGNvbWJp bmF0aW9ucz4NCg0KDQpPdGhlciBPQ2FtbCBOZXdzDQrilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZANCg0KRnJvbSB0aGUgb2NhbWwub3JnIGJsb2cNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgA0KDQogIEhlcmUgYXJlIGxpbmtzIGZyb20gbWFueSBPQ2FtbCBibG9ncyBhZ2dyZWdh dGVkIGF0IFt0aGUgb2NhbWwub3JnDQogIGJsb2ddLg0KDQogIOKAoiBbU1BGLCBES0lNLCBETUFS QyBhbmQgQVJDXQ0KICDigKIgW0ZlYXR1cmUgUGFyaXR5IFNlcmllczogUmVzdG9yaW5nIHRoZSBN U1ZDIFBvcnRdDQoNCg0KW3RoZSBvY2FtbC5vcmcgYmxvZ10gPGh0dHBzOi8vb2NhbWwub3JnL2Js b2cvPg0KDQpbU1BGLCBES0lNLCBETUFSQyBhbmQgQVJDXQ0KPGh0dHBzOi8vYmxvZy5yb2J1ci5j b29wL2FydGljbGVzLzIwMjUtMDQtMjMtZW1haWwtdmVyaWZpY2F0aW9uLmh0bWw+DQoNCltGZWF0 dXJlIFBhcml0eSBTZXJpZXM6IFJlc3RvcmluZyB0aGUgTVNWQyBQb3J0XQ0KPGh0dHBzOi8vdGFy aWRlcy5jb20vYmxvZy8yMDI1LTA0LTIzLWZlYXR1cmUtcGFyaXR5LXNlcmllcy1yZXN0b3Jpbmct dGhlLW1zdmMtcG9ydD4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJ ZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBh bmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNo aXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFs c28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3Jp YmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQg bWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0K W3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNT IGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24v Y3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5m by9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUu bmV0Lz4NCg0K --=-=-= Content-Type: text/html Content-Disposition: inline OCaml Weekly News

OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of April 22 to 29, 2025.

dream-html, pure-html 3.10.0 and 3.10.1

Yawar Amin announced

Happy to announce a couple of releases of dream-html:

3.10.0: add support for RSS/Atom markup; add ability to handle multiple nested form values; concatenate HTML nodes with a separator node between them; add support for popovers and Declarative Shadow DOM markup.

3.10.1: use single quotes for attributes which must contain JSON values, like htmx's hx-vals.

State of OCaml Platform on Windows

Leandro Ostera announced

Hello folks :waving_hand:

We're happy to share the first version of the State of the OCaml Platform on Windows document with you. Please find the document here: https://docs.google.com/document/d/1-aTygzDsxy4mnqvSKEVhifA1KDRyP-Axdogjgb8i3Gg/edit?usp=sharing.

As part of the First-Class Windows project, we've been assessing the state of OCaml on Windows. This document is a summary of our investigation, including our consultations with individuals involved in Windows-related work.

This document started internally at Tarides and quickly included major contributors and users of OCaml on Windows for its drafting and review stages. Thank you to @jbeckford, @klakplok, @Vincent_Balat, @Rucikir, @lambda_foo, @rikusilvola, @kayceesrk, @dra27, @Isabella, @rjbou, @avsm, @kentookura, @oandrieu, @shonfeder, @sabine, and everyone else at Tarides for helping us shape and review this document! :folded_hands:

The immediate call to action for you is to give us your inputs and thoughts, challenge it and help us make it better. You can do this directly on that document, or by quoting into this thread.

We'll have a window of 8 weeks to allow for this to happen. After that we will move this into the OCaml Platform section of OCaml.org to use as a reference and keep it updated over time.

Happy coding! :two_hump_camel:

/ @sudha & @leostera on behalf of Tarides

Upgrading Semgrep from OCaml 4 to OCaml 5 + dynamic_gc utility

Continuing this thread, Nat Mote announced

I've just released a new version that includes the following module:

module Config : sig
  (** Produces a simple config that will set space_overhead to 120, the default,
   * when the size of the major heap is below the given threshold. When the heap
   * is larger than the given threshold, space_overhead will be set to 80. *)
  val simple: threshold_mb:int -> config
end

That will make the utility even easier to configure while still allowing the application developer to set a memory threshold that is relevant to them.

Typesafe complicated combinations

rand announced

Heya everyone –

I've written a blogpost based on a recent experience adding typesafety to the pmmd codebase – handling a lot of different data and functions that needs to be combined in the right ways.

In it I make use of phantom types and OCamls module system to express the invariants - which I find is a nice set of typesystem features to express complicated relations in a relatively simple but efficient and scaleable way. Also, I think interesting design patterns can emerge from this way of working.

Let me know here if you have any questions or comments

Thanks (:

Other OCaml News

From the ocaml.org blog

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

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

--=-=-=--