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=GyFW1CjY; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 4A10440097 for ; Tue, 5 May 2026 09:36:12 +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=QK1g8Rq+T5NlqosgSMAhwdyZxgodu7utibpk8FwKiOo=; b=GyFW1CjYgdcVDVNOSng4t24bB8EVEtRaqNR4RX0aflLsng/hhL1mx1Yj J1ZRgnzlGRdQw0xMU50IjryzOpQw8+pr+ImAE6Z6xYHkSVpbsZOC7xho2 JcM9CPR9asATH1YGuHIJQf1mtDfeC3yEXl14odUuJsC6rPvyIAZtcexdl U=; X-CSE-ConnectionGUID: Qnw7g2k3RFOUXMEOlULHFg== X-CSE-MsgGUID: DZxaO7RZQjWUyCT5kRiPzw== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.23,217,1770591600"; d="asc'?scan'208,217";a="275362255" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 05 May 2026 11:36:10 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 3B8BC820DC; Tue, 5 May 2026 11:36:10 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 722AE820CD for ; Tue, 5 May 2026 11:35:57 +0200 (CEST) X-CSE-ConnectionGUID: xY3itXBAR2y+h5Bt4vx9lg== X-CSE-MsgGUID: CJ+YZXfWRnSZpw3qnU4TmA== IronPort-SDR: 69f9b9fc_5N23au1SdyV09u9dxO6ZkbsiH+nf2p6w4+ghqqElRdZp0qh fTodNFvFThtGFAQdbSFt8iM7R2EY7hP+CpNhlRw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0GWFAA4uPlphSIeaIFahBZbKRoBbF8ZGgcISQOEGTyDT?= =?us-ascii?q?44lik2HAIp7DYFcgREDGBYhAg4HAQMBCAUuARsEAQIEAQEBAgECAYILgnQCF?= =?us-ascii?q?o0cAh8GAQQ0EwECBAEBAQEDAgMBAQEBAQEBAQEBAQsBAQEEAQEBAgEBAgQDA?= =?us-ascii?q?QEBAQIQAQEBAUBJhhUGNA2CRVFxZQk3AQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAgQIAYEQDAIBCAoTAQE4GCMDCQMIAQYDA?= =?us-ascii?q?gQNATUXARIUBoJoAYIgAgJPAwUMBplFm0R6gTKBAYIMAQEGgQg+BRAP2kKBX?= =?us-ascii?q?gkJgU2BWIQagkoPDQEqSWoCAQKET4Q/Jw+BVUSBFTWBc1FvgkoXAQEBARh/J?= =?us-ascii?q?QEBAgZFCQkRgwuCaYIRFYEOgXx8gQaBWwUbJ4FkhB+BSYEhgkIsAVUTFwsHB?= =?us-ascii?q?V6BCAMqLy1uMh2BIz4XNFgbBwWBS4JngVeBA4ReeCMvA052AwttPTcUG4lSE?= =?us-ascii?q?CENgSVEGR0PgTQJJg4fGQUBAjwjAQIRBwkFBQEHAwkBBwgGAQEiLgQEBQMBE?= =?us-ascii?q?AIIEQQBCQEFEAQRCAoDBAEGAwIZAgMMDBIBCAILAQEtA44thBYlFAECKopQp?= =?us-ascii?q?n0dbTQHhB+BXgYMiQiBJpYHhASBV4s8hwKSUiKYZCKCNocogSYJB4JTig4Ii?= =?us-ascii?q?z0NE4VFgX8jPA2BAAwHMxowQ4JnCUccD4R2imEBBQMBgWReQX0teYF0O4Jmv?= =?us-ascii?q?25BNQIBAQ8sBwIHAQsEhWsBAYwsDoFLAQE?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:3Y3Uh6+dLYMxnRY5qcxuk+DLI+orL9Y04lQ7vn2ZKCYlEPBw8v rEoB11726RtN98YhAdcLO7Scq9qA3nhPtICOAqVN/JMTUO3lHJEGgI1+TfKlPbdxEWjtQy6Z td X-Talos-CUID: 9a23:G2X5tmDlPXZmxVn6EzlWr08IKuoMSCfMj3eNCVPkF3Y4TLLAHA== X-Talos-MUID: =?us-ascii?q?9a23=3A1Xgx5A+tTIYMIVPER0dvbDWQf+xKoJWcOE4yq5M?= =?us-ascii?q?9idGbbjV2BmuhiR3iFw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.23,217,1770591600"; d="asc'?scan'208,217";a="275362121" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDGHvcVibp1tjxk6vFSHMaLWJBHGc5IpOlLDN4?= =?us-ascii?q?GCaB6qkqKRmTzec7zjcMt+SMt0LESrcQnL5WsI1bTL1rdTW69OiaCLjw?= =?us-ascii?q?s/5mRNfGvcSBlklCzRo5189rnbzXF1ML2OrptIwTA65gr9xa1n7RCwk8?= =?us-ascii?q?8FlNZqkvr4UjHx1OpwAuzj2g=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; 05 May 2026 11:35:56 +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 D68E81A39C; Tue, 5 May 2026 11:35:55 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 05 May 2026 11:35:53 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="===-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue May 5 11:35:56 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.495977, queueID=033881A4C7 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: 19504 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: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgQXByaWwgMjggdG8gTWF5DQowNSwgMjAyNi4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpPYyDi gJQgYSBDYXJnby1saWtlIENMSSBmb3IgT0NhbWwgYmVnaW5uZXJzIChBSS1hc3Npc3RlZCwgZmVl ZGJhY2sgdmVyeSB3ZWxjb21lKQ0KRHVuZSBQYWNrYWdlIE1hbmFnZW1lbnQgVXBkYXRlcw0KT0Nh bWwgVXNlcnMgU3VydmV5IDIwMjYNCk9DYW1sIFdlYiB0dXRvcmlhbHMNClZhbGtleSAwLjMuMTog Y2xpZW50LXNpZGUgY2FjaGluZywgYmxvY2tpbmcgcG9vbHMsIElBTSBhdXRoIGFuZCBtVExTDQpP bGQgQ1dODQoNCg0KT2Mg4oCUIGEgQ2FyZ28tbGlrZSBDTEkgZm9yIE9DYW1sIGJlZ2lubmVycyAo QUktYXNzaXN0ZWQsIGZlZWRiYWNrIHZlcnkgd2VsY29tZSkNCuKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6 DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qvb2MtYS1jYXJnby1saWtlLWNsaS1mb3It b2NhbWwtYmVnaW5uZXJzLWFpLWFzc2lzdGVkLWZlZWRiYWNrLXZlcnktd2VsY29tZS8xODAyMC8x Pg0KDQoNCkVtaWwgS2xvZWRlbiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhpIGV2ZXJ5b25l LA0KDQogIEknbSBhIG5ld2NvbWVyIHRvIE9DYW1sLCBhbmQgb25lIG9mIHRoZSB0aGluZ3MgdGhh dCBoYXMgc2xvd2VkIG1lIGRvd24NCiAgaXMgdGhlIHRvb2xpbmcgc2V0dXA6IHVuZGVyc3RhbmRp bmcgb3BhbSBzd2l0Y2hlcywgcmVtZW1iZXJpbmcgdG8NCiAgYGV2YWwgJChvcGFtIGVudiknLCBr bm93aW5nIHdoZW4gdG8gcmVnZW5lcmF0ZSBgLm9wYW1+ZmlsZXMuIFNvDQogICh0b2dldGhlciB3 aXRoIENsYXVkZSBDb2RlKSBJIGJ1aWx0IH5vYycgLSBhIHNtYWxsIENMSSB0aGF0IHdyYXBzDQog IGBvcGFtJyBhbmQgYGR1bmUnIGFuZCBnaXZlcyB0aGVtIGEgQ2FyZ28tIG9yIHV2LWxpa2UgaW50 ZXJmYWNlOg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb2MgbmV3IG15X2FwcCAjIHNjYWZm b2xkIHByb2plY3QgKyBpbml0aWFsaXNlIGlzb2xhdGVkIHN3aXRjaA0KICDilIIgb2MgYWRkIHlv anNvbiAjIGFkZCBkZXBlbmRlbmN5LCB1cGRhdGUgb2MudG9tbCwgaW5zdGFsbA0KICDilIIgb2Mg YnVpbGQgIyBlbnN1cmUgZGVwcywgZHVuZSBidWlsZA0KICDilIIgb2MgcnVuICMgZW5zdXJlIGRl cHMsIGR1bmUgZXhlYw0KICDilJTilIDilIDilIDilIANCg0KICBObyBgb3BhbSBzd2l0Y2ggY3Jl YXRlJywgbm8gYGV2YWwgJChvcGFtIGVudiknLCBubyBoYW5kLWVkaXRpbmcNCiAgYC5vcGFtJyBm aWxlcy4NCg0KDQpXaGF0IGl0IGlzOg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM DQoNCiAgQSBzbWFsbCwgdGhpbiBvcmNoZXN0cmF0aW9uIGxheWVyIHdpdGggbm8gZGVwZW5kZW5j aWVzIGJleW9uZCBvcGFtIGFuZA0KICBkdW5lIHRoZW1zZWx2ZXMuIEl0IGNhbGxzIG9wYW0gdG8g bWFuYWdlIHN3aXRjaGVzIGFuZCByZXNvbHZlDQogIHBhY2thZ2VzLCBhbmQgZHVuZSB0byBidWls ZCAtIHdyYXBwaW5nIHRoZSB0b29scyB0aGUgY29tbXVuaXR5IGFscmVhZHkNCiAgdXNlcyBhbmQg dHJ1c3RzIHJhdGhlciB0aGFuIHJlcGxhY2luZyB0aGVtLiBJdCBkZWxpYmVyYXRlbHkgZG9lcyBs ZXNzOg0KICBpZiB5b3Ugd2FudCBmdWxsIGNvbnRyb2wgb3ZlciB5b3VyIGVudmlyb25tZW50LCBv cGFtIGdpdmVzIHlvdSB0aGF0DQogIGRpcmVjdGx5Lg0KDQoNCldoYXQgaXQgaXNuJ3Q6DQrilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBBIHJlcGxhY2VtZW50 IGZvciBvcGFtIG9yIGR1bmUuIFRoZSBpbnRlbnRpb24gaXMgdG8gb2ZmZXIgYSBzaW1wbGVyDQog IHN1cmZhY2UgZm9yIHRob3NlIHdobyBwcmVmZXIgaXQsIHdoZXRoZXIgeW91J3JlIGp1c3Qgc3Rh cnRpbmcgb3V0IG9yDQogIHlvdSd2ZSBiZWVuIHdyaXRpbmcgT0NhbWwgZm9yIHllYXJzIGFuZCB3 YW50IGxlc3MgY2VyZW1vbnkgZm9yDQogIGV2ZXJ5ZGF5IHRhc2tzLg0KDQoNCkEgbm90ZSBvbiBB SSBhc3Npc3RhbmNlOg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgSSBzaG91bGQgYmUgdXBmcm9udDog dGhpcyBwcm9qZWN0IHdhcyBkZXZlbG9wZWQgYWxtb3N0IGVudGlyZWx5IHdpdGgNCiAgdGhlIGhl bHAgb2YgQ2xhdWRlIENvZGUuIEkgd3JvdGUgdGhlIHNwZWNzLCBtYWRlIHRoZSBkZXNpZ24gZGVj aXNpb25zLA0KICBhbmQgcmV2aWV3ZWQgZXZlcnl0aGluZyAtIGJ1dCB0aGUgY29kZSBpcyBhbG1v c3QgZW50aXJlbHkNCiAgQUktZ2VuZXJhdGVkLiBJIHRoaW5rIHRoYXQncyB3b3J0aCBuYW1pbmcs IGJvdGggZm9yIHRyYW5zcGFyZW5jeSBhbmQNCiAgYmVjYXVzZSBpdCdzIGFuIGludGVyZXN0aW5n IGNhc2Ugc3R1ZHkgaW4gd2hhdCBBSS1hc3Npc3RlZCBkZXZlbG9wbWVudA0KICBsb29rcyBsaWtl IGZvciBhIHNtYWxsIHRvb2wuDQoNCg0KUHJpb3IgYXJ0Og0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWMDQoNCiAgSSdtIGF3YXJlIG9mIGEgZmV3IHNpbWlsYXIgZWZmb3J0cy4gYGVzeScg aXMgdGhlIGNsb3Nlc3QgaW4gc3Bpcml0IC0NCiAgc2FuZGJveGVkIGJ1aWxkcywgYSBsb2NrIGZp bGUsIGEgc2ltcGxlciBtYW5pZmVzdCAtIGJ1dCBpdCBtYWtlcyBzb21lDQogIGRpZmZlcmVudCBj aG9pY2VzOiBpdCByZXF1aXJlcyBOb2RlLmpzIChgbnBtIGluc3RhbGwgLWcgZXN5JykgYW5kDQog IGJyaW5ncyBpdHMgb3duIGRlcGVuZGVuY3kgcmVzb2x2ZXIgcmF0aGVyIHRoYW4gZGVsZWdhdGlu ZyB0bw0KICBvcGFtLiBgb2MnIGlzIGEgbmFycm93ZXIgdG9vbDogbm8gYWRkaXRpb25hbCBydW50 aW1lIGRlcGVuZGVuY2llcywNCiAgc3RheXMgb24gdG9wIG9mIHN0YW5kYXJkIG9wYW0gYW5kIGR1 bmUsIGFuZCB0cmFkZXMgcG93ZXIgZm9yDQogIHNpbXBsaWNpdHkufiBkdW5lIGluaXQgcHJvamVj dH4gaGFuZGxlcyBzY2FmZm9sZGluZyBidXQgbGVhdmVzIHN3aXRjaA0KICBtYW5hZ2VtZW50IHRv IHlvdS4gb3BhbSdzIG93biBsb2NhbCBzd2l0Y2hlcyAoYG9wYW0gc3dpdGNoIGNyZWF0ZQ0KICAu IDUuMi4wJykgYXJlIGVzc2VudGlhbGx5IHdoYXQgYG9jJyBhdXRvbWF0ZXMsIGJ1dCB5b3Ugc3Rp bGwgaGF2ZSB0bw0KICBkcml2ZSB0aGVtIG1hbnVhbGx5LiBJZiB0aGVyZSdzIHNvbWV0aGluZyBJ J3ZlIG1pc3NlZCB0aGF0IGFscmVhZHkNCiAgc29sdmVzIHRoaXMgY2xlYW5seSwgSSdkIGdlbnVp bmVseSBsaWtlIHRvIGtub3cuDQoNCg0KV2h5IG5vdCBqdXN0IHNoZWxsIGFsaWFzZXM/DQrilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYwNCg0KICBZb3UgcHJvYmFibHkgY291bGQgZ2V0IGNsb3NlIHdp dGggYSBmZXcgc2hlbGwgZnVuY3Rpb25zLiBUaGUgcmVhc29ucyBJDQogIHdlbnQgZnVydGhlcjog YSBjcm9zcy1wbGF0Zm9ybSBiaW5hcnkgbmVlZHMgbm8gc2hlbGwgc2V0dXAsIHRoZQ0KICBsb2Nr ZmlsZSBnaXZlcyByZXByb2R1Y2libGUgYnVpbGRzIGFjcm9zcyBtYWNoaW5lcywgYW5kIGhhdmlu ZyBhDQogIHNpbmdsZSBgb2MudG9tbCcgYXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBpcyBjbGVhbmVy IHRoYW4gcmVtZW1iZXJpbmcNCiAgd2hpY2ggb3BhbSBjb21tYW5kcyB0byBydW4uIFdoZXRoZXIg dGhhdCdzIHdvcnRoIGl0IGlzIGEgZmFpcg0KICBxdWVzdGlvbi4NCg0KDQpXaHkgR28sIG5vdCBP Q2FtbDoNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjA0KDQogIFBhcnRseSB0aGUgYm9vdHN0cmFwcGluZyBwcm9ibGVtIOKAlCBpdCBmZWx0IG9k ZCB0byB3cml0ZSBhIHRvb2wgdGhhdA0KICBoZWxwcyB5b3Ugc2V0IHVwIE9DYW1sIGJlZm9yZSB5 b3UgY2FuIHNldCB1cCBPQ2FtbC4gTW9yZSBwcmFjdGljYWxseSwNCiAgR28gbWFkZSBpdCBlYXN5 IHRvIHNoaXAgYSBzaW5nbGUgc3RhdGljIGJpbmFyeSB3aXRoIG5vIHJ1bnRpbWUNCiAgZGVwZW5k ZW5jaWVzLCBhbmQgaXQgbGV0IG1lIGJ1aWxkIGFuZCBpdGVyYXRlIG9uIHRoZSB0b29sIHF1aWNr bHkuIEknbQ0KICBub3QgYWdhaW5zdCBhIHBvcnQgdG8gT0NhbWwgaWYgc29tZW9uZSB3YW50ZWQg dG8gdGFrZSB0aGF0IG9uLg0KDQoNCkN1cnJlbnQgc3RhdGU6DQrilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBUaGUgdG9vbCB3b3JrcyBmb3IgbXkgcGVyc29u YWwgdXNlLCBoYXMgYSB0ZXN0IHN1aXRlLCBhIGxvY2tmaWxlLCBhbmQNCiAgYmFzaWMgQ0kuIEl0 J3Mgcm91Z2ggYXJvdW5kIHRoZSBlZGdlcyBhbmQgSSdtIHN1cmUgdGhlcmUgYXJlIHRoaW5ncw0K ICB0aGF0IHdvdWxkIG1ha2UgYW4gZXhwZXJpZW5jZWQgT0NhbWwgZGV2ZWxvcGVyIHdpbmNlLiBU aGF0J3MgcGFydCBvZg0KICB3aHkgSSdtIHBvc3RpbmcgLSBJJ2QgZ2VudWluZWx5IHZhbHVlIGZl ZWRiYWNrIG9uOg0KICDigKIgRG9lcyB0aGlzIHNvbHZlIGEgcmVhbCBwcm9ibGVtLCBvciBkb2Vz IHRoZSBjb21tdW5pdHkgaGF2ZSBiZXR0ZXINCiAgICBhbnN3ZXJzIEkgbWlzc2VkPw0KICDigKIg QXJlIHRoZXJlIGNvcnJlY3RuZXNzIGlzc3VlcyB3aXRoIGhvdyBgb2MnIG1hbmFnZXMgc3dpdGNo ZXMgb3INCiAgICBnZW5lcmF0ZXMgYC5vcGFtJyBmaWxlcz8NCiAg4oCiIFdoYXQncyBtaXNzaW5n IGJlZm9yZSB0aGlzIHdvdWxkIGJlIHVzZWZ1bCB0byB5b3U/DQoNCiAgVGhlIGhvbWVwYWdlIGlz IGF0IFtlbWlsa2xvZWRlbi5naXRodWIuaW8vb2MgXSBhbmQgdGhlIHNvdXJjZSBpcyBhdA0KICBb Z2l0aHViLmNvbS9lbWlsa2xvZWRlbi9vY10uDQoNCiAgVGhhbmtzIGZvciByZWFkaW5nIGFuZCBJ IGxvb2sgZm9yd2FyZCB0byB5b3VyIGZlZWRiYWNrLg0KDQoNCltlbWlsa2xvZWRlbi5naXRodWIu aW8vb2MgXSA8aHR0cHM6Ly9lbWlsa2xvZWRlbi5naXRodWIuaW8vb2M+DQoNCltnaXRodWIuY29t L2VtaWxrbG9lZGVuL29jXSA8aHR0cHM6Ly9naXRodWIuY29tL2VtaWxrbG9lZGVuL29jPg0KDQoN CkR1bmUgUGFja2FnZSBNYW5hZ2VtZW50IFVwZGF0ZXMNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3Jn L3QvZHVuZS1wYWNrYWdlLW1hbmFnZW1lbnQtdXBkYXRlcy8xODAyMy8xPg0KDQoNClNob24gYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBI ZWxsbyEgVGhlIFRhcmlkZXMgdGVhbSBpcyB3cml0aW5nIHRvIHNoYXJlIHVwZGF0ZXMgb24gRHVu ZSBwYWNrYWdlDQogIG1hbmFnZW1lbnQuDQoNCg0KQ29udGV4dA0K4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAgRHVuZSBwYWNrYWdlIG1hbmFnZW1lbnQgYWltcyB0byBpbXByb3ZlIHNvbWUgZGV2 ZWxvcGVyIHdvcmtmbG93cyBieQ0KICBzaW1wbGlmeWluZyB0aGUgdXNlIG9mIG9wYW0gZGVwZW5k ZW5jaWVzIGluIHByb2plY3RzIGJ1aWx0IHdpdGgNCiAgRHVuZS4gVG8gbGVhcm4gbW9yZSwgc2Vl IHRoZSB0dXRvcmlhbCwgW09DYW1sIFBhY2thZ2UgTWFuYWdlbWVudCBXaXRoDQogIER1bmVdLg0K DQogIEl04oCZcyBiZWVuIHRvbyBsb25nIHNpbmNlIHdlIHNoYXJlZCBhbiB1cGRhdGUsIGVzcGVj aWFsbHkgY29uc2lkZXJpbmcNCiAgb3VyIGdyYXRpdHVkZSBmb3IgW2FsbCB0aGUgZXhjZWxsZW50 IGZlZWRiYWNrXSB3ZSBoYXZlIHJlY2VpdmVkLiBCdXQNCiAgRHVuZSBjb250cmlidXRvcnMgaGF2 ZSBiZWVuIGhhcmQgYXQgd29yayBbZml4aW5nIGlzc3Vlc10gYW5kIHNvbHZpbmcNCiAgdHJpY2t5 IGFyY2hpdGVjdHVyYWwgc25hZ3MgcHJlc2VudCBpbiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uLg0K DQoNCltPQ2FtbCBQYWNrYWdlIE1hbmFnZW1lbnQgV2l0aCBEdW5lXQ0KPGh0dHBzOi8vZHVuZS5y ZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvdHV0b3JpYWxzL2R1bmUtcGFja2FnZS1tYW5hZ2VtZW50 L2luZGV4Lmh0bWw+DQoNClthbGwgdGhlIGV4Y2VsbGVudCBmZWVkYmFja10NCjxodHRwczovL2dp dGh1Yi5jb20vb2NhbWwvZHVuZS9pc3N1ZXM/cT1pcyUzQWlzc3VlJTIwc3RhdGUlM0FvcGVuJTIw bGFiZWwlM0ElMjJwYWNrYWdlJTIwbWFuYWdlbWVudCUyMj4NCg0KW2ZpeGluZyBpc3N1ZXNdDQo8 aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL2R1bmUvcHVsbHM/cT1pcyUzQXByK3BrZytpcyUzQWNs b3NlZD4NCg0KDQpBdmFpbGFibGUgbm93DQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYwNCg0KICBUaGFua3MgdG8gbWFueSBjb250cmlidXRvcnMsIHRoZSBmb2xsb3dpbmcg ZnVuY3Rpb25hbGl0aWVzIGFyZQ0KICBhdmFpbGFibGUgb24gTGludXggYW5kIE1hY09TIGluIHRo ZSBsYXRlc3QgcmVsZWFzZSBvZiBEdW5lICgzLjIyKToNCg0KICDigKIgW21hbmFnaW5nIGRlcGVu ZGVuY2llcyBwdWJsaXNoZWQgaW4gb3BhbSByZXBvc2l0b3JpZXNdICh0aGUgW3Zhc3QNCiAgICBt YWpvcml0eSBvZiBvcGFtIHBhY2thZ2VzIGFyZSBzdXBwb3J0ZWRdLCBidXQgbm90IGFsbCkNCiAg 4oCiIFtwaW5uaW5nIGRlcGVuZGVuY2llcyAocmVjdXJzaXZlbHkpXQ0KICDigKIgW3N1cHBvcnQg Zm9yIGN1c3RvbSBvcGFtLXJlcG9zaXRvcmllc10gKHdoaWNoLCBmb3IgZXhhbXBsZSwgY2FuIGJl DQogICAgdXNlZCBmb3IgT3hDYW1sIHByb2plY3RzIGJ5IGZvbGxvd2luZyB0aGlzIFtkb2N1bWVu dGVkIGNvbmZpZ3VyYXRpb24NCiAgICByZWNpcGVdKQ0KICDigKIgW2xvY2tpbmcgZGVwZW5kZW5j eSB2ZXJzaW9uc10sIHRvIHByb3ZpZGUgYSByZXByb2R1Y2libGUgZW52aXJvbm1lbnQNCiAgICBm b3IgZGV2ZWxvcGVycyBhbmQgQ0kgKHBvcnRhYmx5LCBhY3Jvc3Mgc3VwcG9ydGVkIHBsYXRmb3Jt cykNCiAg4oCiIFtzdXBwb3J0IGZvciBtYW5hZ2luZyBzZWxlY3QgZGV2ZWxvcGVyIHRvb2xpbmdd IChzaGFreSwgYnV0IHVzYWJsZQ0KICAgIG9uIHRoZSBoYXBweSBwYXRoKQ0KICDigKIgbW9zdCBy ZWNlbnRseSwgd2XigJl2ZSBbYWRkZWQgc3VwcG9ydF0gZm9yIHRoZSBbcmVsb2NhdGFibGUgY29t cGlsZXJdDQoNCiAgQWRkaXRpb25hbGx5LCB0aGUgZm9sbG93aW5nIHN1cHBvcnRpbmcgdXRpbGl0 aWVzIGFyZSBhdmFpbGFibGU6DQoNCiAg4oCiIFthIGJpbmFyeSBkaXN0cmlidXRpb24gZm9yIHN1 cHBvcnRlZCBwbGF0Zm9ybXNdIG9mZmVyaW5nIG5pZ2h0bHkNCiAgICBidWlsZHMgYW5kIHJlbGVh c2VkIHZlcnNpb25zDQogIOKAoiBbc2V0dXAtZHVuZV0sIGEgR2l0SHViIGFjdGlvbiBlbmFibGlu ZyBxdWljayBhbmQgZWFzeSBDSSBmb3INCiAgICBwcm9qZWN0cyB0aGF0IHVzZSBkdW5lIHBhY2th Z2UgbWFuYWdlbWVudA0KDQoNClttYW5hZ2luZyBkZXBlbmRlbmNpZXMgcHVibGlzaGVkIGluIG9w YW0gcmVwb3NpdG9yaWVzXQ0KPGh0dHBzOi8vZHVuZS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUv dHV0b3JpYWxzL2R1bmUtcGFja2FnZS1tYW5hZ2VtZW50L3NldHVwLmh0bWwjZGVjbGFyZS1kZXBl bmRlbmNpZXM+DQoNClt2YXN0IG1ham9yaXR5IG9mIG9wYW0gcGFja2FnZXMgYXJlIHN1cHBvcnRl ZF0NCjxodHRwczovL2R1bmUuY2hlY2suY2kuZGV2Lz4NCg0KW3Bpbm5pbmcgZGVwZW5kZW5jaWVz IChyZWN1cnNpdmVseSldDQo8aHR0cHM6Ly9kdW5lLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS90 dXRvcmlhbHMvZHVuZS1wYWNrYWdlLW1hbmFnZW1lbnQvcGlubmluZy5odG1sPg0KDQpbc3VwcG9y dCBmb3IgY3VzdG9tIG9wYW0tcmVwb3NpdG9yaWVzXQ0KPGh0dHBzOi8vZHVuZS5yZWFkdGhlZG9j cy5pby9lbi9zdGFibGUvdHV0b3JpYWxzL2R1bmUtcGFja2FnZS1tYW5hZ2VtZW50L3JlcG9zLmh0 bWw+DQoNCltkb2N1bWVudGVkIGNvbmZpZ3VyYXRpb24gcmVjaXBlXQ0KPGh0dHBzOi8vZHVuZS5y ZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvdHV0b3JpYWxzL2R1bmUtcGFja2FnZS1tYW5hZ2VtZW50 L294Y2FtbC5odG1sPg0KDQpbbG9ja2luZyBkZXBlbmRlbmN5IHZlcnNpb25zXQ0KPGh0dHBzOi8v ZHVuZS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdHV0b3JpYWxzL2R1bmUtcGFja2FnZS1tYW5h Z2VtZW50L2xvY2tpbmcuaHRtbD4NCg0KW3N1cHBvcnQgZm9yIG1hbmFnaW5nIHNlbGVjdCBkZXZl bG9wZXIgdG9vbGluZ10NCjxodHRwczovL2R1bmUucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3Jl ZmVyZW5jZS9kdW5lLXRvb2xzLmh0bWw+DQoNClthZGRlZCBzdXBwb3J0XSA8aHR0cHM6Ly9naXRo dWIuY29tL29jYW1sL2R1bmUvcHVsbC8xMzMyMT4NCg0KW3JlbG9jYXRhYmxlIGNvbXBpbGVyXQ0K PGh0dHBzOi8vd3d3LmRyYTI3LnVrL2Jsb2cvcGxhdGZvcm0vMjAyNS8xMi8xNy9pdHMtbWVyZ2Vk Lmh0bWw+DQoNClthIGJpbmFyeSBkaXN0cmlidXRpb24gZm9yIHN1cHBvcnRlZCBwbGF0Zm9ybXNd DQo8aHR0cHM6Ly9uaWdodGx5LmR1bmUuYnVpbGQvPg0KDQpbc2V0dXAtZHVuZV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC1kdW5lL3NldHVwLWR1bmU+DQoNCg0KQ3VycmVudCBzdGF0dXMgYW5k IGZvY3VzDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBUaGFua3MgdG8gc2V2ZXJhbCByZWd1bGFyIHVz ZXJzIGluIHRoZSBjb21tdW5pdHkgYW5kIHVzYWdlIGluIG1hbnkgb2YNCiAgdGhlIENJIHN5c3Rl bXMgd2UgbWFpbnRhaW4sIHdlIGFyZSBnYXRoZXJpbmcgb25nb2luZyBmZWVkYmFjayBhbmQNCiAg ZXhlcmNpc2luZyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBIb3dldmVyLCBvdXIgdGVzdGluZyBo YXMgc2hvd24gdGhlDQogIGZlYXR1cmVzIGFyZSBub3QgeWV0IG1hdHVyZSBlbm91Z2ggdG8gcmVj b21tZW5kIHdpZGVyIHVzZSwgYmV5b25kDQogIGVhZ2VyIGFuZCBlYXJseSBhZG9wdGVycy4gQ29u c2VxdWVudGx5LCBhbGwgdGhlIGRvY3VtZW50YXRpb24gd2FybnMNCiAgdGhhdCB0aGlzIGZ1bmN0 aW9uYWxpdHkgaXMgZXhwZXJpbWVudGFsIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4NCg0KICBXZSBh cmUgY3VycmVudGx5IGZvY3VzZWQgb24gbWF0dXJpbmcgcGFja2FnZSBtYW5hZ2VtZW50IGJleW9u ZCBpdHMNCiAgZXhwZXJpbWVudGFsIHN0YXR1cy4gVGhpcyByZXF1aXJlcyByZXdvcmtpbmcgdGhl IGRldmVsb3BlciB0b29saW5nDQogIHN1cHBvcnQsIHN1cHBvcnRpbmcgcGFja2FnZXMgdGhhdCB1 c2Ugc3ltbGlua3MsIGFuZCBlbnN1cmluZyB3ZSBjYW4NCiAgZG9nZm9vZCBEdW5lIHBhY2thZ2Ug bWFuYWdlbWVudCBpbiBpdHMgb3duIGRldmVsb3BtZW50LiBUaGUgYmVzdCBwbGFjZQ0KICB0byBs b29rIGZvciB3aGF0IHdlIGhhdmUgcGxhbm5lZCBpbiB0aGlzIGN1cnJlbnQgcGhhc2UgaXMNCiAg W05vbi1leHBlcmltZW50YWwgcGFja2FnZSBtYW5hZ2VtZW50IMK3IE1pbGVzdG9uZSAjNjIgwrcg b2NhbWwvZHVuZV0uDQoNCg0KW05vbi1leHBlcmltZW50YWwgcGFja2FnZSBtYW5hZ2VtZW50IMK3 IE1pbGVzdG9uZSAjNjIgwrcgb2NhbWwvZHVuZV0NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwv ZHVuZS9taWxlc3RvbmUvNjI+DQoNCg0KTmV4dCAgdXANCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jA0KDQogIEFmdGVyIG1hdHVyaW5nIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIHdlIHdpbGwgdHVy biBvdXIgZm9jdXMgdG8NCiAgZXh0ZW5kaW5nIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zIGFuZCBp bXByb3ZpbmcgZWNvc3lzdGVtDQogIGludGVncmF0aW9uLiBUaGlzIHdvcmsgd2lsbCBpbmNsdWRl IGFkZGluZyBzdXBwb3J0IGZvciBXaW5kb3dzLA0KICBpbXByb3ZpbmcgY3Jvc3MtY29tcGlsYXRp b24sIHN1cHBvcnRpbmcgYWR2YW5jZWQgdmVuZG9yaW5nIHdvcmtmbG93cywNCiAgYW5kIGludGVn cmF0aW5nIER1bmUgcGFja2FnZSBtYW5hZ2VtZW50IGludG8gdGhlICpvcGFtLWNpKi4gTW9yZQ0K ICB1cGRhdGVzIGFuZCBtb3JlIGFjY2Vzc2libGUgcGxhbm5pbmcgd2lsbCBmb2xsb3cuDQoNCg0K SW5wdXQgYW5kIGNvbnRyaWJ1dGlvbnMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFBsZWFzZSBbcmVhY2gg b3V0XSBpZiB5b3UgZmluZCB0aGlzIHdvcmsgaW50ZXJlc3RpbmcgYW5kIHdvdWxkIGxpa2UgdG8N CiAgaGVscCENCg0KDQpbcmVhY2ggb3V0XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL2R1bmUv YmxvYi9tYWluL0NPTlRSSUJVVElORy5tZD4NCg0KDQpPQ2FtbCBVc2VycyBTdXJ2ZXkgMjAyNg0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9hbm4tb2NhbWwtdXNlcnMtc3VydmV5LTIwMjYvMTgwMjYvMT4NCg0KDQpTYWJpbmUgU2NobWFs dHogYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaSBldmVyeW9uZSwNCg0KICBP biBiZWhhbGYgb2YgdGhlIFtPQ2FtbCBTb2Z0d2FyZSBGb3VuZGF0aW9uXSAoT0NTRiksIEknbSBk ZWxpZ2h0ZWQgdG8NCiAgYW5ub3VuY2UgdGhlICpPQ2FtbCBVc2VycyBTdXJ2ZXkgMjAyNiouIFdl IGludml0ZSB5b3UgdG8gdGFrZSAxMCB0byAxNQ0KICBtaW51dGVzIHRvIGZpbGwgaXQgb3V0IGFu ZCB0byBzaGFyZSBpdCB3aXRoIG90aGVyIE9DYW1sIHByb2dyYW1tZXJzLg0KDQogICpTdXJ2ZXkg bGluazoqIDxodHRwczovL2Zvcm1zLmdsZS9ndDVuaWtxVW1vUVdlWVlROT4NCg0KICA8aHR0cHM6 Ly9mb3Jtcy5nbGUvZ3Q1bmlrcVVtb1FXZVlZUTk+DQoNCiAgVGhlIHN1cnZleSB3aWxsIHJlbWFp biBvcGVuIHVudGlsICpNYXkgMjV0aCwgMjAyNiAoQU9FKSouDQoNCiAgVGhpcyB5ZWFyJ3MgZWRp dGlvbiBidWlsZHMgb24gdGhlIFsyMDIzIGl0ZXJhdGlvbl0uIE1hbnkgcXVlc3Rpb25zIGFyZQ0K ICBrZXB0IGNvbXBhcmFibGUgc28gd2UgY2FuIHRyYWNrIHRyZW5kcyBvdmVyIHRpbWUsIHdoaWxl IG90aGVycyBoYXZlDQogIGJlZW4gcmVmcmVzaGVkLCBmaXhlZCwgb3IgYWRkZWQgYmFzZWQgb24g Y29tbXVuaXR5IGZlZWRiYWNrIGdhdGhlcmVkDQogIGVhcmxpZXIgdGhpcyB5ZWFyIChbZmVlZGJh Y2sgdGhyZWFkXSkuIE5vdGFibGUgYWRkaXRpb25zIGluY2x1ZGUNCiAgcXVlc3Rpb25zIG9uIEFJ L0xMTSB0b29saW5nIGFuZCBvbiBkZWJ1Z2dpbmcgJiBwcm9maWxpbmcuDQoNCiAgQSBmZXcgbm90 ZXM6DQoNCiAg4oCiIFRoZSBzdXJ2ZXkgaXMgYWRtaW5pc3RlcmVkIHZpYSBHb29nbGUgRm9ybXMg YnV0IGNvbmZpZ3VyZWQgdG8gKm5vdCoNCiAgICByZXF1aXJlIHNpZ25pbmcgaW4gdG8gYSBHb29n bGUgYWNjb3VudCwgYW5kIGFuc3dlcnMgYXJlIG5vdCB0aWVkIHRvDQogICAgYW55IGFjY291bnQu IEFzIGEgY29uc2VxdWVuY2UsIHlvdXIgcHJvZ3Jlc3MgaXMgKm5vdCogc2F2ZWQgaWYgeW91DQog ICAgY2xvc2UgeW91ciBicm93c2VyIHRhYiBiZWZvcmUgZmluaXNoaW5nLg0KICDigKIgQWxsIHF1 ZXN0aW9ucyBhcmUgb3B0aW9uYWwuDQogIOKAoiBQbGVhc2UgYXZvaWQgZW50ZXJpbmcgcGVyc29u YWwgaW5mb3JtYXRpb24gaW4gZnJlZS1mb3JtIHRleHQgZmllbGRzOg0KICAgIHRoZSByYXcgcmVz cG9uc2VzIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNvbW11bml0eSBhbG9uZ3NpZGUN CiAgICB0aGUgc3VtbWFyeSByZXBvcnQuIFdlIHdpbGwgcmVkYWN0IHdoYXQgd2UgZGV0ZWN0LCBi dXQgbWF5IG1pc3MNCiAgICBzb21lLg0KICDigKIgQXMgYW4gb2ZmaWNpYWwgT0NhbWwgb25saW5l IHNwYWNlLCB0aGlzIHN1cnZleSBoYXMgYWRvcHRlZCB0aGUNCiAgICBbT0NhbWwgQ29kZSBvZiBD b25kdWN0XS4NCg0KICBSZXN1bHRzIHdpbGwgYmUgcHVibGlzaGVkIG9uIHRoZSBPQ1NGIHdlYnNp dGUgYW5kIGFubm91bmNlZCBoZXJlIG9uDQogIGRpc2N1c3Mub2NhbWwub3JnLg0KDQogIFRoYW5r IHlvdSBpbiBhZHZhbmNlIGZvciB5b3VyIHBhcnRpY2lwYXRpb24sIGFuZCBwbGVhc2Ugc2hhcmUg dGhlDQogIHN1cnZleSB3aWRlbHkhDQoNCiAg4oCTIFNhYmluZSBTY2htYWx0eiwgb24gYmVoYWxm IG9mIHRoZSBPQ2FtbCBTb2Z0d2FyZSBGb3VuZGF0aW9uDQoNCg0KW09DYW1sIFNvZnR3YXJlIEZv dW5kYXRpb25dIDxodHRwczovL29jYW1sLXNmLm9yZy8+DQoNClsyMDIzIGl0ZXJhdGlvbl0NCjxo dHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW9jYW1sLXVzZXItc3VydmV5LTIwMjMvMTM0 Njk+DQoNCltmZWVkYmFjayB0aHJlYWRdDQo8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Zl ZWRiYWNrLXdhbnRlZC11cGNvbWluZy1vY2FtbC11c2Vycy1zdXJ2ZXktMjAyNi1xdWVzdGlvbnMv MTc5MjU+DQoNCltPQ2FtbCBDb2RlIG9mIENvbmR1Y3RdIDxodHRwczovL29jYW1sLm9yZy9wb2xp Y2llcy9jb2RlLW9mLWNvbmR1Y3Q+DQoNCg0KT0NhbWwgV2ViIHR1dG9yaWFscw0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJj aGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9vY2FtbC13ZWItdHV0b3JpYWxzLzE4 MDM5LzE+DQoNCg0KRnLDqWTDqXJpYyBMb3llciBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K DQogIEkgaGF2ZSBzdGFydGVkIGEgc2VyaWVzIG9mIE9DYW1sIFdlYiB0dXRvcmlhbHMuIFRoZSBp ZGVhIGlzIHRvIHRyeQ0KICBtdWx0aXBsZSBsaWJyYXJpZXMgYW5kIHNlZSBob3cgdGhleSBmaXQg dG9nZXRoZXIuIChCdXQgdGhlIERyZWFtDQogIGZyYW1ld29yayBkb2N1bWVudCBhbmQgZXhhbXBs ZSBzZXQgaXMgcXVpdGUgZ29vZCBlbm91Z2gsIEkgd2lsbCBub3QNCiAgcGFyYXBocmFzZSBpdCku DQoNCiAgRm9yIHRoZSBtb21lbnQsIEkgaGF2ZSBvbmx5IHRyaWVkIGEgU2VydmVyIFNpZGUgUmVu ZGVyaW5nLCBidXQgSSBwbGFuDQogIHRvIHRyeSBhIENsaWVudCBTaWRlIFJlbmRlcmluZyB3aGVy ZSBPY3NpZ2VuIChhbmQgVmRvbSA/4oCmKSBjb3VsZCBiZQ0KICB3ZWxjb21lZC4NCg0KICBUaGUg aWRlYSBpcyB0byBwcm9wb3NlIGEgZHVtbXkgYXBwbGljYXRpb24gdGhhdCB1c2Ugd2hhdCBtb3N0 IHBlb3BsZQ0KICB3b3VsZCBleHBlY3QgZnJvbSBhIFdlYiBGcmFtZXdvcmsgKGZvcm0gaGFuZGxp bmcsIGRhdGFiYXNlIGFjY2Vzc2VzLA0KICDigKYpDQoNCiAgU2VlIFtPQ2FtIHdlYiB0dXRvcmlh bHNdDQoNCg0KW09DYW0gd2ViIHR1dG9yaWFsc10gPGh0dHA6Ly9naXRodWIuY29tL0YtTG95ZXIv T0NhbWxfV2ViX3R1dG8+DQoNCg0KQ2FsYXNjaWJldHRhIFJvbWFpbiB0aGVuIHN1Z2dlc3RlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgWW91IGNh biB0YWtlIGFuIGluc3BpcmF0aW9uIGZyb20gdGhlIHR1dG9yaWFsIHdlIG1hZGUgYWJvdXQgW2B2 aWYnXSwNCiAgaXQgc2hvd3MgeW91IHdlYnNvY2tldCBzdHVmZnMgYXQgdGhlIGVuZCBhbmQgaW5j bHVkZSBgY2FxdGknIGFuZA0KICBgdHl4bWwnIDpzbGlnaHRfc21pbGU6DQoNCg0KW2B2aWYnXSA8 aHR0cHM6Ly9yb2J1ci1jb29wLmdpdGh1Yi5pby92aWYvPg0KDQoNClZhbGtleSAwLjMuMTogY2xp ZW50LXNpZGUgY2FjaGluZywgYmxvY2tpbmcgcG9vbHMsIElBTSBhdXRoIGFuZCBtVExTDQrilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L3ZhbGtleS0wLTMtMS1jbGllbnQtc2lkZS1jYWNoaW5nLWJsb2Nr aW5nLXBvb2xzLWlhbS1hdXRoLWFuZC1tdGxzLzE4MDQxLzE+DQoNCg0KQXZpIEZlbmVzaCBhbm5v dW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIEhpIGV2ZXJ5b25lLA0KDQogIEkgd2FudGVkIHRvIHNoYXJlIHRoYXQg YHZhbGtleS4wLjMuMScgaXMgbm93IG9uIG9wYW0uDQoNCiAgVGhpcyBpcyB0aGUgbmV4dCByZWxl YXNlIGFmdGVyIHRoZSBgMC4yLjAnIGFubm91bmNlbWVudC4gVGhlIHNob3J0DQogIHZlcnNpb246 IGEgZmV3IG9mIHRoZSByb2FkbWFwIGl0ZW1zIGZyb20gdGhhdCBwb3N0IGFyZSBub3cgc2hpcHBl ZCDigJQNCiAgY2xpZW50LXNpZGUgY2FjaGluZywgYmxvY2tpbmctY29tbWFuZCBwb29scywgSUFN IGF1dGgsIGFuZCBtVExTLg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3BhbSB1cGRhdGUN CiAg4pSCIG9wYW0gaW5zdGFsbCB2YWxrZXkgZWlvX21haW4NCiAg4pSU4pSA4pSA4pSA4pSADQoN CiAgUmVwbyBhbmQgZG9jczogPGh0dHBzOi8vZ2l0aHViLmNvbS9hdmlmZW5lc2gvb2NhbWwtdmFs a2V5Pg0KDQogIFRoZSBsYXJnZXN0IG5ldyBmZWF0dXJlIGlzICpjbGllbnQtc2lkZSBjYWNoaW5n Ki4NCg0KICBgdmFsa2V5JyBub3cgc3VwcG9ydHMgVmFsa2V5IGBDTElFTlQgVFJBQ0tJTkcnIHdp dGggYSBib3VuZGVkDQogIGluLXByb2Nlc3MgTFJVIGNhY2hlLCBSRVNQMyBpbnZhbGlkYXRpb24g cHVzaCBoYW5kbGluZywgc2luZ2xlLWZsaWdodA0KICBwcm90ZWN0aW9uLCBvcHRpb25hbCBUVEwg c2FmZXR5IG5ldCwgYW5kIG1ldHJpY3MuIEl0IHdvcmtzIGluIGJvdGgNCiAgc3RhbmRhbG9uZSBh bmQgY2x1c3RlciBtb2RlLCBhbmQgc3VwcG9ydHMgdGhlIHRocmVlIHRyYWNraW5nIHNoYXBlcyBJ DQogIHdhbnRlZCB0byBjb3ZlcjoNCg0KICDigKIgZGVmYXVsdCB0cmFja2luZw0KICDigKIgYEJD QVNUJyBwcmVmaXggdHJhY2tpbmcNCiAg4oCiIGBPUFRJTicgdHJhY2tpbmcNCg0KICBUaGUgY2x1 c3RlciBwYXRoIHdhcyB0aGUgdHJpY2t5IHBhcnQuIE9QVElOIHJlYWRzIG5lZWQgYENMSUVOVCBD QUNISU5HDQogIFlFUycgdG8gc3RheSBhZGphY2VudCB0byB0aGUgYWN0dWFsIHJlYWQgb24gdGhl IHdpcmUsIGluY2x1ZGluZyBhY3Jvc3MNCiAgTU9WRUQgLyBBU0sgcmVkaXJlY3RzLiBUaGF0IGlz IG5vdyBoYW5kbGVkIGluc2lkZSB0aGUgY2xpZW50IHJhdGhlcg0KICB0aGFuIHB1c2hlZCBvbnRv IGNhbGxlcnMuDQoNCiAgVGhlIHNlY29uZCBiaWcgYWRkaXRpb24gaXMgYSAqYmxvY2tpbmctY29t bWFuZCBwb29sKi4NCg0KICBUaGUgbm9ybWFsIGNsaWVudCBpcyBzdGlsbCBidWlsdCBhcm91bmQg bXVsdGlwbGV4ZWQgY29ubmVjdGlvbnMsIHdoaWNoDQogIGlzIHRoZSByaWdodCBzaGFwZSBmb3Ig cmVndWxhciB0cmFmZmljLiBCdXQgY29tbWFuZHMgc3VjaCBhcyBgQkxQT1AnLA0KICBgQlJQT1An LCBgQkxNT1ZFJywgYEJMTVBPUCcsIGBCWlBPUConLCBgWFJFQUQgQkxPQ0snLCBhbmQgYFhSRUFE R1JPVVANCiAgQkxPQ0snIGFyZSBpbnRlbnRpb25hbGx5IGJsb2NraW5nIG9uIHRoZSBzZXJ2ZXIg c2lkZS4gU2VuZGluZyBvbmUgb2YNCiAgdGhvc2UgdGhyb3VnaCB0aGUgbm9ybWFsIG11bHRpcGxl eGVkIEZJRk8gY2FuIGZyZWV6ZSB1bnJlbGF0ZWQNCiAgcmVxdWVzdHMgcXVldWVkIGJlaGluZCBp dC4NCg0KICBgMC4zLngnIGFkZHMgYSBuYXJyb3cgcGVyLW5vZGUgbGVhc2UgcG9vbCBmb3IgdGhv c2UgY29tbWFuZHMuIEJsb2NraW5nDQogIGNhbGxzIGxlYXNlIGFuIGV4Y2x1c2l2ZSBjb25uZWN0 aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNvbW1hbmQsDQogIHdoaWxlIHJlZ3VsYXIgdHJh ZmZpYyBjb250aW51ZXMgb24gdGhlIG5vcm1hbCBjbGllbnQuIFRoZSBwb29sIGlzDQogIGJvdW5k ZWQsIGhhcyB0eXBlZCBlcnJvcnMsIGhhbmRsZXMgdG9wb2xvZ3kgY2hhbmdlcywgYW5kIGlzIG9m ZiBieQ0KICBkZWZhdWx0IHVubGVzcyBjb25maWd1cmVkLg0KDQogIFRoZSB0aGlyZCBhZGRpdGlv biBpcyAqSUFNIGF1dGggYW5kIG1UTFMqLg0KDQogIFRoZXJlIGlzIG5vdyBhIGZpcnN0LWNsYXNz IGBDb25uZWN0aW9uLkF1dGgucHJvdmlkZXInIGFic3RyYWN0aW9uDQogIGluc3RlYWQgb2Ygb25s eSBzdGF0aWMgdXNlcm5hbWUvcGFzc3dvcmQgY29uZmlnLiBUaGF0IG1lYW5zIGV2ZXJ5DQogIGlu aXRpYWwgaGFuZHNoYWtlIGFuZCByZWNvbm5lY3QgY2FuIHB1bGwgZnJlc2ggY3JlZGVudGlhbHMg ZnJvbSBhDQogIHByb3ZpZGVyLg0KDQogIE9uIHRvcCBvZiB0aGF0LCB0aGUgbGlicmFyeSBub3cg aW5jbHVkZXM6DQoNCiAg4oCiIHB1cmUgT0NhbWwgQVdTIFNpZ1Y0IHNpZ25pbmcgZm9yIEVsYXN0 aUNhY2hlIElBTSBhdXRoDQogIOKAoiBhbiBhdXRvLXJlZnJlc2hpbmcgSUFNIHByb3ZpZGVyDQog IOKAoiBgQ2xpZW50LmNvbm5lY3Rfd2l0aF9pYW0nDQogIOKAoiBsaXZlIGBBVVRIJyByZWZyZXNo IHN1cHBvcnQNCiAg4oCiIG1UTFMgY2xpZW50IGNlcnRpZmljYXRlIGNvbmZpZ3VyYXRpb24gdmlh DQogICAgYFRsc19jb25maWcud2l0aF9jbGllbnRfY2VydCcNCg0KICBUaGUgSUFNIHBhdGggZG9l cyBub3QgZGVwZW5kIG9uIHRoZSBBV1MgU0RLLiBUaGUgc2lnbmVyIGlzIGltcGxlbWVudGVkDQog IGluIE9DYW1sIGFuZCB0ZXN0ZWQgYWdhaW5zdCBBV1MgU2lnVjQgdGVzdCB2ZWN0b3JzLg0KDQog IFRoZXJlIHdlcmUgYWxzbyBhIGZldyBjb3JyZWN0bmVzcyBhbmQgb3BlcmFiaWxpdHkgaW1wcm92 ZW1lbnRzOg0KDQogIOKAoiBPcGVuVGVsZW1ldHJ5IHNwYW5zIGZvciBjb25uZWN0LCBjbHVzdGVy IGRpc2NvdmVyeSwgYW5kIHRvcG9sb2d5DQogICAgcmVmcmVzaA0KICDigKIgY2FjaGUgYW5kIGJs b2NraW5nLXBvb2wgbWV0cmljIGJyaWRnZXMNCiAg4oCiIHRpZ2h0ZXIgVExTIC8gY29ubmVjdGlv biBlcnJvciByZWRhY3Rpb24NCiAg4oCiIGJldHRlciBNT1ZFRCAvIEFTSyAvIHRvcG9sb2d5LXJl ZnJlc2ggYmVoYXZpb3IgdW5kZXIgY2x1c3RlciBjaGFuZ2VzDQogIOKAoiBmaXhlcyBhcm91bmQg V0FUQ0ggLyBNVUxUSSAvIEVYRUMgd2hlbiBzbG90IG93bmVyc2hpcCBjaGFuZ2VzIGR1cmluZw0K ICAgIGFuIGF0b21pYyBmbG93DQogIOKAoiBtb3JlIHRlc3RzIGFyb3VuZCBDU0MgaW52YWxpZGF0 aW9uLCBjbHVzdGVyIG1pZ3JhdGlvbiwgYmxvY2tpbmctcG9vbA0KICAgIGJlaGF2aW9yLCBJQU0g cmVmcmVzaCwgYW5kIG1UTFMgY29uZmlnDQoNCiAgYDAuMy4xJyBpdHNlbGYgaXMgYSBzbWFsbCBm b2xsb3ctdXAgdG8gbWFrZSB0aGUgb3BhbSBzYW5kYm94IHRlc3RzDQogIGNsZWFuOiB0aGUgbVRM UyBjb25maWcgdGVzdHMgbm93IHVzZSBjb21taXR0ZWQgdGVzdCBmaXh0dXJlcyBpbnN0ZWFkDQog IG9mIGRlcGVuZGluZyBvbiBnZW5lcmF0ZWQgY2VydHMgZnJvbSB0aGUgbG9jYWwgZGV2ZWxvcG1l bnQgc2NyaXB0cy4NCg0KICBUaGUgcHJvamVjdCBpcyBzdGlsbCBhbHBoYSwgYW5kIHRoZSBBUEkg bWF5IHN0aWxsIGNoYW5nZSBiZWZvcmUgYDEuMCcsDQogIGJ1dCB0aGUgc3VyZmFjZSBpcyBnZXR0 aW5nIGNsb3NlciB0byB0aGUgc2hhcGUgSSBvcmlnaW5hbGx5IHdhbnRlZDogYW4NCiAgT0NhbWwg NSAvIEVpby1uYXRpdmUgVmFsa2V5IGNsaWVudCB0aGF0IHRyZWF0cyBjbHVzdGVyIGJlaGF2aW9y LA0KICBSRVNQMywgbW9kZXJuIFZhbGtleSBmZWF0dXJlcywgYW5kIHByb2R1Y3Rpb24gZmFpbHVy ZSBtb2RlcyBhcw0KICBmaXJzdC1jbGFzcyBjb25jZXJucy4NCg0KICBJIHdvdWxkIGVzcGVjaWFs bHkgYXBwcmVjaWF0ZSBmZWVkYmFjayBmcm9tIHBlb3BsZSB3aG8gdXNlIE9DYW1sIGluDQogIHBy b2R1Y3Rpb24gb246DQoNCiAg4oCiIEFQSSBzaGFwZSBhbmQgbmFtaW5nDQogIOKAoiBFaW8gZXJn b25vbWljcw0KICDigKIgZG9jcyBjbGFyaXR5DQogIOKAoiB3aGV0aGVyIHRoZSBjYWNoaW5nIC8g YmxvY2tpbmctcG9vbCAvIElBTSBBUElzIGZlZWwgbmF0dXJhbA0KICDigKIgd2hhdCBzaG91bGQg YmUgcHJpb3JpdGl6ZWQgYmVmb3JlIGAxLjAnDQoNCiAgTmV4dCB0aGluZ3Mgb24gdGhlIHJvYWRt YXAgYXJlIHN0aWxsIFZhbGtleSBtb2R1bGUgc3VwcG9ydCDigJQgSlNPTiwNCiAgc2VhcmNoLCBi bG9vbSDigJQgYW5kIGEgZGVlcGVyIHByZS1gMS4wJyBhdWRpdCBwYXNzLg0KDQogIElmIHlvdSB0 cnkgaXQsIEnigJlkIGxvdmUgdG8gaGVhciB3aGF0IGZlZWxzIGdvb2QsIHdoYXQgZmVlbHMgYXdr d2FyZCwNCiAgYW5kIHdoYXQgaXMgbWlzc2luZy4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDi lZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQg bWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxv b2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10u DQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwg eW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1p dHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVj aG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5l dC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0 ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5y aWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2Fs YW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= 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 April 28 to May 05, 2= 026.

