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=TMmU6yo0; 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=g0wxYTmI; 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 0C95240068 for ; Tue, 15 Apr 2025 09:51:45 +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=Bd1eMk2KpiKbfAkoCb9dbDfaQDLDbshfpbNW+aDol2A=; b=TMmU6yo0Kp4pmJt2r5OZr23RljJbs2Q9IttyL2BCJFOnb+Jgv1TQ3J9K jXSVTkNnMxh38GfUrRiLbrkjaCHhlIWYk3LOr0UiPkkSczoOWc5nvEs7l RzVoxAftGBUGP+1A+uPeGR1rW3qfrBxmelTlrKIF7AseKHNUeoSs+pLJL 4=; 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.15,213,1739833200"; d="scan'208,217";a="217932136" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 15 Apr 2025 11:51:45 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 394ECE0D21; Tue, 15 Apr 2025 11:51:44 +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 1DC47E0264 for ; Tue, 15 Apr 2025 11:51:36 +0200 (CEST) IronPort-SDR: 67fe2c27_6bKnH9zF8Zd/V49+NRGX1Brq6FzqFevAxw+Gov3fKLIo+Ss G+Kppo4/76eTpIr+9++aYakbZvf1ZefLqtVYDAA== X-IPAS-Result: =?us-ascii?q?A0HIDwA0K/5nhSIeaIFaFoJIgT9bKBkBY1ozBwhIA4RSg?= =?us-ascii?q?0+OI4EWkDSKdoJ7Ay4jFAEDAQ0uAQ4EAQIEAQEDAQIBggyCLkYCFosUAh8GA?= =?us-ascii?q?QQ0EwECBAEBAQEDAgMBAQEBAQEQAQEFAQEBAgEBAgQGAQIQAQEBAUBJhXsNS?= =?us-ascii?q?QEBAQMBCgGBalFTHnQBAQEBAQEBAQECAQEBIgEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECCAQBAgyBEAMGBAYTAQEpAg0YI?= =?us-ascii?q?wMUAQYDAgQNATUDARMBEhQGgmgBgh9FAwUMBpdSm0t6fzOBAYIMAQEGgQg+A?= =?us-ascii?q?wsCAgMBDgklAdoHgWUJgUiFbYJJGgEqSGuESgmEMycPgVVEgRU1gXNKB2+CP?= =?us-ascii?q?wsXAQEBARiBEBQBAU0JgyWCaYIaF0U+FB8qHlWBDmOBJYELgXOBUYJuN4Eeg?= =?us-ascii?q?wZXgm+BM0iCFSMHUod9gUdLMywBVRMXCwcFYYELAyo0MXE1HYF7g3KFNoIRg?= =?us-ascii?q?gSJFoRXLU+FEB1AAwttPTcUG5gJHiIag0kOQAUkNwIRBw4ZCA4BAQkXAjYFC?= =?us-ascii?q?QsbBQoELgQOCRoRDQwGCAM6kkMIAy0EBJ4HlF40B4QegV4GDIkFgSSHOYptg?= =?us-ascii?q?1eEA4FXizKHAJJLIpV8gmAigjaHJoElCYFvHkyIdYweBzUHIIE6g36BfiM8g?= =?us-ascii?q?Q0MBzMaMEOCZwkKPBwPiCGGCQMWgQwBB4JEEIEugQIkgXQ7xBFBNQIBAQoFK?= =?us-ascii?q?QIHAQoBAQMJhWIBAWmCG4IXboQvgUsBAQ?= IronPort-PHdr: A9a23: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 z1+AnxKpcf2f4mHwToJj/z63ufK0BCKf8Z7WCE= IronPort-Data: A9a23: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 NVhD7jSyXlp8Hxs5YA= IronPort-HdrOrdr: A9a23:czCVpK9FlxTsxUqX+0puk+DlI+orL9Y04lQ7vn2ZKCYlEfBw8v rFoB1173HJYVoqNU3I+urhBEDjexLhHPdOiOF7AV7IZmbbUQWTQL1K3M/L/HnLGiH19OJRvJ 0QEZRWOZnXFlY/qc775WCDYrIdKTS8gcWVuds= X-Talos-CUID: 9a23:3L8pKGCN81QWk5T6EwMg1E8YROd7SHTA1SveG1XiDkxEE6LAHA== X-Talos-MUID: =?us-ascii?q?9a23=3AjyXB5w5YAe639+ZH0Ov8CqTixoxjvP6lBmsukq4?= =?us-ascii?q?Lus67MyxyBhOQiW2OF9o=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.15,213,1739833200"; d="scan'208,217";a="217931942" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDEM8VuplqWLkolYudb8UHLQHz7NesiUkU3q4E?= =?us-ascii?q?Phnpz+0eDajxkhv7zNbqZWEldKGOFUDBxZpQv/hrrdVnWvHsL8ZLijLX?= =?us-ascii?q?xaGy1o/PHGFv/vg20IXjJjwPHWLMSvqnliL7oOlVAA5aolPn62MJOztR?= =?us-ascii?q?QElvHGmobMpzgK7un8gheukA=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; 15 Apr 2025 11:51:35 +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 8CCA1564BBC; Tue, 15 Apr 2025 11:51:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1744710693; bh=BwKCj8fxfjAoJ+Y2NUSX5L2QPki1vWtZdg523eGpTXc=; h=From:To:Subject:Date:Message-ID; b=g0wxYTmIGMw298/BZq9zkWm2dgqRkOmTW9hTKCpAcgayZ/ogN+Ov+fNNGElrJzvFi 8zsKqdIkrdkmXxINLXFYDpKeJwsw1zzf1rqyk9OTLVFGTRWuQRKuqX54PocYW1mJtC Y51Za/SaXsriRDyOIMdrJwduA0j8KuvLUJonXgmo= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 15 Apr 2025 11:51:33 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Apr 15 11:51:33 2025 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.476365, queueID=C777D564BBE 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: 19295 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 ZWsgb2YgQXByaWwgMDggdG8gMTUsDQoyMDI1Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNClNlbWdyZXAg aXMgaGlyaW5nIE9DYW1sIGRldmVsb3BlcnMgdG8gaGVscCBkZXZlbG9wIG91ciBzdXBwbHkgY2hh aW4gc2VjdXJpdHkgcHJvZHVjdCENClN1YnByb2Nlc3M6IGEgbGlicmFyeSBmb3IgbGF1bmNoaW5n IGFuZCBjb21tdW5pY2F0aW5nIHdpdGggVW5peCBjb21tYW5kcw0KY3VkYWppdDogQmluZGluZ3Mg dG8gdGhlIGBjdWRhJyBhbmQgYG52cnRjJyBsaWJyYXJpZXMNCnFjaGVjay1saW4gYW5kIHFjaGVj ay1zdG0gMC4yDQpDYWxsIGZvciBWb2x1bnRlZXJzIHRvIEhlbHAgTWFpbnRhaW4gdGhlIE9wYW0t UmVwb3NpdG9yeQ0KRHVuZSBwYWNrYWdlIG1hbmFnZW1lbnQgdXBkYXRlDQpPY3NpZ2VuIHB1Ymxp YyBtZWV0aW5nDQpMb29raW5nIGZvciBNYWludGFpbmVycyAvIE1vZGVyYXRvcnMgZm9yIHRoZSBP Q2FtbCBDb29rYm9vaw0KU0NHSSBsaWJyYXJ5IGZvciBPQ2FtbCBhbmQgZWlvDQpPdGhlciBPQ2Ft bCBOZXdzDQpPbGQgQ1dODQoNCg0KU2VtZ3JlcCBpcyBoaXJpbmcgT0NhbWwgZGV2ZWxvcGVycyB0 byBoZWxwIGRldmVsb3Agb3VyIHN1cHBseSBjaGFpbiBzZWN1cml0eSBwcm9kdWN0IQ0K4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5v Y2FtbC5vcmcvdC9zZW1ncmVwLWlzLWhpcmluZy1vY2FtbC1kZXZlbG9wZXJzLXRvLWhlbHAtZGV2 ZWxvcC1vdXItc3VwcGx5LWNoYWluLXNlY3VyaXR5LXByb2R1Y3QvMTY0NjQvMT4NCg0KDQpBYXJv biBBY29zdGEgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBTZW1ncmVwIGlzIGFuIGFwcGxpY2F0 aW9uIHNlY3VyaXR5IGNvbXBhbnkgZm9jdXNlZCBvbiBkZXRlY3RpbmcgYW5kDQogIHJlbWVkaWF0 aW5nIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHN0YXRpYyBhbmFseXNpcyBlbmdpbmUgaXMgcHJpbWFy aWx5DQogIHdyaXR0ZW4gaW4gT0NhbWwuIFdlJ3JlIGxvb2tpbmcgZm9yIGEgc2VuaW9yIG9yIHN0 YWZmIHNvZnR3YXJlDQogIGVuZ2luZWVyIHRvIGhlbHAgdXMgZW5oYW5jZSBvdXIgdGhpcmQtcGFy dHkgdnVsbmVyYWJpbGl0eSBkZXRlY3Rpb24NCiAgY2FwYWJpbGl0aWVzLiBUaGUgaWRlYWwgY2Fu ZGlkYXRlIGhhcyBvd25lZCBhIGNyaXRpY2FsIHRvb2wsIGhhcw0KICB3b3JrZWQgb24gYW4gT0Nh bWwgcHJvamVjdCwgaGFzIGV4cGVyaWVuY2UgbGVhZGluZyBkZXZlbG9wbWVudCB0ZWFtcw0KICBh bmQgbWVudG9yaW5nLCBhbmQgaGFzIHNvbWUgZXhwZXJpZW5jZSB3aXRoIHN1cHBseSBjaGFpbiBz ZWN1cml0eS4NCg0KICBJZiB0aGlzIHNvdW5kcyBpbnRlcmVzdGluZyB0byB5b3UsIHNlZSBvdXIg am9iIHBvc3RpbmcgYXQNCiAgW1Nlbmlvci9TdGFmZiBQcm9ncmFtIEFuYWx5c2lzIEVuZ2luZWVy LCBTdXBwbHkgQ2hhaW5dISBMZXQgbWUga25vdyBpZg0KICB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25z IQ0KDQoNCltTZW5pb3IvU3RhZmYgUHJvZ3JhbSBBbmFseXNpcyBFbmdpbmVlciwgU3VwcGx5IENo YWluXQ0KPGh0dHBzOi8vam9iLWJvYXJkcy5ncmVlbmhvdXNlLmlvL3NlbWdyZXAvam9icy80Njcy ODU4MDA3Pg0KDQoNClN1YnByb2Nlc3M6IGEgbGlicmFyeSBmb3IgbGF1bmNoaW5nIGFuZCBjb21t dW5pY2F0aW5nIHdpdGggVW5peCBjb21tYW5kcw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2Ft bC5vcmcvdC9hbm4tc3VicHJvY2Vzcy1hLWxpYnJhcnktZm9yLWxhdW5jaGluZy1hbmQtY29tbXVu aWNhdGluZy13aXRoLXVuaXgtY29tbWFuZHMvMTY0NjcvMT4NCg0KDQpBYXJvbiBDaHJpc3RpYW5z b24gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBfQW4gT0NhbWwg bGlicmFyeSB3aXRoICpbZG9jdW1lbnRhdGlvbl0hPypfDQoNCiAgWWVzLiBJIHJlYWxpemUgaXQn cyB1bm9ydGhvZG94LCBidXQgSSB0aG91Z2h0IEknZCBnaXZlIGl0IGEgc2hvdC4NCg0KICBJIGJl Z2FuIG15IHByb2dyYW1taW5nIGpvdXJuZXkgYSBiaXQgbGF0ZXIgdGhhbiBtb3N0LCBhbmQgSSBi ZWdhbiBpdA0KICB3aXRoIEJhc2guIE92ZXIgdGhlIHllYXJzIEkndmUgZ3Jvd24gYXBhcnQgZnJv bSBCYXNoIGFuZCBldmVuIHdyaXR0ZW4NCiAgc29tZSBzZW1pLXBvcHVsYXIgW2FudGktQmFzaCBw cm9wYWdhbmRhXS4NCg0KICBIb3dldmVyLCB3aGlsZSBJJ20gbm90IHBhcnRpY3VsYXJseSBhIGZh biBvZiBzaGVsbCBwcm9ncmFtbWluZw0KICBsYW5ndWFnZXMsIEkndmUgbWFpbnRhaW5lZCBhIGxv bmctdGVybSBpbnRlcmVzdCBpbiB0aGUgdHlwZXMgb2YNCiAgYXV0b21hdGlvbiB0YXNrcyB3aGlj aCB0aGUgc2hlbGwgbGVuZHMgaXRzZWxmIHRvLCBhbmQgSSBoYXZlIGEgc29mdA0KICBzcG90IGlu IG15IGhlYXJ0IGZvciBsYW5ndWFnZXMgd2hpY2ggbWFrZSB0aGlzIHR5cGUgb2YgcHJvZ3JhbW1p bmcgYQ0KICBwcmlvcml0eeKAlGxhbmd1YWdlcyBzdWNoIGFzIEFXSywgUGVybCBhbmQgUnVieS4N Cg0KICBTaW5jZSBsZWFybmluZyBPQ2FtbCwgSSBhbHdheXMgZmVsdCB0aGF0IGl0IGNvdWxkIGJl IGEgZ29vZCBsYW5ndWFnZQ0KICBmb3IgdGhlc2Uga2luZHMgb2Ygam9icyB3aXRoIGl0cyBsaWdo dCBzeW50YXgsIGV4dGVuc2l2ZSBVbml4DQogIGludGVyZmFjZSBhbmQgZ3JlYXQgcmVnZXggbGli cmFyaWVzIChJJ20gdGFsa2luZyBhYm91dCBgUmUnIGFuZA0KICBmcmllbmRzLCBub3QgYFN0cicp Lg0KDQogIEhvd2V2ZXIsIEkgYWx3YXlzIGZlbHQgdGhlIHByb3ZpZGVkIGludGVyZmFjZXMgZm9y IHdvcmtpbmcgd2l0aA0KICBwcm9jZXNzZXMgd2VyZeKApiBub3QgcXVpdGUgd2hhdCBJIHdhcyBs b29raW5nIGZvci4gYFN5cy5jb21tYW5kJw0KICAoY29tYmluZWQgd2l0aCBgRmlsZW5hbWUucXVv dGVfY29tbWFuZCcsIG9mIGNvdXJzZSkgaXMgT0sgZm9yIHdoYXQgaXQNCiAgZG9lcywgYnV0IGl0 IGRvZXNuJ3QgZG8gbXVjaC4gVGhlIG1vcmUgZXh0ZW5zaXZlIHNldCBvZiBwcm9jZXNzDQogIGhh bmRsaW5nIGNvbW1hbmRzIGluIHRoZSBVbml4IGxpYnJhcnkgbWFrZSBqdXN0IGFib3V0IGFueXRo aW5nDQogIHBvc3NpYmxlLCBidXQgdGhleSBkb24ndCBfZmVlbCBnb29kXyB0byBtZS4NCg0KICBT byBJIHNldCBvdXQgdG8gY3JlYXRlIGEgbGlicmFyeSBmb3Igd29ya2luZyB3aXRoIFVuaXggY29t bWFuZHMgd2hpY2gNCiAgZmVlbHMgcmlnaHQgdG8gbWUuIFN1YnByb2Nlc3MgZm9jdXNlcyBvbiAq c2FmZXR5KiBhbmQgKmVhc2Ugb2YgdXNlKuKAlGluDQogIHRoYXQgb3JkZXIuIEkgaG9wZSBzb21l b25lIGJlc2lkZXMgbXlzZWxmIHdpbGwgZmVlbCB0aGUgc2FtZSBhYm91dCBpdC4NCg0KICBOb3Rl IHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZSAoYW5kIG15IGZpcnN0IHB1YmxpYyBPQ2Ft bA0KICBsaWJyYXJ5KSBhbmQgSSB3ZWxjb21lIGZlZWRiYWNrIGFuZCBjcml0aWNpc20uDQoNCiAg 4oCiIEdpdGh1YjogPGh0dHBzOi8vZ2l0aHViLmNvbS9uaW5qYWFyb24vb2NhbWwtc3VicHJvY2Vz cz4NCiAg4oCiIE9wYW06IDxodHRwczovL29jYW1sLm9yZy9wL3N1YnByb2Nlc3MvbGF0ZXN0Pg0K ICDigKIgT2RvYyBkb2NzOg0KICAgIDxodHRwczovL25pbmphYXJvbi5naXRodWIuaW8vb2NhbWwt c3VicHJvY2Vzcy9zdWJwcm9jZXNzL2luZGV4Lmh0bWw+DQoNCg0KW2RvY3VtZW50YXRpb25dDQo8 aHR0cHM6Ly9uaW5qYWFyb24uZ2l0aHViLmlvL29jYW1sLXN1YnByb2Nlc3Mvc3VicHJvY2Vzcy9p bmRleC5odG1sPg0KDQpbYW50aS1CYXNoIHByb3BhZ2FuZGFdDQo8aHR0cHM6Ly9naXRodWIuY29t L25pbmphYXJvbi9yZXBsYWNpbmctYmFzaC1zY3JpcHRpbmctd2l0aC1weXRob24+DQoNCg0KY3Vk YWppdDogQmluZGluZ3MgdG8gdGhlIGBjdWRhJyBhbmQgYG52cnRjJyBsaWJyYXJpZXMNCuKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQog IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWN1ZGFqaXQtYmluZGluZ3MtdG8tdGhl LWN1ZGEtYW5kLW52cnRjLWxpYnJhcmllcy8xNTAxMC8zPg0KDQoNCkx1a2FzeiBTdGFmaW5pYWsg YW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBjdWRhaml0IDAuNy4wIGlzIG5v dyBhdmFpbGFibGUgaW4gdGhlIG9wYW0gcmVwb3NpdG9yeS4gSXQgaXMgbm93IHNwbGl0DQogIGlu dG8gc2VwYXJhdGUgbGlicmFyaWVzIGNvdmVyaW5nIE5WUlRDIGJpbmRpbmdzIGFuZCBDVURBIGJp bmRpbmdzLCBzbw0KICB0aGF0IGBOdnJ0YycgZG9lc24ndCBuZWVkIENVREEgZHJpdmVycyB0byBy dW4uDQoNCiAgVmVyc2lvbiAwLjcuMCBicmluZ3MgZnVsbCBuYXRpdmUgV2luZG93cyBjb21wYXRp YmlsaXR5Lg0KDQogIFZlcnNpb24gMC42LjAgaW1wcm92ZXMgbWVtb3J5IHNhZmV0eSBhbmQgZGVi dWdnYWJpbGl0eS4NCg0KICBjdWRhaml0LjAuNy4wIGNhbiBiZSB1c2VkIHdpdGggT0NBTk5MIG5l dXJhbF9uZXRzX2xpYi4wLjUuMiBhbHNvIGluDQogIHRoZSBvcGFtIHJlcG9zaXRvcnkuIEVuam95 IQ0KDQoNCnFjaGVjay1saW4gYW5kIHFjaGVjay1zdG0gMC4yDQrilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90 L2Fubi1xY2hlY2stbGluLWFuZC1xY2hlY2stc3RtLTAtMi8xMjMwMS82Pg0KDQoNCkphbiBNaWR0 Z2FhcmQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBWZXJzaW9uIDAuOCBvZiBgcWNoZWNr LWxpbicsIGBxY2hlY2stc3RtJywgYW5kDQogIGBxY2hlY2stbXVsdGljb3JldGVzdHMtdXRpbCcg d2FzIGp1c3QgbWVyZ2VkIG9uIHRoZSBvcGFtIHJlcG9zaXRvcnk6DQogIDxodHRwczovL2dpdGh1 Yi5jb20vb2NhbWwtbXVsdGljb3JlL211bHRpY29yZXRlc3RzL3JlbGVhc2VzL3RhZy8wLjg+DQoN CiAgVGhlIDAuOCByZWxlYXNlIGltcHJvdmVzIHRoZSBlcnJvciBmaW5kaW5nIGFiaWxpdHkgb2Yg dGhlIGBMaW5fdGhyZWFkJw0KICBhbmQgYFNUTV90aHJlYWQnIG1vZGVzOg0KDQogIOKAoiBbIzU0 MF06IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHByb2JhYmlsaXR5IG9mIGNvbnRleHQgc3dp dGNoaW5nDQogICAgaW4gYExpbl90aHJlYWQnIGFuZCBgU1RNX3RocmVhZCcgYnkgdXRpbGl6aW5n IGBHYy5NZW1wcm9mJw0KICAgIGNhbGxiYWNrcy4gQXZvaWQgb24gNS4wLTUuMiB3aXRob3V0IGBH Yy5NZW1wcm9mJyBzdXBwb3J0Lg0KICDigKIgWyM1NDZdOiBTcGVlZCB1cCBgTGluJydzIGRlZmF1 bHQgYHN0cmluZycgYW5kIGBieXRlcycgc2hyaW5rZXJzLg0KICDigKIgWyM1NDddOiBBZGQgYFV0 aWwuUHAue2NzdDQsY3N0NX0nDQoNCiAgSGFwcHkgdGVzdGluZyEgOnNtaWxleToNCg0KDQpbIzU0 MF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1tdWx0aWNvcmUvbXVsdGljb3JldGVzdHMvcHVs bC81NDA+DQoNClsjNTQ2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLW11bHRpY29yZS9tdWx0 aWNvcmV0ZXN0cy9wdWxsLzU0Nj4NCg0KWyM1NDddIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwt bXVsdGljb3JlL211bHRpY29yZXRlc3RzL3B1bGwvNTQ3Pg0KDQoNCkNhbGwgZm9yIFZvbHVudGVl cnMgdG8gSGVscCBNYWludGFpbiB0aGUgT3BhbS1SZXBvc2l0b3J5DQrilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8 aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2NhbGwtZm9yLXZvbHVudGVlcnMtdG8taGVscC1t YWludGFpbi10aGUtb3BhbS1yZXBvc2l0b3J5LzE2NDc2LzE+DQoNCg0KU2hvbiBhbm5vdW5jZWQN CuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICpUaGUgb3Bh bS1yZXBvc2l0b3J5IG5lZWRzIHlvdXIgaGVscCEgOmNhbWVsOjpoZWFydDoqDQoNCiAgKnRsO2Ry KjogV2FudCB0byBncm93IHlvdXIgT0NhbWwgY29ubmVjdGlvbnMgYW5kIGV4cGVydGlzZSB3aGls ZQ0KICAgc3VwcG9ydGluZyBhIHBpbGxhciBvZiB0aGUgZWNvc3lzdGVtPyBUaGVuIGpvaW4gdXMg YXMgYW4NCiAgIG9wYW0tcmVwb3NpdG9yeSBtYWludGFpbmVyIGJ5IGNvbW1lbnRpbmcgb24gdGhl IGlzc3VlIFtWb2x1bnRlZXIgdG8NCiAgIE1haW50YWluIHRoZSBvcGFtIFJlcG9zaXRvcnkgOnJh aXNlZF9oYW5kX3dpdGhfZmluZ2Vyc19zcGxheWVkOl0hDQoNCiAgVGhlIFtvcGFtLXJlcG9zaXRv cnldIGlzIHRoZSBvZmZpY2lhbCBzdG9yZSBvZiBwYWNrYWdlIGRlc2NyaXB0aW9ucw0KICBmb3Ig dGhlIGV4dGVuZGVkIE9DYW1sIGVjb3N5c3RlbS4gSXQgc2VydmVzIG1vcmUgdGhhbiA0NDAwIHBh Y2thZ2VzDQogIHRocnUgdGhlIGBvcGFtJyBwYWNrYWdlIG1hbmFnZXIgYW5kIGluZGV4LCBhbmQg aXQgaXMgYXBwcm9hY2hpbmcgMjAwDQogIG5ldyBwYWNrYWdlcyBhbmQgcmVsZWFzZXMgcGVyIG1v bnRoLiBUaGUgYG9wYW0nIHN5c3RlbSBpcyB1bmlxdWUgYW1vbmcNCiAgd2lkZWx5IHVzZWQgcHJv Z3JhbW1pbmcgbGFuZ3VhZ2UgcGFja2FnaW5nIHN5c3RlbXMgaW4gb2ZmZXJpbmcgdGhlDQogIGZv bGxvd2luZzoNCg0KICDigKIgSXQgc3VwcG9ydHMgW3N5c3RlbSBkZXBlbmRlbmNpZXNdIHRvIGFi c3RyYWN0IG92ZXIgdGhlIHBhY2thZ2luZw0KICAgIGNvbXBsZXhpdGllcyBvZiBtb3N0IGNvbW1v bmx5IHVzZWQgcGxhdGZvcm1zLg0KICDigKIgSXQgaXMgdGVzdGVkIGJ5IGFuIFtleHRlbnNpdmUg Q0kgbWF0cml4XSB0byBlbnN1cmUgcGFja2FnZXMgYXJlDQogICAgd29ya2luZywgaW5zdGFsbGFi bGUsIGFuZCBpbnRlcm9wZXJhYmxlLg0KICDigKIgSXQgaXMgW2N1cmF0ZWRdIHRvIGN1bHRpdmF0 ZSBhbiBlY29zeXN0ZW0gb2YgaGlnaCBxdWFsaXR5LCB1c2VmdWwNCiAgICBwYWNrYWdlcy4NCg0K ICBUaGlzIGFsbCB0YWtlcyBhIGxvdCBvZiB3b3JrIGFuZCBpdCBwcmVzZW50cyBhIHdpZGUgZmll bGQgb2YNCiAgaW50ZXJlc3Rpbmcgc29jaW8tdGVjaG5pY2FsIHByb2JsZW1zIGFuZCBleGNpdGlu ZyBvcHBvcnR1bml0aWVzLg0KDQogIEhlcmUgYXJlIHR3byBvZiB0aGUgcHJvamVjdHMgd2UndmUg dGFja2xlZCByZWNlbnRseToNCg0KICDigKIgT3JnYW5pemluZyBhbmQgZXhlY3V0aW5nIHRoZSBh cmNoaXZpbmcgaW5pdGlhdGl2ZSwgbGVkIGJ5IEBoYW5uZXMsDQogICAgYW5kIHByZXNlbnRlZCBp biBbIlB1c2hpbmcgdGhlIG9wYW0tcmVwb3NpdG9yeSBpbnRvIGEgc3VzdGFpbmFibGUNCiAgICBy ZXBvc2l0b3J5Il0NCiAg4oCiIFdvcmsgdG8gW0ltcHJvdmUgdGhlIENJIHN5c3RlbXMgYW5kIG1h aW50YWluIHRoZSBpbmZyYXN0cnVjdHVyZV0NCg0KICAqVGhlIFtvcGFtLXJlcG9zaXRvcnkgbWFp bnRhaW5lcnNdIG5lZWRzIHRoZSBoZWxwIG9mIGN1cmlvdXMgYW5kDQogICBtb3RpdmF0ZWQgdm9s dW50ZWVycywgbGlrZSB5b3UhKg0KDQoNCltWb2x1bnRlZXIgdG8gTWFpbnRhaW4gdGhlIG9wYW0g UmVwb3NpdG9yeQ0KOnJhaXNlZF9oYW5kX3dpdGhfZmluZ2Vyc19zcGxheWVkOl0NCjxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1yZXBvc2l0b3J5L2lzc3Vlcy8yNzc0MD4NCg0KW29wYW0t cmVwb3NpdG9yeV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtLXJlcG9zaXRvcnk+DQoN CltzeXN0ZW0gZGVwZW5kZW5jaWVzXQ0KPGh0dHBzOi8vb3BhbS5vY2FtbC5vcmcvZG9jL01hbnVh bC5odG1sI29wYW1maWVsZC1kZXBleHRzPg0KDQpbZXh0ZW5zaXZlIENJIG1hdHJpeF0NCjxodHRw czovL2dpdGh1Yi5jb20vb2N1cnJlbnQvb3BhbS1yZXBvLWNpL2Jsb2IvbWFzdGVyL2RvYy9wbGF0 Zm9ybXMubWQ+DQoNCltjdXJhdGVkXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtLXJl cG9zaXRvcnkvdHJlZS9tYXN0ZXIvZ292ZXJuYW5jZS9wb2xpY2llcz4NCg0KWyJQdXNoaW5nIHRo ZSBvcGFtLXJlcG9zaXRvcnkgaW50byBhIHN1c3RhaW5hYmxlIHJlcG9zaXRvcnkiXQ0KPGh0dHBz Oi8vYmxvZy5yb2J1ci5jb29wL2FydGljbGVzLzIwMjUtMDMtMjYtb3BhbS1yZXBvc2l0b3J5LWFy Y2hpdmUuaHRtbD4NCg0KW0ltcHJvdmUgdGhlIENJIHN5c3RlbXMgYW5kIG1haW50YWluIHRoZSBp bmZyYXN0cnVjdHVyZV0NCjxodHRwczovL29jYW1sLm9yZy9jaGFuZ2Vsb2cvMjAyNC0xMC0wMi11 cGRhdGVzPg0KDQpbb3BhbS1yZXBvc2l0b3J5IG1haW50YWluZXJzXQ0KPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY2FtbC9vcGFtLXJlcG9zaXRvcnkvdHJlZS9tYXN0ZXIvZ292ZXJuYW5jZT4NCg0KT3Bw b3J0dW5pdGllcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg VGhpcyBpcyBhIGdyZWF0IG9wcG9ydHVuaXR5IGZvciBuZXdlciBhbmQgc2Vhc29uZWQgbWVtYmVy cyBvZiB0aGUNCiAgT0NhbWwgY29tbXVuaXR5IHRvIHNlcnZlIGEgY3JpdGljYWwgZnVuY3Rpb24g YW5kIG1ha2UgYSBiaWcgaW1wYWN0IG9uDQogIHRoZSBzdXN0YWluYWJpbGl0eSBhbmQgaGVhbHRo IG9mIG91ciBncm93aW5nIGVjb3N5c3RlbToNCg0KICDigKIgQ29ubmVjdCB3aXRoIGFuZCBzdXBw b3J0IGNvbnRyaWJ1dG9ycyBmcm9tIGFjcm9zcyB0aGUgZWNvc3lzdGVtLg0KICDigKIgQ29udHJp YnV0ZSB0byBhIGxhcmdlLCBsb25nLXJ1bm5pbmcgb3BlbiBzb3VyY2UgcHJvamVjdC4NCiAg4oCi IExlYXJuIGZyb20gYW4gZXhwZXJpZW5jZWQgZ3JvdXAgb2YgY2FyaW5nIGFuZCBjb21taXR0ZWQg bWFpbnRhaW5lcnMuDQogIOKAoiBMZWFybiBhZHZhbmNlZCB0ZWNobmlxdWVzIGluIHBhY2thZ2lu ZyBtYW5hZ2VtZW50LCBpbiBhIHZhcmlldHkgb2YNCiAgICBidWlsZCBzeXN0ZW1zLCBhbmQgaW4g ZXZlcnkgbmljaGUgb2YgdGhlIGV4dGVuZGVkIE9DYW1sIGVjb3N5c3RlbS4NCiAg4oCiIEhlbHAg dG8gZXZvbHZlIHRoZSB0b29saW5nLCBpbmZyYXN0cnVjdHVyZSwgYW5kIHByb2Nlc3NlcyB0aGF0 DQogICAgZW5hYmxlIG91ciBkaXN0cmlidXRlZCBjb21tdW5pdHkgdG8gc2hhcmUgcHJvZ3JhbXMh DQoNCg0KTmV4dCBzdGVwcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCi IEFzayBhbnkgcXVlc3Rpb25zIGluIHRoaXMgdGhyZWFkLCBvciBieSBjb250YWN0aW5nIG9uZSBv ZiB0aGUNCiAgICBbYWN0aXZlIG1haW50YWluZXJzXSBkaXJlY3RseS4NCiAg4oCiIFZvbHVudGVl ciBieSBjb21tZW50aW5nIG9uIHRoZSBpc3N1ZSBbVm9sdW50ZWVyIHRvIE1haW50YWluIHRoZSBv cGFtDQogICAgUmVwb3NpdG9yeSA6cmFpc2VkX2hhbmRfd2l0aF9maW5nZXJzX3NwbGF5ZWQ6XS4N CiAg4oCiIFdlIHdpbGwgYXJyYW5nZSBmb3IgYW4gb3JpZW50YXRpb24gc2Vzc2lvbiBmb3IgYWxs IGludGVyZXN0ZWQNCiAgICBtYWludGFpbmVyIQ0KDQogIFdlIGxvb2sgZm9yd2FyZCB0byB3b3Jr aW5nIHdpdGggeW91IQ0KDQogIOKAkyBUaGUgT3BhbSBSZXBvc2l0b3J5IE1haW50YWluZXJzDQoN Cg0KW1ZvbHVudGVlciB0byBNYWludGFpbiB0aGUgb3BhbSBSZXBvc2l0b3J5DQo6cmFpc2VkX2hh bmRfd2l0aF9maW5nZXJzX3NwbGF5ZWQ6XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFt LXJlcG9zaXRvcnkvaXNzdWVzLzI3NzQwPg0KDQoNCkR1bmUgcGFja2FnZSBtYW5hZ2VtZW50IHVw ZGF0ZQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAg PGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9kdW5lLXBhY2thZ2UtbWFuYWdlbWVudC11cGRh dGUvMTY0NzcvMT4NCg0KDQpNYXJlayBLdWJpY2EgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBI aSBmZWxsb3cgY2FtZWwtd3JhbmdsZXJzLA0KDQogIEl0IGhhcyBiZWVuIGEgYml0IHF1aWV0IHdp dGggdXBkYXRlcyBsYXRlbHkgd2l0aCByZWdhcmRzIHRvIHRoZSBEdW5lDQogIHBhY2thZ2UgbWFu YWdlbWVudCBmZWF0dXJlLCBidXQgaXQgZG9lc24ndCBtZWFuIHRoYXQgdGhlIHdvcmsgaGFzDQog IHN0YWxsZWQuIFdlJ3JlIHN0aWxsIGNvbnRpbnVpbmcgYW5kIGdvdCB0byBhIHBvaW50IHdoZXJl IHRoZSBjb2RlIGlzDQogIG1hdHVyZSBlbm91Z2ggdG8gdGVzdCBpdCBvbiBhbGwgcGFja2FnZXMg aW4gT1BBTS1yZXBvc2l0b3J5Lg0KDQogIFNvbWUgb2YgeW91IG1pZ2h0IGJlIGF3YXJlIG9mIFtP UEFNLWhlYWx0aC1jaGVja106IGEgdG9vbC9zZXJ2aWNlIHRoYXQNCiAgbW9uaXRvcnMgaG93IG11 Y2ggb2YgdGhlIE9QQU0gZWNvc3lzdGVtIGNhbiBiZSBidWlsdCBzdWNjZXNzZnVsbHkuIFdlDQog IGV4dGVuZGVkIGl0IHRvIGJ1aWxkIHBhY2thZ2VzIHdpdGggRHVuZS4NCg0KICBJdCdzIGEgYml0 IG9mIGEgbG9uZ2VyIHJlYWQsIHdpdGggYWxsIHRoZSBleHBsYW5hdGlvbnMgYW5kIHRob3VnaHRz DQogIHRoYXQgd2VudCBpbnRvIHRoaXMsIGJ1dCBJIGFtIHN1cmUgaXQnbGwgYmUgaW50ZXJlc3Rp bmcgZm9yIHlvdSB3aGF0DQogIGNoYWxsZW5nZXMgd2UgaGFkLCB3aGF0IHByb2dyZXNzIGhhcHBl bmVkIGluIHRoZSBsYXN0IGZldyBtb250aHMgYW5kDQogIG1vc3QgaW1wb3J0YW50bHksIHdoZXJl IHdlIGN1cnJlbnRseSBhcmU6DQoNCiAgPGh0dHBzOi8vdGFyaWRlcy5jb20vYmxvZy8yMDI1LTA0 LTExLWV4cGFuZGluZy1kdW5lLXBhY2thZ2UtbWFuYWdlbWVudC10by10aGUtcmVzdC1vZi10aGUt ZWNvc3lzdGVtLz4NCg0KICBXZSdyZSBvZiBjb3Vyc2Ugbm90IGRvbmUgeWV0LiBTbyBleHBlY3Qg bW9yZSB1cGRhdGUgcG9zdHMgYXMgd2UgdHJ5IHRvDQogIGdldCBhcyBtYW55IHByb2plY3RzIHdv cmtpbmcgYXMgcG9zc2libGUgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IGhhdmUNCiAgcXVlc3Rpb25z LCBpZGVhcywgc3VnZ2VzdGlvbnMsIGZlZWwgZnJlZSB0byBkcm9wIGluIGluIHRoaXMgdGhyZWFk IDotKQ0KDQogIFRoYW5rcyBnbyBvdXQgdG8gbXkgY293b3JrZXJzIGludm9sdmVkIGluIHRoaXMg ZWZmb3J0IChAZ3JpZGJ1Z3MNCiAgQG1haXN0ZSBAYXJ0LXcgQEVsZWN0cmVBQVMgQHNoeW0gQG10 ZWx2ZXJzKS4NCg0KDQpbT1BBTS1oZWFsdGgtY2hlY2tdIDxodHRwczovL2dpdGh1Yi5jb20vb2N1 cnJlbnQvb3BhbS1oZWFsdGgtY2hlY2svPg0KDQoNCk9jc2lnZW4gcHVibGljIG1lZXRpbmcNCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5u LW9jc2lnZW4tcHVibGljLW1lZXRpbmcvMTY0MDgvMz4NCg0KDQpDb250aW51aW5nIHRoaXMgdGhy ZWFkLCBWaW5jZW50IEJhbGF0IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCiAgVGhhbmsgeW91IGZvciB0aGUgYXR0ZW5kYW5jZSEgVGhpcyB3YXMgYSB2ZXJ5IGRlbnNl IG1lZXRpbmcgOikgVGhlDQogIG1pbnV0ZXMgb2YgdGhlIG1lZXRpbmcgYXJlIGF2YWlsYWJsZSBb aGVyZV0NCg0KDQpbaGVyZV0NCjxodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzEx b0xlUXMzd2hDajFCTHp0Vm1scjR0VkEzRzF4S2w1MFpld2ROMENySE1JL2VkaXQ/dGFiPXQuMD4N Cg0KDQpMb29raW5nIGZvciBNYWludGFpbmVycyAvIE1vZGVyYXRvcnMgZm9yIHRoZSBPQ2FtbCBD b29rYm9vaw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5v cmcvdC9sb29raW5nLWZvci1tYWludGFpbmVycy1tb2RlcmF0b3JzLWZvci10aGUtb2NhbWwtY29v a2Jvb2svMTY0OTcvMT4NCg0KDQpTYWJpbmUgU2NobWFsdHogYW5ub3VuY2VkDQrilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIANCg0KICBIaSBldmVyeW9uZSwNCg0KICBhZnRlciB3ZSBhZGRlZCB0aGUgW09DYW1s IENvb2tib29rIG9uIE9DYW1sLm9yZ10sIHdlIGdvdCBpbnRvIGENCiAgcG9zaXRpb24gd2hlcmUg d2UNCiAgMS4gaGFkIGNvbnRyaWJ1dGlvbnMgc2l0dGluZyBhcm91bmQgZm9yIGEgd2hpbGUgYmVj YXVzZSB3ZSBkaWQgbm90DQogICAgIGhhdmUgdGhlIGNhcGFjaXR5IHRvIHJldmlldyBhbmQgbW9k ZXJhdGUgdGhlc2UgYWRkaXRpb25zLCBhbmQNCiAgMi4gZmVsdCB3ZSBkbyBub3QgaGF2ZSBhIGdv b2QgZW5vdWdoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGVjb3N5c3RlbSBpbg0KICAgICBnZW5lcmFs IHRvIGFzc2VzcyB3aGV0aGVyIHRoZSBjaG9zZW4gbGlicmFyaWVzIGFyZSByZWFzb25hYmxlLCBv cg0KICAgICB3aGV0aGVyIHRoZXJlJ3Mgb3RoZXIgb3B0aW9ucyB0aGF0IG5lZWQgdG8gYmUgbWVu dGlvbmVkLg0KDQogIFRvIG1ha2UgdGhlIGNvb2tib29rIHJlYWxseSB1c2VmdWwsIHdlIG5lZWQg dG8gYnVpbGQgYSBiZXR0ZXIgcHJvY2Vzcw0KICBhcm91bmQgbWFpbnRhaW5pbmcgaXQgYW5kIGFk ZGluZyB0byBpdC4NCg0KICBJIHByb3Bvc2U6DQogIDEuIFdlIGFwcG9pbnQgYSBoYW5kZnVsIG9m IG1vZGVyYXRvcnMgLyBtYWludGFpbmVycyBmb3IgdGhlIE9DYW1sDQogICAgIENvb2tib29rLCBk cmF3aW5nIGZyb20gdm9sdW50ZWVycy4NCiAgMi4gSSBjcmVhdGUgYSBUZWxlZ3JhbSBncm91cCB0 byBzdGF5IGluIGNvbnRhY3Qgd2l0aCB5b3UgYWxsIHRvIGFzaw0KICAgICBmb3IgaGVscCBvbiBj b29rYm9vayBQUnMuIChUaGlzIGNvdWxkIGEgZ3JvdXAgZm9jdXNlZCBwcmVjaXNlbHkgb24NCiAg ICAgdGhlIE9DYW1sIENvb2tib29rLikNCg0KICBTbywgaWYgeW91J3JlIHVwIGZvciBoZWxwaW5n IHdpdGggdGhlIGNvb2tib29rLCBoYXZlIGFueSBxdWVzdGlvbnMsIG9yDQogIG90aGVyIHJlbWFy a3MsIHBsZWFzZSByZWFjaCBvdXQgdG8gc2FiaW5lQHRhcmlkZXMuY29tLCBvciByZXBseSBoZXJl IQ0KICA6b3JhbmdlX2hlYXJ0Og0KDQoNCltPQ2FtbCBDb29rYm9vayBvbiBPQ2FtbC5vcmddIDxo dHRwczovL29jYW1sLm9yZy9jb29rYm9vaz4NCg0KDQpTQ0dJIGxpYnJhcnkgZm9yIE9DYW1sIGFu ZCBlaW8NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQog IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qvc2NnaS1saWJyYXJ5LWZvci1vY2FtbC1hbmQt ZWlvLzE2NDk4LzE+DQoNCg0KTWFyYyBDb3F1YW5kIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAg SGV5IGV2ZXJ5b25lIQ0KDQogIFRvIGxlYXJuIGEgYml0IG9mIG5ldHdvcmtpbmcgYW5kIGVpbywg SSB3cm90ZSBhbiBbc2NnaSBsaWJyYXJ5IHdpdGgNCiAgZWlvIHN1cHBvcnRdLiAgSXQgYWltcyB0 byBqdXN0IGltcGxlbWVudCB0aGUgc2NnaSBwcm90b2NvbCBhbmQgYSBmZXcNCiAgaGVscGVycyBm b3Igd3JpdGluZyBIVFRQIHJlc3BvbnNlcy4gSXQncyBzdGlsbCB2ZXJ5IG5ldywgYW5kIEkgYW0N CiAgbG9va2luZyBmb3IgZmVlZGJhY2sgb24gdGhlIGludGVyZmFjZSBhbmQgaW1wbGVtZW50YXRp b24gYmVmb3JlIEkNCiAgcHVibGlzaCBpdCB0byBvcGFtLg0KDQogIEhlcmUncyBhIHNpbXBsZSBw aW5nL3BvbmcgZXhhbXBsZSB0byBnZXQgc3RhcnRlZDoNCg0KICDilIzilIDilIDilIDilIANCiAg 4pSCIG9wZW4gU2NnaV9laW8NCiAg4pSCIA0KICDilIIgbGV0IGhhbmRsZXIgKHJlcXVlc3QgOiBS ZXF1ZXN0LnQpID0NCiAg4pSCICAgbWF0Y2ggUmVxdWVzdC5wYXRoIHJlcXVlc3Qgd2l0aA0KICDi lIIgICB8IFsicGluZyJdIC0+DQogIOKUgiAgICAgICBIdHRwX3Jlc3BvbnNlLmJvZHlfc3RyaW5n IGBPayAicG9uZyINCiAg4pSCICAgfCBfIC0+DQogIOKUgiAgICAgICBIdHRwX3Jlc3BvbnNlLmJv ZHlfc3RhdHVzIGBOb3RfZm91bmQNCiAg4pSCIA0KICDilIIgbGV0ICgpIDogdW5pdCA9DQogIOKU giAgIGxldCBwb3J0ID0gMzAwMCBpbg0KICDilIIgICBFaW9fbWFpbi5ydW4NCiAg4pSCICAgQEAg ZnVuIGVudiAtPg0KICDilIIgICBsZXQgYWRkciA9IGBUY3AgKEVpby5OZXQuSXBhZGRyLlY0Lmxv b3BiYWNrLCBwb3J0KSBpbg0KICDilIIgICBsZXQgbmV0ID0gRWlvLlN0ZGVudi5uZXQgZW52IGlu DQogIOKUgiAgIEVpby5Td2l0Y2gucnVuDQogIOKUgiAgIEBAIGZ1biBzdyAtPg0KICDilIIgICBs ZXQgY29ubiA9IEVpby5OZXQubGlzdGVuIG5ldCB+c3cgfnJldXNlX2FkZHI6dHJ1ZSB+YmFja2xv Zzo1IGFkZHIgaW4NCiAg4pSCICAgRWlvLnRyYWNlbG4gIkxpc3RlbmluZyB0byBjb25uZWN0aW9u cyBvbiBwb3J0ICVzIiAoc3RyaW5nX29mX2ludCBwb3J0KSA7DQogIOKUgiAgIEVpby5OZXQucnVu X3NlcnZlciBjb25uDQogIOKUgiAgICAgKFNjZ2lfZWlvLmh0dHBfc2VydmVyIH5zZXR0aW5nczpT Y2dpX2Vpby5kZWZhdWx0X3NldHRpbmdzIGhhbmRsZXIpDQogIOKUgiAgICAgfm9uX2Vycm9yOihF aW8udHJhY2VsbiAiRXJyb3IgaGFuZGxpbmcgY29ubmVjdGlvbjogJWEiIEZtdC5leG4pDQogIOKU lOKUgOKUgOKUgOKUgA0KDQoNCltzY2dpIGxpYnJhcnkgd2l0aCBlaW8gc3VwcG9ydF0gPGh0dHBz Oi8vZ2l0LnNyLmh0L35tYXJjYy9zY2dpLWVpbz4NCg0KDQpPdGhlciBPQ2FtbCBOZXdzDQrilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KRnJvbSB0aGUg b2NhbWwub3JnIGJsb2cNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhlcmUgYXJlIGxpbmtzIGZyb20gbWFu eSBPQ2FtbCBibG9ncyBhZ2dyZWdhdGVkIGF0IFt0aGUgb2NhbWwub3JnDQogIGJsb2ddLg0KDQog IOKAoiBbRXhwYW5kaW5nIER1bmUgUGFja2FnZSBNYW5hZ2VtZW50IHRvIHRoZSBSZXN0IG9mIHRo ZSBFY29zeXN0ZW1dDQogIOKAoiBbRE5Tdml6b3IgLSBydW4geW91ciBvd24gREhDUCBhbmQgRE5T IE1pcmFnZU9TIHVuaWtlcm5lbCAtIGdldHMgc29tZQ0KICAgIHRlc3RpbmddDQoNCg0KW3RoZSBv Y2FtbC5vcmcgYmxvZ10gPGh0dHBzOi8vb2NhbWwub3JnL2Jsb2cvPg0KDQpbRXhwYW5kaW5nIER1 bmUgUGFja2FnZSBNYW5hZ2VtZW50IHRvIHRoZSBSZXN0IG9mIHRoZSBFY29zeXN0ZW1dDQo8aHR0 cHM6Ly90YXJpZGVzLmNvbS9ibG9nLzIwMjUtMDQtMTEtZXhwYW5kaW5nLWR1bmUtcGFja2FnZS1t YW5hZ2VtZW50LXRvLXRoZS1yZXN0LW9mLXRoZS1lY29zeXN0ZW0+DQoNCltETlN2aXpvciAtIHJ1 biB5b3VyIG93biBESENQIGFuZCBETlMgTWlyYWdlT1MgdW5pa2VybmVsIC0gZ2V0cyBzb21lDQp0 ZXN0aW5nXSA8aHR0cHM6Ly9ibG9nLnJvYnVyLmNvb3AvYXJ0aWNsZXMvZG5zdml6b3IwMi5odG1s Pg0KDQoNCk9sZCBDV04NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIElmIHlvdSBoYXBwZW4g dG8gbWlzcyBhIENXTiwgeW91IGNhbiBbc2VuZCBtZSBhIG1lc3NhZ2VdIGFuZCBJJ2xsIG1haWwN CiAgaXQgdG8geW91LCBvciBnbyB0YWtlIGEgbG9vayBhdCBbdGhlIGFyY2hpdmVdIG9yIHRoZSBb UlNTIGZlZWQgb2YgdGhlDQogIGFyY2hpdmVzXS4NCg0KICBJZiB5b3UgYWxzbyB3aXNoIHRvIHJl Y2VpdmUgaXQgZXZlcnkgd2VlayBieSBtYWlsLCB5b3UgbWF5IHN1YnNjcmliZQ0KICB0byB0aGUg W2NhbWwtbGlzdF0uDQoNCiAgW0FsYW4gU2NobWl0dF0NCg0KDQpbc2VuZCBtZSBhIG1lc3NhZ2Vd IDxtYWlsdG86YWxhbi5zY2htaXR0QHBvbHl0ZWNobmlxdWUub3JnPg0KDQpbdGhlIGFyY2hpdmVd IDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUg YXJjaGl2ZXNdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi9jd24ucnNzPg0KDQpb Y2FtbC1saXN0XSA8aHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9zeW1wYS9pbmZvL2NhbWwtbGlzdD4N Cg0KW0FsYW4gU2NobWl0dF0gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvPg0KDQo= --=-=-= 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 08 to 15, 2025.

