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=sXy7iyxD; 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=LAQJk5V8; 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 559A840066 for ; Tue, 19 Aug 2025 12:20:57 +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=WhjxkGc/Wf3bxJsRM90nAPPFT6+SvRcFjw+Afl1s/4w=; b=sXy7iyxDbUI+PllLzG9D7SOfAeQqyQQ5T0JTwLxOlOKUGDZBpOiczfc6 G121c92PJjX+QnfB8zLHIUOQFDp9mKM6vQ5CUrP8IM3L9qf/LoAn6w66R MX0Eo62UxSreQ2b6WUpHsjWZFKBWAztu+M6aGcU8DOxCmDOzKgDXtdgT1 0=; X-CSE-ConnectionGUID: fxsIBfyISsGVBWw43pBpkQ== X-CSE-MsgGUID: G+pAIfIcQkW7x0rXlYm1Uw== 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.17,300,1747692000"; d="scan'208,217";a="235428638" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 19 Aug 2025 14:20:57 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 25E29E0CD6; Tue, 19 Aug 2025 14:20:57 +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 41279E0171 for ; Tue, 19 Aug 2025 14:20:50 +0200 (CEST) X-CSE-ConnectionGUID: ElsUWRcsSEC+oj/O2nSoUw== X-CSE-MsgGUID: JR0KeUv5Tci7NXLyEFuhxg== IronPort-SDR: 68a46c21_7PZMGREcycWXihZ9T4HtADm3wBNB5QBF6zEA3n5hFO1zMz1 WAC4FqEzTbFnZXS8rInSBQzpzaqP6FSQe5D/3MA== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0GABACGa6RohSIeaIFahBmBAxkBZ1ozBwhJQx6DdINPj?= =?us-ascii?q?iKBFpsygWmBEQMYFgUeFQEDAQ0uARsEAQIEAQEDAQIBggyCLkYCFowPAh8GA?= =?us-ascii?q?QQ0EwECBAEBAQEDAgMBAQEBAQEBAQENAQEFAQEBAgEBAgQGAQIQAQEBAUBJh?= =?us-ascii?q?k8NgkVRUx5eFgEBAQEBAQEBAQEBAQEBIgEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQECBAQEARkecAQGEwEBMgYYIwMUAQYDA?= =?us-ascii?q?gQNATUXARIagmgBgiACAk4DBQwGnx2bTHp/M4EBggwBAQaBCFADDy/aC4FkC?= =?us-ascii?q?YExGIVsgkoaASpJawKER4MdgR8nD4FVRIEVNYFzSgdvgVAySBcBAQEBXEQcA?= =?us-ascii?q?QEIBgM8CYMlgmmCJoECFB2BPoI8gjOBBSSIbIFuA3gihmKBREszLAFVExcLB?= =?us-ascii?q?wVbgQgDKjQxbjIdgSeFFoQnK0+FDoEZg1MRE2sPBoEVg2WCEEADC209NxQbl?= =?us-ascii?q?DEXKRlqgU8lDlUXbAkWAQFYOR4WCA0OGwEEASkFAwMGBQIthGOOBxQEkAaOG?= =?us-ascii?q?JRjNAeEH4FeBgyJCIEmlgaFW6N0gRwimGQiiV2BJgmBbx9MlSQ8hVmBfyOBR?= =?us-ascii?q?g8HMxowQ4JnCQo8HA+Nfy4Wg14QgS6BJnoqFzk7r0BBNQIBATgCBwEKAQEDC?= =?us-ascii?q?YViAQGMCDKBSwEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:Q/Le1at4xHS7tdFOhJUePdNy7skDS9V00zEX/kB9WHVpm62j5q OTdZEgvyMc5wx+ZJhNo7290cq7IU80l6QV3WB5B97LNzUO01HGEGgN1+ff6gylMxK73O9Q36 VtfsFFeb/NJGk/q931pC2xE9NI+qjizElEv5a680tQ X-Talos-CUID: =?us-ascii?q?9a23=3ATVRPEGtFGsvlPtX2ea7SCBh66IsIdmbg803bOHS?= =?us-ascii?q?VIiVuSvqyE1mr/557xp8=3D?= X-Talos-MUID: 9a23:n5PRhwmt2hSc5jQ0zk39dnpADp9L7pmwVXwGkMogi+2VGAJtOyeS2WE= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.17,300,1747692000"; d="scan'208,217";a="235428615" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDEg+El+HLDpMg/XD5Qe6W0bfxxBqwwzKA8RgR?= =?us-ascii?q?OMg/527Lv+q3JvrC7Qfq9+u8OaKDXst4PCxfEUSCGjCZCORSOWzLyaEP?= =?us-ascii?q?JK8QbIbgNyR7X+zT7uU/3BAtBa5agJ9wnLMVt78vEKXjveMM7wJzL/FV?= =?us-ascii?q?IaB1HxppRYEyknYkocKuvyHw=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; 19 Aug 2025 14:20:49 +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 83E51564DAD; Tue, 19 Aug 2025 14:20:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1755606048; bh=SCm8GINUSaxEPs5vhHBA4P3wWfgbJnCRd2FOHV2RG8s=; h=From:To:Subject:Date:Message-ID; b=LAQJk5V8uzmK76TLijhGzE2/VcgUs7Klgj/piN9Hb1YrIyimLg86PBywjmaYb6MGY szg/V3mpnKW0hHG5AvDX82WmJCUdSXjPW8tiuwCNN/Ndc8h9wGJdWlVib7qc1R7a6S oXtAuhRxZOWwUds8XjdXSC/2XZ85XOPlooRSGql0= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 19 Aug 2025 14:20:46 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 19 14:20:48 2025 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.479770, queueID=BFFC0564DB3 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: 19365 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 ZWsgb2YgQXVndXN0IDEyIHRvIDE5LA0KMjAyNS4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpodHRwY2F0 cywgb2NhbWwtaDEsIHZpZiwgYW5kIGh1cmw6IGEgd2Vic3RhY2sgZm9yIE9DYW1sIDUNCldoeSBM ZWFuIDQgcmVwbGFjZWQgT0NhbWwgYXMgbXkgUHJpbWFyeSBMYW5ndWFnZQ0KUmVtaW5kZXI6IFlv dSBDYW4gU3RpbGwgQ29tZSB0byBXYXJzYXcgZm9yIEZVTiBPQ2FtbA0KT3RoZXIgT0NhbWwgTmV3 cw0KT2xkIENXTg0KDQoNCmh0dHBjYXRzLCBvY2FtbC1oMSwgdmlmLCBhbmQgaHVybDogYSB3ZWJz dGFjayBmb3IgT0NhbWwgNQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2Ft bC5vcmcvdC9hbm4taHR0cGNhdHMtb2NhbWwtaDEtdmlmLWh1cmwtYS13ZWJzdGFjay1mb3Itb2Nh bWwtNS8xNzEwNC8xPg0KDQoNCkNhbGFzY2liZXR0YSBSb21haW4gYW5ub3VuY2VkDQrilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJIGFtIGRlbGlnaHRlZCB0byBhbm5vdW5jZSB0 aGUgcmVsZWFzZSBvZiBgaHR0cGNhdHMuMC4xLjAnLCBgb2NhbWwtaDEnDQogIChpbmNsdWRpbmcg V2ViU29ja2V0cyBzdXBwb3J0KSwgYW5kIHRoZSBleHBlcmltZW50YWwgcmVsZWFzZSBvZiBgdmlm JywNCiAgYSB3ZWIgZnJhbWV3b3JrIGZvciBPQ2FtbCA1LCBhbmQgYGh1cmwnLCBhbiBIVFRQIGNs aWVudCBpbiBPQ2FtbC4NCg0KDQpgb2NhbWwtaDEnDQrilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYwNCg0KICBbYG9jYW1sLWgxJ10gaXMgYW4gYXV0aG9yaXNlZCBmb3JrIG9mIFtodHRwL2Fm XSAoYWZ0ZXIgZXhwbGljaXQNCiAgcGVybWlzc2lvbiBmcm9tIGl0cyBhdXRob3IpIGluIG9yZGVy IHRvIGNvbnRpbnVlIGl0cyBkZXZlbG9wbWVudCBhbmQNCiAgcmVsZWFzZSBwcm9jZXNzLiBJdCB3 YXMgY3JlYXRlZCBpbiBNYXkgMjAyNCBhbmQgbm93IGluY2x1ZGVzIHN1cHBvcnQNCiAgZm9yIHdl YnNvY2tldHMgKGFuZCBjb25uZWN0aW9uIHVwZ3JhZGVzKSB0aGFua3MgdG8gdGhlIHdvcmsgb2Yg QHN3cnVwLg0KDQoNCltgb2NhbWwtaDEnXSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYnVyLWNvb3Av b2NhbWwtaDE+DQoNCltodHRwL2FmXSA8aHR0cHM6Ly9naXRodWIuY29tL2luaGFiaXRlZHR5cGUv aHR0cGFmPg0KDQoNCmBodHRwY2F0cycsIGEgSFRUUCBjbGllbnQvc2VydmVyIHdpdGggW2BtaW91 J10NCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIEl0IHdhcyBpbiAyMDIzIHRoYXQgd2Ug YmVnYW4gZXhwZXJpbWVudGluZyB3aXRoIE9DYW1sIDUgYW5kIEhUVFANCiAgcmVxdWVzdHMgd2l0 aHRoZSBbYGh0dHBjYXRzJ10gcHJvamVjdDoNCg0KICA8aHR0cHM6Ly94LmNvbS9EaW5vb3NhdXJl L3N0YXR1cy8xNzEwMzIwNjAzMTEzMDk1NTM4Pg0KDQogIFRoaXMgcHJvamVjdCBhbGxvd2VkIHVz IHRvIGNvbnNvbGlkYXRlIHNvbWUgb2Ygb3VyIGxpYnJhcmllcywgc3VjaA0KICBhc35taXJhZ2Ut Y3J5cHRvfiwgaW4gb3JkZXIgdG8gbW92ZSBiZXlvbmQgT0NhbWwgNSBhbmQsIGluIHBhcnRpY3Vs YXIsDQogIHRvIHJlc29sdmUgdGhlIGZldyBkYXRhLXJhY2VzIHdlIGhhZCAoaGF2aW5nIHN0YXJ0 ZWQgc29tZSBvZiBvdXINCiAgcHJvamVjdHMgYmVmb3JlIE9DYW1sIG11bHRpY29yZSB3YXMgZXZl biBtZW50aW9uZWQpLg0KDQogIEFmdGVyIHNvbWUgZmFpcmx5IGV4dGVuc2l2ZSBtYWludGVuYW5j ZSB3b3JrLCB3ZSB3ZXJlIGZpbmFsbHkgYWJsZSB0bw0KICBsYXkgdGhlIGdyb3VuZHdvcmsgZm9y IGFuIE9DYW1sIEhUVFAgY2xpZW50IHRoYXQgY2FuIG1ha2UgcGFyYWxsZWwNCiAgcmVxdWVzdHMg dXNpbmcgTWlvdS4NCg0KICBgaHR0cGNhdHMnIGhhcyB0aGVyZWZvcmUgaW1wcm92ZWQgb3ZlciB0 aW1lIGFuZCBvZmZlcnMgYSBmYWlybHkgc2ltcGxlDQogIHdheSB0byBtYWtlIEhUVFAgcmVxdWVz dHMgaW4gT0NhbWwgKHRoYW5rcyB0byBvdXIgZXhwZXJpZW5jZSB3aXRoDQogIFtodHRwLWx3dC1j bGllbnRdKSBhbmQgdG8gaW1wbGVtZW50IGFuIEhUVFAgc2VydmVyIHRoYXQgY2FuIGhhbmRsZQ0K ICBpbmNvbWluZyBIVFRQIHJlcXVlc3RzIGluIHBhcmFsbGVsLiBUaGUgW2RvY3VtZW50YXRpb25d IGhhcyBiZWVuDQogIGltcHJvdmVkIGFuZCBpcyBwYXJ0aWN1bGFybHkgY29tcHJlaGVuc2l2ZSAo d2l0aCBleGFtcGxlcykgc28gdGhhdA0KICB1c2VycyBoYXZlIGNvbXBsZXRlIGNvbnRyb2wgb3Zl ciBhbGwgdGhlIHByb3RvY29sIGxheWVycyByZXF1aXJlZCBmb3INCiAgY29tbXVuaWNhdGlvbiB3 aXRoIHdlYiBzZXJ2aWNlOiBmcm9tIHRoZSBVbml4IHNvY2tldCB0byB0aGUgVExTDQogIC9oYW5k c2hha2UvIChpbmNsdWRpbmcgQUxQTiBuZWdvdGlhdGlvbiksIGluY2x1ZGluZyBkb21haW4gbmFt ZQ0KICByZXNvbHV0aW9uLg0KDQogIGBodHRwY2F0cycgYWxzbyBwYXJ0aWFsbHkgc3ludGhlc2l6 ZXMgb3VyIHdvcmsgb24NCiAgcHJvdG9jb2xzLiBFdmVyeXRoaW5nIG5lZWRlZCB0byBjb21tdW5p Y2F0ZSB3aXRoIHdlYiBzZXJ2aWNlcyBpcw0KICBpbXBsZW1lbnRlZCBpbiBPQ2FtbDoNCg0KICDi gKIgW2BvY2FtbC10bHMnXSBpcyB1c2VkIGZvciB0aGUgVExTIHByb3RvY29sDQogIOKAoiBbYG9j YW1sLWgxJ10gYW5kIFtgb2NhbWwtaDInXSBhcmUgdXNlZCBmb3IgdGhlIEhUVFAgcHJvdG9jb2wN CiAgICAoYGh0dHAvMS4xJyBhbmQgYGgyJykNCiAg4oCiIFtgb2NhbWwtZG5zJ10gYW5kIFtgaGFw cHktZXllYmFsbHMnXSBhcmUgdXNlZCBmb3IgZG9tYWluIG5hbWUNCiAgICByZXNvbHV0aW9uIGFu ZCB0aGUgYWJpbGl0eSB0byBwcmVmZXIgSVB2NiBjb25uZWN0aW9ucyBvciwgYXQgYmVzdCwNCiAg ICB0aGUgZmFzdGVzdCBUQ1AvSVAgY29ubmVjdGlvbnMNCg0KICBGaW5hbGx5LCBiZW5jaG1hcmtp bmcgd29yayBoYXMgYmVlbiBpbml0aWF0ZWQsIHRoZSBvcmlnaW5zIG9mIHdoaWNoDQogIGNhbiBi ZSBmb3VuZCBbaGVyZV0sIHNob3dpbmcgdGhlIHJlc3VsdHMgdGhhdCBjYW4gYmUgYWNoaWV2ZWQg d2l0aA0KICBgaHR0cGNhdHMnIGFzIGEgc2VydmVyLiBUaGUgYmVuY2htYXJrIGlzIHJlcHJvZHVj aWJsZSBhbmQgYXZhaWxhYmxlDQogIFtoZXJlXSwgYW5kIGhlcmUgYXJlIHRoZSByZXN1bHRzIHdl IG9idGFpbmVkIChvbiBBTUQgUnl6ZW4gOSA3OTUwWA0KICAxNi1Db3JlIFByb2Nlc3Nvcik6DQoN CiAg4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB 4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSBDQogICBjbGllbnRz ICB0aHJlYWRzICBsYXRlbmN5QXZnICBsYXRlbmN5TWF4ICBsYXRlbmN5U3RkZXYgIHRvdGFsUmVx dWVzdHMgDQogIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KICAg ICAgICAxNiAgICAgICAxNiAgNDcuNDN1cyAgICAgMi4yN21zICAgICAgMzguNDh1cyAgICAgICAg ICAgICA1MzAzNzAwIA0KICAgICAgICAzMiAgICAgICAzMiAgNzEuNzN1cyAgICAgMS4wNG1zICAg ICAgNDcuNTh1cyAgICAgICAgICAgICA3MDE2NzI5IA0KICAgICAgICA2NCAgICAgICAzMiAgMTQw LjI5dXMgICAgNS43Mm1zICAgICAgMTIxLjUwdXMgICAgICAgICAgICA3NjU4MTQ2IA0KICAgICAg IDEyOCAgICAgICAzMiAgMjc5LjczdXMgICAgMTEuMzVtcyAgICAgMjg3LjkydXMgICAgICAgICAg ICA3OTc3MzA2IA0KICAgICAgIDI1NiAgICAgICAzMiAgNTE5LjAydXMgICAgMTYuODltcyAgICAg MzMwLjIwdXMgICAgICAgICAgICA3ODE2NDM1IA0KICAgICAgIDUxMiAgICAgICAzMiAgMS4wNm1z ICAgICAgMzcuNDJtcyAgICAgNTM0LjE0dXMgICAgICAgICAgICA3NDA5NzgxIA0KICDilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIENCg0KDQpbYG1pb3UnXSA8aHR0cHM6 Ly9naXRodWIuY29tL3JvYnVyLWNvb3AvbWlvdT4NCg0KW2BodHRwY2F0cyddIDxodHRwczovL2dp dGh1Yi5jb20vcm9idXItY29vcC9odHRwY2F0cz4NCg0KW2h0dHAtbHd0LWNsaWVudF0gPGh0dHBz Oi8vZ2l0aHViLmNvbS9yb2J1ci1jb29wL2h0dHAtbHd0LWNsaWVudD4NCg0KW2RvY3VtZW50YXRp b25dDQo8aHR0cHM6Ly9vY2FtbC5vcmcvcC9odHRwY2F0cy9sYXRlc3QvZG9jL2h0dHBjYXRzL0h0 dHBjYXRzL2luZGV4Lmh0bWw+DQoNCltgb2NhbWwtdGxzJ10gPGh0dHBzOi8vZ2l0aHViLmNvbS9t aXJsZWZ0L29jYW1sLXRscz4NCg0KW2BvY2FtbC1oMSddIDxodHRwczovL2dpdGh1Yi5jb20vcm9i dXItY29vcC9vY2FtbC1oMT4NCg0KW2BvY2FtbC1oMiddIDxodHRwczovL2dpdGh1Yi5jb20vYW5t b250ZWlyby9vY2FtbC1oMj4NCg0KW2BvY2FtbC1kbnMnXSA8aHR0cHM6Ly9naXRodWIuY29tL21p cmFnZS9vY2FtbC1kbnM+DQoNCltgaGFwcHktZXllYmFsbHMnXSA8aHR0cHM6Ly9naXRodWIuY29t L3JvYnVyLWNvb3AvaGFwcHktZXllYmFsbHM+DQoNCltoZXJlXQ0KPGh0dHBzOi8vZGlzY3Vzcy5v Y2FtbC5vcmcvdC9sd3QtbXVsdGktcHJvY2Vzc2luZy1tdWNoLW1vcmUtcGVyZm9ybWFudC10aGFu LWVpby1tdWx0aS1jb3JlLzE2Mzk1Pg0KDQpbaGVyZV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9UZWNo RW1wb3dlci9GcmFtZXdvcmtCZW5jaG1hcmtzL3B1bGwvMTAwMDk+DQoNCg0KYGh1cmwnLCBhIGNv bW1hbmQtbGluZSB0b29sIHRvIG1ha2UgSFRUUCByZXF1ZXN0cyBpbiBPQ2FtbA0K4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg VG8gY29tcGxldGUgb3VyIHdvcmssIHdlIGhhdmUgZGV2ZWxvcGVkIGEgdG9vbCB0aGF0IGFsbG93 cyBIVFRQDQogIHJlcXVlc3RzIHRvIGJlIG1hZGUgZnJvbSB0aGUgY29tbWFuZCBsaW5lOiBbYGh1 cmwnXS4gVGhpcyB0b29sIGlzDQogIHN0aWxsIGluIHRoZSBleHBlcmltZW50YWwgcGhhc2UsIGJ1 dCBpdCBhbGxvd3MgdXMgdG8gYWN0aXZhdGUgYW4NCiAgaW1wcm92ZW1lbnQgbG9vcCBiZXR3ZWVu IGBodHRwY2F0cycgYW5kIHRoZSByZWFsIHdvcmxkIGJ5IHRlc3RpbmcNCiAgY2VydGFpbiB0eXBl cyBvZiByZXF1ZXN0cy4NCg0KICBIZXJlIGlzIGEgc2NyZWVuc2hvdCBvZiB0aGUgdG9vbCAoYGh1 cmwgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZw0KICAtLXByaW50IGRpc2hIclInKToNCg0KICA8 aHR0cHM6Ly91czEuZGlzY291cnNlLWNkbi5jb20vZmxleDAyMC91cGxvYWRzL29jYW1sL29wdGlt aXplZC8yWC9jL2M0YWQ1NmI1MzYyZWExNjZlM2NhMzY1ZTBlYTQzNTVhNDdlZjNkMTFfMl8xMDA0 eDEwMDAucG5nPg0KDQogIFRoZSBwdXJwb3NlIG9mIHRoaXMgdG9vbCBpcyB0byBmYWNpbGl0YXRl IHRoZSB0ZXN0cyB3ZSB3b3VsZCBsaWtlIHRvDQogIHBlcmZvcm0gd2l0aCBhIHdlYiBzZXJ2ZXIg YnkgYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgY29udGVudA0KICBvZiByZXF1ZXN0 cyAoYW5kIHdoZXRoZXIgdGhpcyBjb250ZW50IHNob3VsZCBiZSBKU09OIG9yDQogIGBtdWx0aXBh cnQvZm9ybS1kYXRhJykgYW5kIG9idGFpbiBhIHdob2xlIGJ1bmNoIG9mIGluZm9ybWF0aW9uIHN1 Y2ggYXMNCiAgdGhlIHJlc3BvbnNlIGdpdmVuIGJ5IHRoZSBzZXJ2aWNlLCB0aGUgc2VydmVy4oCZ cyBJUCBhZGRyZXNzLCBhbmQgdGhlDQogIHJlc3VsdCBvZiB0aGUgVExTIGhhbmRzaGFrZS4NCg0K DQpbYGh1cmwnXSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYnVyLWNvb3AvaHVybD4NCg0KDQpgdmlm JywgYSBzaW1wbGUgd2ViIGZyYW1ld29yayBmb3IgT0NhbWwgNQ0K4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgRmlu YWxseSwgdG8gY29tcGxldGUgb3VyIHdvcmssIHdlIGhhdmUgYWxzbyBkZXZlbG9wZWQgYSBuZXcg d2ViDQogIGZyYW1ld29yayBiYXNlZCBvbiBgaHR0cGNhdHMnIGFuZCBgbWlvdScgaW4gb3JkZXIg dG8gb2J0YWluIGEgd2ViDQogIHNlcnZlciBjYXBhYmxlIG9mIGhhbmRsaW5nIHBhcmFsbGVsIHJl cXVlc3RzOiBbYHZpZiddLiBMaWtlIGBodXJsJywNCiAgYHZpZicgaXMgc3RpbGwgaW4gdGhlIGV4 cGVyaW1lbnRhbCBzdGFnZS4gSG93ZXZlciwgd2UgYXJlIGN1cnJlbnRseQ0KICBhYmxlIHRvIHBy b2R1Y2Ugc21hbGwgd2ViIGFwcGxpY2F0aW9ucyBhbmQgd2Ugd2lsbCBwcmVzZW50IHRoaXMNCiAg cHJvamVjdCBhdCB0aGUgbmV4dCBbRlVOIE9DYW1sIHNlc3Npb25dIChjb21lIGFsb25nISkuDQoN CiAgQSB0dXRvcmlhbCBleHBsYWluaW5nIGhvdyB0byBtYWtlIGEgY2hhdHJvb20gaW4gT0NhbWwg aXMgYXZhaWxhYmxlDQogIFtoZXJlXS4NCg0KICBUaGUgb2JqZWN0aXZlIG9mIHZpZiBpcyB0byBw cm92aWRlIGEgc21hbGwgZnJhbWV3b3JrIGZvciBkZXZlbG9waW5nDQogIHdlYiBhcHBsaWNhdGlv bnMuIEluIGFkZGl0aW9uLCBpdCBvZmZlcnMgYSB0b29sIGNhbGxlZCBgdmlmJywgd2hpY2ggaXMN CiAgYSAqbmF0aXZlKiBPQ2FtbCBpbnRlcnByZXRlciB0aGF0IGFsbG93cyB5b3UgdG8gbGF1bmNo IGEgd2ViIHNlcnZlcg0KICBmcm9tIGFuIE9DYW1sIHNjcmlwdC4gSGVyZSBpcyBhIHNpbXBsZSBl eGFtcGxlIGZyb20gdGhlIGNvbW1hbmQgbGluZToNCg0KICDilIzilIDilIDilIDilIANCiAg4pSC ICQgb3BhbSBpbnN0YWxsIC15IHZpZiBodXJsDQogIOKUgiAkIGNhdCA+bWFpbi5tbCA8PEVPRg0K ICDilIIgI3JlcXVpcmUgInZpZiIgOzsNCiAg4pSCIA0KICDilIIgbGV0IGRlZmF1bHQgcmVxIHNl cnZlciAoKSA9DQogIOKUgiAgIGxldCBvcGVuIFZpZi5SZXNwb25zZS5TeW50YXggaW4NCiAg4pSC ICAgbGV0IGZpZWxkID0gImNvbnRlbnQtdHlwZSIgaW4NCiAg4pSCICAgbGV0KiAoKSA9IFZpZi5S ZXNwb25zZS5hZGQgfmZpZWxkICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIGluDQogIOKUgiAg IGxldCogKCkgPSBWaWYuUmVzcG9uc2Uud2l0aF9zdHJpbmcgcmVxICJIZWxsbyBXb3JsZCEiIGlu DQogIOKUgiAgIFZpZi5SZXNwb25zZS5yZXNwb25kIGBPSw0KICDilIIgOzsNCiAg4pSCIA0KICDi lIIgbGV0IHJvdXRlcyA9DQogIOKUgiAgIGxldCBvcGVuIFZpZi5VcmkgaW4NCiAg4pSCICAgbGV0 IG9wZW4gVmlmLlJvdXRlIGluDQogIOKUgiAgIFsgZ2V0IChyZWwgLz8/IG5pbCkgLS0+IGRlZmF1 bHQgXQ0KICDilIIgDQogIOKUgiBsZXQgKCkgPQ0KICDilIIgICBNaW91X3VuaXgucnVuIEBAIGZ1 biAoKSAtPg0KICDilIIgICBWaWYucnVuIHJvdXRlcyAoKQ0KICDilIIgOzsNCiAg4pSCIEVPRg0K ICDilIIgJCB2aWYgLS1waWQgdmlkLnBpZCBtYWluLm1sICYNCiAg4pSCICQgaHVybCBodHRwOi8v bG9jYWxob3N0OjgwODAvIC1wIGINCiAg4pSCIEhlbGxvIFdvcmxkIQ0KICDilIIgJCBraWxsIC1T SUdJTlQgJChjYXQgdmlkLnBpZCkNCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgTGlrZSBhbGwgcHJv amVjdHMgaW4gb3VyIGNvb3BlcmF0aXZlLCBpdCBpcyBvcGVuIHRvIGNvbnRyaWJ1dGlvbnMgYW5k DQogIGltcHJvdmVtZW50cy4gVGhlIHdvcmtzaG9wIHdlIHdpbGwgYmUgaG9zdGluZyBhdCBGVU4g T0NhbWwgd2lsbCBiZSBhbg0KICBvcHBvcnR1bml0eSBmb3IgdXMgYW5kIGZvciB5b3UgdG8gcGFy dGljaXBhdGUgaW4gdGhlc2UgcHJvamVjdHMuDQoNCg0KW2B2aWYnXSA8aHR0cHM6Ly9naXRodWIu Y29tL3JvYnVyLWNvb3AvdmlmPg0KDQpbRlVOIE9DYW1sIHNlc3Npb25dIDxodHRwczovL2Z1bi1v Y2FtbC5jb20vPg0KDQpbaGVyZV0gPGh0dHBzOi8vcm9idXItY29vcC5naXRodWIuaW8vdmlmLz4N Cg0KDQpDb25jbHVzaW9uDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBCYXNl ZCBvbiB0aGUgZGF0ZXMgcHJvdmlkZWQsIGl0IGlzIGNsZWFyIHRoYXQgdGhpcyB3YXMgYSBzdWJz dGFudGlhbA0KICBhbmQgbGVuZ3RoeSB1bmRlcnRha2luZy4gSXQgaXMgdGhlIHJlc3VsdCBvZiB0 aGUgd29yayBvZiBzZXZlcmFsDQogIGluZGl2aWR1YWxzIGFuZCBvdXIgY29vcGVyYXRpdmUgKGJv dGggdGVjaG5pY2FsIGFuZCBzb2NpYWwpLg0KDQogIFdlIHdvdWxkIGxpa2UgdG8gdGhhbmsgZXZl cnlvbmUgd2hvIHBhcnRpY2lwYXRlZCBpbiBhbnkgd2F5IGluIHRoZQ0KICBkZXZlbG9wbWVudCBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBpdHMgaW50ZWdyYXRpb24gaW50byB0aGUgT0NhbWwNCiAgZWNv c3lzdGVtIChub3RhYmx5IHRocm91Z2ggbWlvdeKAmXMgc3VwcG9ydCBmb3IgY2VydGFpbiBsaWJy YXJpZXMgc3VjaA0KICBhcyBbY2FxdGldKS4NCg0KICBXZSBob3BlIHRoYXQgbWFueSBvZiB5b3Ug d2lsbCBhdHRlbmQgb3VyIHdvcmtzaG9wIChmb3IgdGhlIEZVTiBPQ2FtbA0KICBpdHNlbGYsIGFu ZCBhbHNvIHRvIG1lZXQgdXMpIGFuZCBob3BlIHRoYXQgeW91IHdpbGwgZW5qb3kgVmlmIGluDQog IHBhcnRpY3VsYXIuIElmIHlvdSBsaWtlIG91ciB3b3JrLCB5b3UgY2FuIGFsc28gbWFrZSBhIGRv bmF0aW9uIHRvIG91cg0KICBjb29wZXJhdGl2ZSAodmlhIFtHaXRIdWJdIG9yIGRpcmVjdGx5IHVz aW5nIFthbiBJQkFOXSkuDQoNCiAgSGFwcHkgaGFja2luZyENCg0KDQpbY2FxdGldIDxodHRwczov L2dpdGh1Yi5jb20vcGF1cmtlZGFsL29jYW1sLWNhcXRpL3B1bGwvMTE3Pg0KDQpbR2l0SHViXSA8 aHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL3JvYnVyLWNvb3A+DQoNClthbiBJQkFOXSA8aHR0 cHM6Ly9yb2J1ci5jb29wL0RvbmF0ZT4NCg0KDQpXaHkgTGVhbiA0IHJlcGxhY2VkIE9DYW1sIGFz IG15IFByaW1hcnkgTGFuZ3VhZ2UNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQog IEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qvd2h5LWxlYW4tNC1yZXBs YWNlZC1vY2FtbC1hcy1teS1wcmltYXJ5LWxhbmd1YWdlLzE3MTA5LzE+DQoNCg0KU2hvbiBhbm5v dW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIDxo dHRwczovL2tpcmFuY29kZXMubWUvcG9zdHMvbG9nLW9jYW1sLXRvLWxlYW4uaHRtbD4NCg0KDQpS ZW1pbmRlcjogWW91IENhbiBTdGlsbCBDb21lIHRvIFdhcnNhdyBmb3IgRlVOIE9DYW1sDQrilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8 aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3JlbWluZGVyLXlvdS1jYW4tc3RpbGwtY29tZS10 by13YXJzYXctZm9yLWZ1bi1vY2FtbC8xNzExMC8xPg0KDQoNClNhYmluZSBTY2htYWx0eiBhbm5v dW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhleSBldmVyeW9uZSwNCg0KICB3ZSBzdGls bCBoYXZlIGEgZmV3IHRpY2tldHMgbGVmdCBmb3IgRlVOIE9DYW1sDQogICg8aHR0cHM6Ly9mdW4t b2NhbWwuY29tPikhDQoNCiAgVGhpcyBpcyB5b3VyIGNoYW5jZSB0byBtZWV0IGEgbG90IG9mIGdy ZWF0IE9DYW1sIGZvbGtzLCBhdHRlbmQgdGhlDQogIHRhbGtzIG9uIGRheSAxLCBoYXZlIHNvbWUg aW50ZXJlc3RpbmcgZGlzY3Vzc2lvbnMsIGFuZCBsZWFybiBhIGxvdCBpbg0KICB0aGUgaGFuZHMt b24gd29ya3Nob3BzIG9mZmVyZWQgb24gZGF5IDIuDQoNCiAgSWYgeW91IGhhdmVu4oCZdCB1c2Vk IE9DYW1sIGJlZm9yZTogbm8gcHJvYmxlbSwgd2UgaGF2ZSBhIGJlZ2lubmVyDQogIHdvcmtzaG9w IHRvIGdldCB5b3Ugc3RhcnRlZCENCg0KICBCZXN0IG9mIGFsbCBpdOKAmXMgZnJlZSBmb3IgYXR0 ZW5kZWVzIChhZG1pc3Npb24gKyBmb29kIGluY2x1ZGVkKSwNCiAgdGhhbmtzIHRvIG91ciBnZW5l cm91cyBzcG9uc29ycy4NCg0KICBDaGVlcnMgU2FiaW5lDQoNCg0KT3RoZXIgT0NhbWwgTmV3cw0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCkZyb20g dGhlIG9jYW1sLm9yZyBibG9nDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIZXJlIGFyZSBsaW5rcyBmcm9t IG1hbnkgT0NhbWwgYmxvZ3MgYWdncmVnYXRlZCBhdCBbdGhlIG9jYW1sLm9yZw0KICBibG9nXS4N Cg0KICDigKIgW1VwY29taW5nIE9DYW1sIEV2ZW50c10NCiAg4oCiIFtXaHkgSSBjaG9zZSBPQ2Ft bCBhcyBteSBwcmltYXJ5IGxhbmd1YWdlXQ0KDQoNClt0aGUgb2NhbWwub3JnIGJsb2ddIDxodHRw czovL29jYW1sLm9yZy9ibG9nLz4NCg0KW1VwY29taW5nIE9DYW1sIEV2ZW50c10gPGh0dHBzOi8v b2NhbWwub3JnL2V2ZW50cz4NCg0KW1doeSBJIGNob3NlIE9DYW1sIGFzIG15IHByaW1hcnkgbGFu Z3VhZ2VdDQo8aHR0cHM6Ly94dncubG9sL2VuL2FydGljbGVzL3doeS1vY2FtbC5odG1sPg0KDQoN Ck9sZCBDV04NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIElmIHlvdSBoYXBwZW4gdG8gbWlz cyBhIENXTiwgeW91IGNhbiBbc2VuZCBtZSBhIG1lc3NhZ2VdIGFuZCBJJ2xsIG1haWwNCiAgaXQg dG8geW91LCBvciBnbyB0YWtlIGEgbG9vayBhdCBbdGhlIGFyY2hpdmVdIG9yIHRoZSBbUlNTIGZl ZWQgb2YgdGhlDQogIGFyY2hpdmVzXS4NCg0KICBJZiB5b3UgYWxzbyB3aXNoIHRvIHJlY2VpdmUg aXQgZXZlcnkgd2VlayBieSBtYWlsLCB5b3UgbWF5IHN1YnNjcmliZQ0KICB0byB0aGUgW2NhbWwt bGlzdF0uDQoNCiAgW0FsYW4gU2NobWl0dF0NCg0KDQpbc2VuZCBtZSBhIG1lc3NhZ2VdIDxtYWls dG86YWxhbi5zY2htaXR0QHBvbHl0ZWNobmlxdWUub3JnPg0KDQpbdGhlIGFyY2hpdmVdIDxodHRw czovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2 ZXNdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi9jd24ucnNzPg0KDQpbY2FtbC1s aXN0XSA8aHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9zeW1wYS9pbmZvL2NhbWwtbGlzdD4NCg0KW0Fs YW4gU2NobWl0dF0gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvPg0KDQo= --=-=-= 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 August 12 to 19, 2025.