Oc =E2=80=94 a Cargo-like CLI for OCaml beginners (AI-assisted= , feedback very welcome)

Emil Kloeden announced

Hi everyone,=20

I'm a newcomer to OCaml, and one of the things that has slowed me down is t= he tooling setup: understanding opam switches, remembering to eval $(= opam env), knowing when to regenerate .opam~files. So (togethe= r with Claude Code) I built ~oc - a small CLI that wraps opam<= /code> and dune and gives them a Cargo- or uv-like interface:= =20

oc new my_app # scaffold project + initialise isolated switch
oc add yojson # add dependency, update oc.toml, install
oc build # ensure deps, dune build
oc run # ensure deps, dune exec

No opam switch create, no eval $(opam env), no ha= nd-editing .opam files.

What it is:

A small, thin orchestration layer with no dependencies beyond opam and dune= themselves. It calls opam to manage switches and resolve packages, and dun= e to build - wrapping the tools the community already uses and trusts rathe= r than replacing them. It deliberately does less: if you want full control = over your environment, opam gives you that directly.

What it isn't:

A replacement for opam or dune. The intention is to offer a simpler surface= for those who prefer it, whether you're just starting out or you've been w= riting OCaml for years and want less ceremony for everyday tasks.

A note on AI assistance:

I should be upfront: this project was developed almost entirely with the he= lp of Claude Code. I wrote the specs, made the design decisions, and review= ed everything - but the code is almost entirely AI-generated. I think that'= s worth naming, both for transparency and because it's an interesting case = study in what AI-assisted development looks like for a small tool.