Semgrep is hiring OCaml developers to help develop our supply chain security product!

Aaron Acosta announced

Semgrep is an application security company focused on detecting and remediating vulnerabilities. The static analysis engine is primarily written in OCaml. We're looking for a senior or staff software engineer to help us enhance our third-party vulnerability detection capabilities. The ideal candidate has owned a critical tool, has worked on an OCaml project, has experience leading development teams and mentoring, and has some experience with supply chain security.

If this sounds interesting to you, see our job posting at Senior/Staff Program Analysis Engineer, Supply Chain! Let me know if you have any questions!

Subprocess: a library for launching and communicating with Unix commands

Aaron Christianson announced

An OCaml library with documentation!?

Yes. I realize it's unorthodox, but I thought I'd give it a shot.

I began my programming journey a bit later than most, and I began it with Bash. Over the years I've grown apart from Bash and even written some semi-popular anti-Bash propaganda.

However, while I'm not particularly a fan of shell programming languages, I've maintained a long-term interest in the types of automation tasks which the shell lends itself to, and I have a soft spot in my heart for languages which make this type of programming a priority—languages such as AWK, Perl and Ruby.

Since learning OCaml, I always felt that it could be a good language for these kinds of jobs with its light syntax, extensive Unix interface and great regex libraries (I'm talking about Re and friends, not Str).

However, I always felt the provided interfaces for working with processes were… not quite what I was looking for. Sys.command (combined with Filename.quote_command, of course) is OK for what it does, but it doesn't do much. The more extensive set of process handling commands in the Unix library make just about anything possible, but they don't feel good to me.

So I set out to create a library for working with Unix commands which feels right to me. Subprocess focuses on safety and ease of use—in that order. I hope someone besides myself will feel the same about it.

Note that this is the first release (and my first public OCaml library) and I welcome feedback and criticism.

cudajit: Bindings to the cuda and nvrtc libraries

Lukasz Stafiniak announced

cudajit 0.7.0 is now available in the opam repository. It is now split into separate libraries covering NVRTC bindings and CUDA bindings, so that Nvrtc doesn't need CUDA drivers to run.

Version 0.7.0 brings full native Windows compatibility.

Version 0.6.0 improves memory safety and debuggability.

cudajit.0.7.0 can be used with OCANNL neural_nets_lib.0.5.2 also in the opam repository. Enjoy!

qcheck-lin and qcheck-stm 0.2

Jan Midtgaard announced

Version 0.8 of qcheck-lin, qcheck-stm, and qcheck-multicoretests-util was just merged on the opam repository: https://github.com/ocaml-multicore/multicoretests/releases/tag/0.8

The 0.8 release improves the error finding ability of the Lin_thread and STM_thread modes:

  • #540: Significantly increase the probability of context switching in Lin_thread and STM_thread by utilizing Gc.Memprof callbacks. Avoid on 5.0-5.2 without Gc.Memprof support.
  • #546: Speed up Lin's default string and bytes shrinkers.
  • #547: Add Util.Pp.{cst4,cst5}

Happy testing! :smiley:

Call for Volunteers to Help Maintain the Opam-Repository

Shon announced

The opam-repository needs your help! :camel::heart:

tl;dr: Want to grow your OCaml connections and expertise while supporting a pillar of the ecosystem? Then join us as an opam-repository maintainer by commenting on the issue Volunteer to Maintain the opam Repository :raised_hand_with_fingers_splayed:!

The opam-repository is the official store of package descriptions for the extended OCaml ecosystem. It serves more than 4400 packages thru the opam package manager and index, and it is approaching 200 new packages and releases per month. The opam system is unique among widely used programming language packaging systems in offering the following:

  • It supports system dependencies to abstract over the packaging complexities of most commonly used platforms.
  • It is tested by an extensive CI matrix to ensure packages are working, installable, and interoperable.
  • It is curated to cultivate an ecosystem of high quality, useful packages.

This all takes a lot of work and it presents a wide field of interesting socio-technical problems and exciting opportunities.

Here are two of the projects we've tackled recently:

The opam-repository maintainers needs the help of curious and motivated volunteers, like you!

Opportunities

This is a great opportunity for newer and seasoned members of the OCaml community to serve a critical function and make a big impact on the sustainability and health of our growing ecosystem:

  • Connect with and support contributors from across the ecosystem.
  • Contribute to a large, long-running open source project.
  • Learn from an experienced group of caring and committed maintainers.
  • Learn advanced techniques in packaging management, in a variety of build systems, and in every niche of the extended OCaml ecosystem.
  • Help to evolve the tooling, infrastructure, and processes that enable our distributed community to share programs!

Next steps

We look forward to working with you!

– The Opam Repository Maintainers

Dune package management update

Marek Kubica announced

Hi fellow camel-wranglers,

It has been a bit quiet with updates lately with regards to the Dune package management feature, but it doesn't mean that the work has stalled. We're still continuing and got to a point where the code is mature enough to test it on all packages in OPAM-repository.

Some of you might be aware of OPAM-health-check: a tool/service that monitors how much of the OPAM ecosystem can be built successfully. We extended it to build packages with Dune.

It's a bit of a longer read, with all the explanations and thoughts that went into this, but I am sure it'll be interesting for you what challenges we had, what progress happened in the last few months and most importantly, where we currently are:

https://tarides.com/blog/2025-04-11-expanding-dune-package-management-to-the-rest-of-the-ecosystem/

We're of course not done yet. So expect more update posts as we try to get as many projects working as possible in the future. If you have questions, ideas, suggestions, feel free to drop in in this thread :-)

Thanks go out to my coworkers involved in this effort (@gridbugs @maiste @art-w @ElectreAAS @shym @mtelvers).

Ocsigen public meeting

Continuing this thread, Vincent Balat announced

Thank you for the attendance! This was a very dense meeting :) The minutes of the meeting are available here