httpcats, ocaml-h1, vif, and hurl: a webstack for OCaml 5

Calascibetta Romain announced

I am delighted to announce the release of httpcats.0.1.0, ocaml-h1 (including WebSockets support), and the experimental rele= ase of vif, a web framework for OCaml 5, and hurl= , an HTTP client in OCaml.

ocaml-h1

ocaml-h1 is an authorised fork of http/af (after explicit permission from its author) in order to con= tinue its development and release process. It was created in May 2024 and n= ow includes support for websockets (and connection upgrades) thanks to the = work of @swrup.

httpcats, a HTTP client/server with miou

It was in 2023 that we began experimenting with OCaml 5 and HTTP requests w= iththe httpcats project:

https://x.c= om/Dinoosaure/status/1710320603113095538

This project allowed us to consolidate some of our libraries, such as~mirag= e-crypto~, in order to move beyond OCaml 5 and, in particular, to resolve t= he few data-races we had (having started some of our projects before OCaml = multicore was even mentioned).

After some fairly extensive maintenance work, we were finally able to lay t= he groundwork for an OCaml HTTP client that can make parallel requests usin= g Miou.

httpcats has therefore improved over time and offers a fairly = simple way to make HTTP requests in OCaml (thanks to our experience with http-lwt-client= ) and to implement an HTTP server that can handle incoming HTTP requests in= parallel. The documentation has been improved and is particularl= y comprehensive (with examples) so that users have complete control over al= l the protocol layers required for communication with web service: from the= Unix socket to the TLS handshake (including ALPN negotiation), incl= uding domain name resolution.