Prior art:

I'm aware of a few similar efforts. esy is the closest in spir= it - sandboxed builds, a lock file, a simpler manifest - but it makes some = different choices: it requires Node.js (npm install -g esy) and brings its own dependency resolver rather than d= elegating to opam. oc is a narrower tool: no additional runtime dependencies, stays on top of sta= ndard opam and dune, and trades power for simplicity.~ dune init project~ h= andles scaffolding but leaves switch management to you. opam's own local sw= itches (opam switch create . 5.2.0) are essentially what oc automates, but you still have to drive them manually. If there's= something I've missed that already solves this cleanly, I'd genuinely like= to know.

Why not just shell aliases?

You probably could get close with a few shell functions. The reasons I went= further: a cross-platform binary needs no shell setup, the lockfile gives = reproducible builds across machines, and having a single oc.toml as the source of truth is cleaner than remembering which opam commands t= o run. Whether that's worth it is a fair question.

Why Go, not OCaml:

Partly the bootstrapping problem =E2=80=94 it felt odd to write a tool that= helps you set up OCaml before you can set up OCaml. More practically, Go m= ade it easy to ship a single static binary with no runtime dependencies, an= d it let me build and iterate on the tool quickly. I'm not against a port t= o OCaml if someone wanted to take that on.

Current state:

The tool works for my personal use, has a test suite, a lockfile, and basic= CI. It's rough around the edges and I'm sure there are things that would m= ake an experienced OCaml developer wince. That's part of why I'm posting - = I'd genuinely value feedback on:=20

  • Does this solve a real problem, or does the community have better answe= rs I missed?
  • Are there correctness issues with how oc manages switches = or generates .opam files?
  • What's missing before this would be useful to you?

The homepage is at emilkloeden= .github.io/oc and the source is at github.com/emilkloeden/oc.=20

Thanks for reading and I look forward to your feedback.

Dune Package Management Updates

Shon announced

Hello! The Tarides team is writing to share updates on Dune package managem= ent.

Context

Dune package management aims to improve some developer workflows by simplif= ying the use of opam dependencies in projects built with Dune. To learn mor= e, see the tutorial, OCaml Package Management With Dune= .

It=E2=80=99s been too long since we shared an update, especially considerin= g our gratitude for all the excell= ent feedback we have received. But Dune contributors have been hard at = work fixing issues and solving tricky architectural snags present in t= he previous iteration.

Available now

Thanks to many contributors, the following functionalities are available on= Linux and MacOS in the latest release of Dune (3.22):

Additionally, the following supporting utilities are available:

Current status and focus

Thanks to several regular users in the community and usage in many of the C= I systems we maintain, we are gathering ongoing feedback and exercising the= core functionality. However, our testing has shown the features are not ye= t mature enough to recommend wider use, beyond eager and early adopters. Co= nsequently, all the documentation warns that this functionality is experime= ntal and subject to change.