Looking for Maintainers / Moderators for the OCaml Cookbook

Sabine Schmaltz announced

Hi everyone,

after we added the OCaml Cookbook on OCaml.org, we got into a position where we

  1. had contributions sitting around for a while because we did not have the capacity to review and moderate these additions, and
  2. felt we do not have a good enough understanding of the ecosystem in general to assess whether the chosen libraries are reasonable, or whether there's other options that need to be mentioned.

To make the cookbook really useful, we need to build a better process around maintaining it and adding to it.

I propose:

  1. We appoint a handful of moderators / maintainers for the OCaml Cookbook, drawing from volunteers.
  2. I create a Telegram group to stay in contact with you all to ask for help on cookbook PRs. (This could a group focused precisely on the OCaml Cookbook.)

So, if you're up for helping with the cookbook, have any questions, or other remarks, please reach out to sabine@tarides.com, or reply here! :orange_heart:

SCGI library for OCaml and eio

Marc Coquand announced

Hey everyone!

To learn a bit of networking and eio, I wrote an scgi library with eio support. It aims to just implement the scgi protocol and a few helpers for writing HTTP responses. It's still very new, and I am looking for feedback on the interface and implementation before I publish it to opam.

Here's a simple ping/pong example to get started:

open Scgi_eio

let handler (request : Request.t) =
  match Request.path request with
  | ["ping"] ->
      Http_response.body_string `Ok "pong"
  | _ ->
      Http_response.body_status `Not_found

let () : unit =
  let port = 3000 in
  Eio_main.run
  @@ fun env ->
  let addr = `Tcp (Eio.Net.Ipaddr.V4.loopback, port) in
  let net = Eio.Stdenv.net env in
  Eio.Switch.run
  @@ fun sw ->
  let conn = Eio.Net.listen net ~sw ~reuse_addr:true ~backlog:5 addr in
  Eio.traceln "Listening to connections on port %s" (string_of_int port) ;
  Eio.Net.run_server conn
    (Scgi_eio.http_server ~settings:Scgi_eio.default_settings handler)
    ~on_error:(Eio.traceln "Error handling connection: %a" Fmt.exn)

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.

--=-=-=--