httpcats also partially synthesizes our work on protocols. Eve= rything needed to communicate with web services is implemented in OCaml:

Finally, benchmarking work has been initiated, the origins of which can be = found here, showing the results that c= an be achieved with httpcats as a server. The benchmark is rep= roducible and available here, and here are the results we obtained (on A= MD Ryzen 9 7950X 16-Core Processor):

clients threads latencyAvg latencyMax latencyStdev totalRequests
16 16 47.43us 2.27ms 38.48us 5303700
32 32 71.73us 1.04ms 47.58us 7016729
64 32 140.29us 5.72ms 121.50us 7658146
128 32 279.73us 11.35ms 287.92us 7977306
256 32 519.02us 16.89ms 330.20us 7816435
512 32 1.06ms 37.42ms 534.14us 7409781

hurl, a command-line tool to make HTTP r= equests in OCaml

To complete our work, we have developed a tool that allows HTTP requests to= be made from the command line: hurl. This tool is still in the experimental phase, bu= t it allows us to activate an improvement loop between httpcats and the real world by testing certain types of requests.

Here is a screenshot of the tool (hurl https://discuss.ocaml.org --pr= int dishHrR):

3D"c4a=

The purpose of this tool is to facilitate the tests we would like to perfor= m with a web server by allowing the user to specify the content of requests= (and whether this content should be JSON or multipart/form-data) and obtain a whole bunch of information such as the response given by t= he service, the server=E2=80=99s IP address, and the result of the TLS hand= shake.

vif, a simple web framework for OCaml 5<= /h4>

Finally, to complete our work, we have also developed a new web framework b= ased on httpcats and miou in order to obtain a we= b server capable of handling parallel requests: vif. Like hurl, vif<= /code> is still in the experimental stage. However, we are currently able t= o produce small web applications and we will present this project at the ne= xt FUN OCaml session (come along!).

A tutorial explaining how to make a chatroom in OCaml is available here.

The objective of vif is to provide a small framework for developing web app= lications. In addition, it offers a tool called vif, which is = a native OCaml interpreter that allows you to launch a web server fr= om an OCaml script. Here is a simple example from the command line:

$ opam install -y vif hurl
$ cat >main.ml <<EOF
#require "vif" ;;

let default req server () =3D
  let open Vif.Response.Syntax in
  let field =3D "content-type" in
  let* () =3D Vif.Response.add ~field "text/html; charset=3Dutf-8" in
  let* () =3D Vif.Response.with_string req "Hello World!" in
  Vif.Response.respond `OK
;;

let routes =3D
  let open Vif.Uri in
  let open Vif.Route in
  [ get (rel /?? nil) --> default ]

let () =3D
  Miou_unix.run @@ fun () ->
  Vif.run routes ()
;;
EOF
$ vif --pid vid.pid main.ml &
$ hurl http://localhost:8080/ -p b
Hello World!
$ kill -SIGINT $(cat vid.pid)

Like all projects in our cooperative, it is open to contributions and impro= vements. The workshop we will be hosting at FUN OCaml will be an opportunit= y for us and for you to participate in these projects.

Conclusion

Based on the dates provided, it is clear that this was a substantial and le= ngthy undertaking. It is the result of the work of several individuals and = our cooperative (both technical and social).

We would like to thank everyone who participated in any way in the developm= ent of this software and its integration into the OCaml ecosystem (notably = through miou=E2=80=99s support for certain libraries such as caqti).

We hope that many of you will attend our workshop (for the FUN OCaml itself= , and also to meet us) and hope that you will enjoy Vif in particular. If y= ou like our work, you can also make a donation to our cooperative (via GitHub or directly using= an IBAN).

Happy hacking!

Reminder: You Can Still Come to Warsaw for FUN OCaml

Sabine Schmaltz announced

Hey everyone,

we still have a few tickets left for FUN OCaml (https://fun-ocaml.com)!

This is your chance to meet a lot of great OCaml folks, attend the talks on= day 1, have some interesting discussions, and learn a lot in the hands-on = workshops offered on day 2.

If you haven=E2=80=99t used OCaml before: no problem, we have a beginner wo= rkshop to get you started!

Best of all it=E2=80=99s free for attendees (admission + food included), th= anks to our generous sponsors.

Cheers Sabine

Other OCaml News

From the ocaml.org blog

Here are links from many OCaml blogs aggregated at 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 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.

--=-=-=--