We are currently focused on maturing package management beyond its experime= ntal status. This requires reworking the developer tooling support, support= ing packages that use symlinks, and ensuring we can dogfood Dune package ma= nagement in its own development. The best place to look for what we have p= lanned in this current phase is Non-experimental package management =C2=B7 Milestone #62 =C2=B7= ocaml/dune.=20

Next up

After maturing the core functionality, we will turn our focus to extending = the supported platforms and improving ecosystem integration. This work will= include adding support for Windows, improving cross-compilation, supportin= g advanced vendoring workflows, and integrating Dune package management int= o the opam-ci. More updates and more accessible planning will follow.

Input and contributions

Please = reach out if you find this work interesting and would like to help!

OCaml Users Survey 2026

Sabine Schmaltz announced

Hi everyone,

On behalf of the OCaml Software Foundatio= n (OCSF), I'm delighted to announce the OCaml Users Survey 2026.= We invite you to take 10 to 15 minutes to fill it out and to share it with= other OCaml programmers.

Survey link: https:/= /forms.gle/gt5nikqUmoQWeYYQ9

https://forms.gle/gt5nikqUm= oQWeYYQ9

The survey will remain open until May 25th, 2026 (AOE).

This year's edition builds on the 2023 iteration. Many questions are kept= comparable so we can track trends over time, while others have been refres= hed, fixed, or added based on community feedback gathered earlier this year= (feedback thread). Notable additions inc= lude questions on AI/LLM tooling and on debugging & profiling.

A few notes:

  • The survey is administered via Google Forms but configured to not require signing in to a Google account, and answers are not tied to any a= ccount. As a consequence, your progress is not saved if you close yo= ur browser tab before finishing.
  • All questions are optional.
  • Please avoid entering personal information in free-form text fields: th= e raw responses will be made available to the community alongside the summa= ry report. We will redact what we detect, but may miss some.
  • As an official OCaml online space, this survey has adopted the OCaml Code of Conduct.<= /li>

Results will be published on the OCSF website and announced here on discuss= .ocaml.org.

Thank you in advance for your participation, and please share the survey wi= dely!

– Sabine Schmaltz, on behalf of the OCaml Software Foundation

OCaml Web tutorials

Fr=C3=A9d=C3=A9ric Loyer announced

I have started a series of OCaml Web tutorials. The idea is to try multiple= libraries and see how they fit together. (But the Dream framework document= and example set is quite good enough, I will not paraphrase it).

For the moment, I have only tried a Server Side Rendering, but I plan to tr= y a Client Side Rendering where Ocsigen (and Vdom ?=E2=80=A6) could be welc= omed.

The idea is to propose a dummy application that use what most people would = expect from a Web Framework (form handling, database accesses, =E2=80=A6)

See OCam web tutorials=

Calascibetta Romain then suggested

You can take an inspiration from the tutorial we made about vif, it shows you websocket= stuffs at the end and include caqti and tyxml :s= light_smile:

Valkey 0.3.1: client-side caching, blocking pools, IAM auth an= d mTLS

Avi Fenesh announced

Hi everyone,

I wanted to share that valkey.0.3.1 is now on opam.

This is the next release after the 0.2.0 announcement. The sho= rt version: a few of the roadmap items from that post are now shipped =E2= =80=94 client-side caching, blocking-command pools, IAM auth, and mTLS.

opam update
opam install valkey eio_main

Repo and docs: https:= //github.com/avifenesh/ocaml-valkey

The largest new feature is client-side caching.

valkey now supports Valkey CLIENT TRACKING with a= bounded in-process LRU cache, RESP3 invalidation push handling, single-fli= ght protection, optional TTL safety net, and metrics. It works in both stan= dalone and cluster mode, and supports the three tracking shapes I wanted to= cover:

  • default tracking
  • BCAST prefix tracking
  • OPTIN tracking

The cluster path was the tricky part. OPTIN reads need CLIENT CACHING= YES to stay adjacent to the actual read on the wire, including acro= ss MOVED / ASK redirects. That is now handled inside the client rather than= pushed onto callers.

The second big addition is a blocking-command pool.

The normal client is still built around multiplexed connections, which is t= he right shape for regular traffic. But commands such as BLPOP= , BRPOP, BLMOVE, BLMPOP, BZPOP= *, XREAD BLOCK, and XREADGROUP BLOCK are i= ntentionally blocking on the server side. Sending one of those through the = normal multiplexed FIFO can freeze unrelated requests queued behind it.

0.3.x adds a narrow per-node lease pool for those commands. Bl= ocking calls lease an exclusive connection for the duration of the command,= while regular traffic continues on the normal client. The pool is bounded,= has typed errors, handles topology changes, and is off by default unless c= onfigured.

The third addition is IAM auth and mTLS.

There is now a first-class Connection.Auth.provider abstractio= n instead of only static username/password config. That means every initial= handshake and reconnect can pull fresh credentials from a provider.

On top of that, the library now includes:

  • pure OCaml AWS SigV4 signing for ElastiCache IAM auth
  • an auto-refreshing IAM provider
  • Client.connect_with_iam
  • live AUTH refresh support
  • mTLS client certificate configuration via Tls_config.with_client_= cert

The IAM path does not depend on the AWS SDK. The signer is implemented in O= Caml and tested against AWS SigV4 test vectors.

There were also a few correctness and operability improvements:

  • OpenTelemetry spans for connect, cluster discovery, and topology refres= h
  • cache and blocking-pool metric bridges
  • tighter TLS / connection error redaction
  • better MOVED / ASK / topology-refresh behavior under cluster changes
  • fixes around WATCH / MULTI / EXEC when slot ownership changes during an= atomic flow
  • more tests around CSC invalidation, cluster migration, blocking-pool be= havior, IAM refresh, and mTLS config

0.3.1 itself is a small follow-up to make the opam sandbox tes= ts clean: the mTLS config tests now use committed test fixtures instead of = depending on generated certs from the local development scripts.

The project is still alpha, and the API may still change before 1.0, but the surface is getting closer to the shape I originally wanted: = an OCaml 5 / Eio-native Valkey client that treats cluster behavior, RESP3, = modern Valkey features, and production failure modes as first-class concern= s.

I would especially appreciate feedback from people who use OCaml in product= ion on:

  • API shape and naming
  • Eio ergonomics
  • docs clarity
  • whether the caching / blocking-pool / IAM APIs feel natural
  • what should be prioritized before 1.0

Next things on the roadmap are still Valkey module support =E2=80=94 JSON, = search, bloom =E2=80=94 and a deeper pre-1.0 audit pass.

If you try it, I=E2=80=99d love to hear what feels good, what feels awkward= , and what is missing.

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.

--==-=-=-- --=-=-=-- --===-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmn5ufobFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5cfjbwf9EtZcfgp+7oiQNd2VoPgKNg0cO4QghVJ6BV+WEKYw DCo9czrrvSS2d5GGpP/GLlpIW9dg0eqerpBsYd0xgo+dyC1q8c8QwD+zRHA8DMeb hBfcBiFAGgGLTr/+IF8rwRH4pZYqjasiIFTCsAgbFBhuiE2y68pQHotDfvZViJws hiLQcy6EXXQMxVUluH6TPtE+IMQRjnUugUpqj4TfYcI9F5VgOs5lk27++wtrqbX8 nV3VGPS3xxDJSalOFIpj77+re6vuGpFAlbGsgaROVDtDJmJIlNksjfiuPAIZuuPZ yPyVtHlJNs+9gT8YGFBvWi02Zlx22V/6wUxfhJtbZoNFJQ== =EYUu -----END PGP SIGNATURE----- --===-=-=--