From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id EB59D5D5 for ; Tue, 17 Aug 2021 06:24:50 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.84,326,1620684000"; d="scan'208,217";a="524136071" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 17 Aug 2021 08:24:47 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 1D581E0C63; Tue, 17 Aug 2021 08:24:47 +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 BA71CE0018 for ; Tue, 17 Aug 2021 08:24:41 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=W8//=NI=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?A9a23=3AykCnaxC/cPyYWV2gkr0uUyQUUEUY04WdBeb1wqQ?= =?us-ascii?q?uh78GSKm/5ZOqZBWZua81yg6QFtiEo9t/yMPu+5j6XmIB5ZvT+FsjS7drEyE/t?= =?us-ascii?q?MMNggY7C9SEA0CoZNTjbig9AdgQHAQ9pyLzPkdaAtvxaEPPqXOu8zESBg//NQ1?= =?us-ascii?q?oLejpB4Lelcu62/6u95HJZwhEmTWxbLNwIR6rsQjfq84ajJd4JK0s0BXJuHxIe?= =?us-ascii?q?+pXxWNsO12emgv369mz8pB+7Sleouot+MFcX6r0eaQ4VqFYAy89M28p/s3rtAL?= =?us-ascii?q?MQhWJ63ABT2gZiBtIAwzC7BHnQpf8tzbxu+Rh1CWGO8D9ULc7Vym/76dwUB/nl?= =?us-ascii?q?jsINyI3/mHQj8x/lqNboBS8rBB7zIPZZISZOfx+cq3ee9MaW2tBXt1QVyNaBoO?= =?us-ascii?q?zcZYEDuQGPeZCsob9vEYFoR+wCAWwAe/izCJDiH3r0q0gy+kvER/I0hEuEdwNv?= =?us-ascii?q?3vbsM74O70OXe2v1qTE0SnPYvFQ1Dzg6IbIaBchofSUUL9sdcre008vHB7YgFq?= =?us-ascii?q?MqYzlOjKV1vgRs2OG6OdvT+avhHQhqw1ruTig2scsiozIhoIJ1lDJ7j15wIExJ?= =?us-ascii?q?dy4VE50f8KrEJtWtyGbLot2X90tT3tvuCYgxb0LoJi2dzUFx5o73RDQceCHc5S?= =?us-ascii?q?W7RL5UuacOTh1iGxqdb6jiBu+7Uqtx+3yWMe71FtEoDdIn8fOu30DyxHf99SKR?= =?us-ascii?q?Pt880qv1jiC1AHe5vxaLE47kafWNoAsz6I2m5EOv0rDGSr2l1/3jK+Qbkgk4va?= =?us-ascii?q?n6/jmYrX6uJCcL4h0igT7MqswgMC/B/o3MhQWU2ic5euzzrjj/UnjTLVNlP02n?= =?us-ascii?q?bHVsJ/bJcQHpq65HhRa3pw/5Ba4CjeqyNUYnX8dLFJEYh2LlYbpO0vWLPDjDPe?= =?us-ascii?q?/jEyskDNxyPDAJLHhBY/NLnfbnLfufLZ9905cyBcowtxF5pJUDakNIP3yWk/ts?= =?us-ascii?q?NzXFAQ2Pxa1w+bgENl92YIeWX6LAqCDK6zeq0OH5uUqI+WUeI8apjf8K/8+5/L?= =?us-ascii?q?0kXA5nlodcbGo3ZQKaHG4GvBmL1+eYXr2jdcMF3oBsAkmTOHylVGOTzpea2yvU?= =?us-ascii?q?64g6Tw3EoyrAZvZSo2jj7GNxDq3E5lYa2xcFFyBHnTle5+ZV/oIbC+eONJtnz4?= =?us-ascii?q?FWLWnVoQvzwuhtBXgxLpiNufU+jMXtZbk1NVt4u3Smgw++SZsD8Sa12GMT310k?= =?us-ascii?q?X0USD822qB/oFV9ykqd3qRihPxYD9NT6+tIUgc8K5Hc0/R3B83sVg/FZNuFVUq?= =?us-ascii?q?qT9q8DTw/Ut492dEDbkllF9WnlB/D3i6qA7EPl7yMAZw56r/S0WTsKcph03vJ1?= =?us-ascii?q?Kosg0I9TsZXLWOohbZy9xDUB47Nk0SZi7ilergc3C7L9WeD1HeOs19CXA53S6X?= =?us-ascii?q?FUmgSaVHSrdvj4EPOVaSuBqgnMgtEyM6CNrdKZ8byglVBWffjPsjRbHyqm2uqA?= =?us-ascii?q?BaFybyNYJDte2UH0yXREFIEnBwL/XaaKQg+AT+srH7EAzxrEVLjekfs8ehlqHO?= =?us-ascii?q?nVUI01AGLb0h517Wv4BIVhPqcS+kS3r0eoishpS90Tx6B2IecD8WG7UI1eLpaS?= =?us-ascii?q?dci5hFB2H6P80Q3NYOmZegq0lUBdSxzvljyzFN2BpRElY4ttnx8iEJ5IKeclVd?= =?us-ascii?q?AbC+w3JbqO7SRJHOh0gqobvv/3ljYmO2d+qIO9Ohw/1zntQfvDUEi9nR7z/FN1?= =?us-ascii?q?H+N+pjBDAwTSI/8FEEt+E4p9PnhfiAh6taMhjVXOq6uv2qdirrB68MvzQumdNp?= =?us-ascii?q?EdqbYBEn1CcJIXqBGycQviwHvdhUALfxf/64yPtq7er2BwqH5ZY6IeRq+imBW/?= =?us-ascii?q?I120kSN7jdxDOnS0MRcq8w=3D?= IronPort-HdrOrdr: =?us-ascii?q?A9a23=3AMoW6W6h49ymxk6VCSA4S4CYPIHBQXsYji2hC?= =?us-ascii?q?6mlwRA09TyX4rbHNoB1173DJYVoqNk3I+urwW5VoI0m8yXcd2+B4VotKNzOKhI?= =?us-ascii?q?LHFutfBPPZowEJzUXFmtJg6Q=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DAAwCYahphlyIeaIFaHAEBASsBAQcBA?= =?us-ascii?q?QEFAQEEBAEBgX2BIRsCfQFkVzoxhAk+iQSGIAEkgiSDKIV1hleNHANfAQMBDRI?= =?us-ascii?q?CFgEOBQECBAEBhHo6AQQEghECHgYBBTMTAQIEFQEBBQEBAQIBAwMEARMBAQEBA?= =?us-ascii?q?QEBAQkbBl6FaA2CIhMMDAMDg3cBChEGBAY7KiMDFAcDAgQNARcBFAoXARIaglc?= =?us-ascii?q?BgwcEAQqLYpwKfzKBAYNNAQMCDkGEFYFjDQIUgRUCAQGFblNIAYJtCINwKRCBV?= =?us-ascii?q?USBFYJ1boJLDAsBAQEBAYE4AwEBgzeCZASDRw4gGDQEMC0BCgkWAQEgCS8jFQg?= =?us-ascii?q?5FwUWLwspEY4TgwQTHpZ7k1drLQeDK4ExBguHElSBFYxFh3uDZYFIhQeFFIZEk?= =?us-ascii?q?GkhlXCIdYELCYI1hmiCDYpcBgICBC+EeYFNKoFMHgMJBzMaMEOCaQlgDlaNIgE?= =?us-ascii?q?FhBSBPoEmgXU7hUw/MgIBATQCBgEKAQEDCYEIAQEFEwsBiEcBAQ?= X-IPAS-Result: =?us-ascii?q?A0DAAwCYahphlyIeaIFaHAEBASsBAQcBAQEFAQEEBAEBgX2?= =?us-ascii?q?BIRsCfQFkVzoxhAk+iQSGIAEkgiSDKIV1hleNHANfAQMBDRICFgEOBQECBAEBh?= =?us-ascii?q?Ho6AQQEghECHgYBBTMTAQIEFQEBBQEBAQIBAwMEARMBAQEBAQEBAQkbBl6FaA2?= =?us-ascii?q?CIhMMDAMDg3cBChEGBAY7KiMDFAcDAgQNARcBFAoXARIaglcBgwcEAQqLYpwKf?= =?us-ascii?q?zKBAYNNAQMCDkGEFYFjDQIUgRUCAQGFblNIAYJtCINwKRCBVUSBFYJ1boJLDAs?= =?us-ascii?q?BAQEBAYE4AwEBgzeCZASDRw4gGDQEMC0BCgkWAQEgCS8jFQg5FwUWLwspEY4Tg?= =?us-ascii?q?wQTHpZ7k1drLQeDK4ExBguHElSBFYxFh3uDZYFIhQeFFIZEkGkhlXCIdYELCYI?= =?us-ascii?q?1hmiCDYpcBgICBC+EeYFNKoFMHgMJBzMaMEOCaQlgDlaNIgEFhBSBPoEmgXU7h?= =?us-ascii?q?Uw/MgIBATQCBgEKAQEDCYEIAQEFEwsBiEcBAQ?= X-IronPort-AV: E=Sophos;i="5.84,326,1620684000"; d="scan'208,217";a="524136051" X-MGA-submission: =?us-ascii?q?MDFNIc6pyLFtWwqrsCvTK4GOeVDO3wTKbthmBR?= =?us-ascii?q?/qhQ+v7JwwKCpxQ0tZSBXEVxM8gYe8rTJdmyM6NAnNmGMvmQ+MbwDE+v?= =?us-ascii?q?IVnmsToVgoLXqZbYfHj0Ueol+QQYrro/tLIY/7IeRWCjVtW0L1jS85wm?= =?us-ascii?q?8j/orUxht0WumoeLG6aqQHrw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Aug 2021 08:24:40 +0200 Received: from set (lputeaux-657-1-140-176.w193-248.abo.wanadoo.fr [193.248.199.176]) (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 F334B5646C9; Tue, 17 Aug 2021 08:24:34 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 17 Aug 2021 08:24:33 +0200 Message-ID: <8735r8io66.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 17 08:24:38 2021 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000068, queueID=2900C564780 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: 18552 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 ZWsgb2YgQXVndXN0IDEwIHRvIDE3LA0KMjAyMS4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpodHRwLW11 bHRpcGFydC1mb3JtZGF0YSB2My4wLjEgcmVsZWFzZWQNCkNhbGwgZm9yIHBhcnRpY2lwYXRpb246 IE1MIEZhbWlseSBXb3Jrc2hvcCAyMDIxDQpDb3Etb2Ytb2NhbWwgdG8gdHJhbnNsYXRlIE9DYW1s IHRvIENvcQ0KT2xkIENXTg0KDQoNCmh0dHAtbXVsdGlwYXJ0LWZvcm1kYXRhIHYzLjAuMSByZWxl YXNlZA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9h bm4taHR0cC1tdWx0aXBhcnQtZm9ybWRhdGEtdjMtMC0xLXJlbGVhc2VkLzgyNjEvMj4NCg0KDQpD b250aW51aW5nIHRoZSB0aHJlYWQgZnJvbSBsYXN0IHdlZWssIEhhbm5lcyBNZWhuZXJ0IGFza2Vk DQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBUaGFua3MgZm9yIHlvdXIgd29yayBvbiB0aGF0LiBJJ20gY3VyaW91cyBhYm91 dCB0aGUgZGlmZmVyZW50DQogICJtdWx0aXBhcnQiIGxpYnJhcmllcyBub3cgYXZhaWxhYmxlIGZv ciBPQ2FtbCDigJMgYW55b25lIGhhcyBhIGJyaWVmDQogIGNvbXBhcmlzb24gb2YgdGhlbT8NCg0K ICDigKIgW2h0dHAtbXVsdGlwYXJ0LWZvcm1kYXRhXSBhcyBhbm5vdW5jZWQgYWJvdmUNCiAg4oCi IFttdWx0aXBhcnRfZm9ybV0gYnkgQGRpbm9zYXVyZQ0KICDigKIgW211bHRpcGFydC1mb3JtLWRh dGFdIGJ5IGNyeXB0b3NlbnNlDQoNCiAgQXJlIHRoZXJlIGZ1bmN0aW9uYWwgZGlmZmVyZW5jZXM/ IENvcnJlY3RuZXNzPyBQZXJmb3JtYW5jZT8gT3IganVzdCBhDQogIG1hdHRlciBvZiBzdHlsZSBh bmQgY28tZGV2ZWxvcG1lbnQ/DQoNCg0KW2h0dHAtbXVsdGlwYXJ0LWZvcm1kYXRhXQ0KPGh0dHBz Oi8vZ2l0aHViLmNvbS9sZW1hZXRlY2gvaHR0cC1tdWx0aXBhcnQtZm9ybWRhdGE+DQoNClttdWx0 aXBhcnRfZm9ybV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9kaW5vc2F1cmUvbXVsdGlwYXJ0X2Zvcm0v Pg0KDQpbbXVsdGlwYXJ0LWZvcm0tZGF0YV0NCjxodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvc2Vu c2UvbXVsdGlwYXJ0LWZvcm0tZGF0YT4NCg0KDQpCaWthbCBMZW0gcmVwbGllZA0K4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgT25lIG9idmlv dXMgZGlmZmVyZW5jZSBhbW9uZyB0aGUgdGhyZWUgaXMgYGh0dHAtbXVsdGlwYXJ0LWZvcm1kYXRh Jw0KICBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgSU8vUHJvbWlzZSBsaWJyYXJpZXMsIHN1Y2ggYXMg bHd0IG9yIGFzeW5jLiBzbw0KICB5b3UgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIGludGVncmF0ZSBp biB5b3VyIHByb2plY3QuDQoNCiAgYG11bGl0cGFydC1mb3JtLWRhdGEnIGV4cG9zZXMgYSBjYWxs YmFjayBiYXNlZCBzdHJlYW1pbmcgYXBpLCB3aGVyZWFzDQogIGh0dHAtbXVsdGlwYXJ0LWZvcm1k YXRhIGV4cG9zZXMgYSBub24tY2FsbGJhY2ssIG5vbi1ibG9ja2luZyBiYXNlZCBBUEkNCiAgc3Ry ZWFtaW5nIGFwaS4NCg0KICBUaGUgQVBJIHN1cmZhY2Ugb2YgYGh0dHAtbXVsdGlwYXJ0LWZvcm1k YXRhJyBpcyBrZXB0IGFzIGxvdyBhcw0KICBwb3NzaWJsZSwgcHJpbWFyaWx5IDMgQVBJIGNhbGxz IC0gYGJvdW5kYXJ5LCByZWFkZXInIGFuZCBgcmVhZCcgY2FsbC4NCg0KICBUaGUgZGVwZW5kZW5j eSBsaXN0IG9mIGBodHRwLW11bHRpcGFydC1mb3JtZGF0YScgaXMgdGhlIHRoaW5uZXN0LiBUaGlz DQogIG1heSBvciBtYXkgbm90IGJlIGFuIGlzc3VlIGRlcGVuZGluZyBvbiB5b3VyIGFlc3RoZXRp Y3MuIEhvd2V2ZXIsDQogIHJlbGF0aXZlbHkvY29tcGFyYXRpdmVseSB0aGUgbGVzcyB5b3VyIGRl cGVuZGVuY2llcywgdGhlIGVhc2llciBpdCBpcw0KICB0byBpbnRlZ3JhdGUgdGhlIGxpYiB3aXRo IG90aGVyIE9DYW1sIGxpYnMgYW5kIGVudmlyb25tZW50cyBzdWNoIGFzDQogIHZhcmlvdXMgT1Nl cy4NCg0KDQpCaWthbCBMZW0gYWRkZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgA0KDQogIEkgc2hvdWxkIGFsc28gYWRkIGBodHRwLW11bHRpcGFydC1mb3Jt ZGF0YScgaGFzIGJlZW4gaW1wbGVtZW50ZWQgd2l0aA0KICB6ZXJvLWNvcHkgc3RyZWFtaW5nIGFu ZCBtaW5pbWFsIGFsbG9jYXRpb24gaW4gbWluZC4NCg0KDQpDYWxsIGZvciBwYXJ0aWNpcGF0aW9u OiBNTCBGYW1pbHkgV29ya3Nob3AgMjAyMQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoN CiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvYXJjL2NhbWwtbGlz dC8yMDIxLTA4L21zZzAwMDA1Lmh0bWw+DQoNCg0KSm9uYXRoYW4gUHJvdHplbmtvIGFubm91bmNl ZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2UgYXJlIGhhcHB5IHRvIGFubm91 bmNlIHRoYXQgdGhlIE1MIEZhbWlseSBXb3Jrc2hvcCBpcyBiYWNrIGZvciBpdHMNCiAgMjAyMSBl ZGl0aW9uLCB3aGljaCB3ZSB3aWxsIGJlIGhlbGQgb25saW5lIG9uIFRodXJzZGF5IEF1Z3VzdCAy NnRoLCBpbg0KICBjb25qdW5jdGlvbiB3aXRoIElDRlAgMjAyMS4gV2UgaW52aXRlIHlvdSB0byBz dWJzY3JpYmUgdG8sIGFuZCBhdHRlbmQNCiAgdGhlIHdvcmtzaG9wLCBpbiBhZGRpdGlvbiB0byB0 aGUgbWFpbiBJQ0ZQIGNvbmZlcmVuY2UuDQoNCiAgV2UgYXJlIHRocmlsbGVkIHRvIGFubm91bmNl IHRoYXQgRG9uIFN5bWUgd2lsbCBnaXZlIHRoaXMgeWVhcidzDQogIGtleW5vdGU6ICJOYXJyYXRp dmVzIGFuZCBMZXNzb25zIGZyb20gVGhlIEVhcmx5IEhpc3Rvcnkgb2YgRiMiLiBQbGVhc2UNCiAg am9pbiB1cyENCg0KICBUaGUgcHJvZ3JhbSBmZWF0dXJlcyAxNCBleGNpdGluZyBzdWJtaXNzaW9u cywgaW5jbHVkaW5nIDQgc2hvcnQgdGFsa3MuDQogIFRoZSB3b3Jrc2hvcCB3aWxsIGJlIGhlbGQg b25saW5lIGluIHRoZSA2cG0tM2FtIHRpbWUgYmFuZCAoU2VvdWwNCiAgVGltZSkuICBUYWxrcyB3 aWxsIGJlIHByZS1yZWNvcmRlZCBhbmQgdXBsb2FkZWQgb25saW5lIGZvciB0aG9zZSB3aG8NCiAg Y2Fubm90IGF0dGVuZC4NCg0KICDigKIgUHJvZ3JhbToNCiAgICA8aHR0cHM6Ly9pY2ZwMjEuc2ln cGxhbi5vcmcvaG9tZS9tbGZhbWlseXdvcmtzaG9wLTIwMjEjcHJvZ3JhbT4NCiAg4oCiIEtleW5v dGU6DQogICAgPGh0dHBzOi8vaWNmcDIxLnNpZ3BsYW4ub3JnL2RldGFpbHMvbWxmYW1pbHl3b3Jr c2hvcC0yMDIxLXBhcGVycy8xNS9LZXlub3RlLU5hcnJhdGl2ZXMtYW5kLUxlc3NvbnMtZnJvbS1U aGUtRWFybHktSGlzdG9yeS1vZi1GPi0NCiAg4oCiIElDRlAgaG9tZTogPGh0dHA6Ly9pY2ZwMjEu c2lncGxhbi5vcmcvaG9tZT4NCg0KDQpQcm9ncmFtIGNvbW1pdHRlZQ0K4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCiIERhbmVsIEFobWFu IChVbml2ZXJzaXR5IG9mIExqdWJsamFuYSkNCiAg4oCiIFJvYmVydCBBdGtleSAoVW5pdmVyc2l0 eSBvZiBTdHJhdGhjbHlkZSkNCiAg4oCiIEZyw6lkw6lyaWMgQm91ciAoVGFyaWRlcykNCiAg4oCi IEV6Z2kgw4dpw6dlayAoRmFjZWJvb2sgTG9uZG9uKQ0KICDigKIgWW91eW91IENvbmcgKFRva3lv IEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5KQ0KICDigKIgUmljaGFyZCBBLiBFaXNlbmJlcmcgKFR3 ZWFnIEkvTykNCiAg4oCiIE1hcnRpbiBFbHNtYW4gKFVuaXZlcnNpdHkgb2YgQ29wZW5oYWdlbiwg RGVubWFyaykNCiAg4oCiIE9oYWQgS2FtbWFyIChVbml2ZXJzaXR5IG9mIEVkaW5idXJnaCkNCiAg 4oCiIE5hb2tpIEtvYmF5YXNoaSAoVW5pdmVyc2l0eSBvZiBUb2t5bywgSmFwYW4pDQogIOKAoiBC ZW5vw650IE1vbnRhZ3UgKElucmlhKQ0KICDigKIgSm9uYXRoYW4gUHJvdHplbmtvIChNaWNyb3Nv ZnQgUmVzZWFyY2gpIChDaGFpcikNCiAg4oCiIEtyaXN0aW5hIFNvamFrb3ZhIChJTlJJQSBQYXJp cykNCiAg4oCiIERvbiBTeW1lIChNaWNyb3NvZnQpDQogIOKAoiBNYXTDrWFzIFRvcm8gKFVuaXZl cnNpdHkgb2YgQ2hpbGUpDQogIOKAoiBLYXRzdWhpcm8gVWVubyAoVG9ob2t1IFVuaXZlcnNpdHkp DQoNCg0KQ29xLW9mLW9jYW1sIHRvIHRyYW5zbGF0ZSBPQ2FtbCB0byBDb3ENCuKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hp dmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvY29xLW9mLW9jYW1sLXRvLXRyYW5z bGF0ZS1vY2FtbC10by1jb3EvODI4OC8xPg0KDQoNCkd1aWxsYXVtZSBDbGFyZXQgYW5ub3VuY2Vk DQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJIGFtIHBsZWFzZWQgdG8gcHJlc2VudCB0aGUg W2NvcS1vZi1vY2FtbF0gcHJvamVjdCwgdG8gdHJhbnNsYXRlIGENCiAgc3Vic2V0IG9mIE9DYW1s IHRvIHRoZSBbQ29xXSBwcm9vZiBhc3Npc3RhbnQuIFRoZSBhaW0gaXMgdG8gZG8gZm9ybWFsDQog IHZlcmlmaWNhdGlvbiBvbiBPQ2FtbCBwcm9ncmFtcy4gVGhlIGlkZWEgaXMgdG8gZ2VuZXJhdGUg YSBDb3ENCiAgdHJhbnNsYXRpb24gYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIG9yaWdpbmFs IGNvZGUgaW4gdGVybXMgb2YNCiAgaW50ZW50IGJ1dCB1c2luZyB0aGUgQ29xIHN5bnRheC4gQXMg YSBzaG9ydCBleGFtcGxlLCBpZiB3ZSB0YWtlIHRoZQ0KICBmb2xsb3dpbmcgT0NhbWwgY29kZSBh bmQgcnVuIGBjb3Etb2Ytb2NhbWwnOg0KICDilIzilIDilIDilIDilIANCiAg4pSCIHR5cGUgJ2Eg dHJlZSA9DQogIOKUgiB8IExlYWYgb2YgJ2ENCiAg4pSCIHwgTm9kZSBvZiAnYSB0cmVlICogJ2Eg dHJlZQ0KICDilIIgDQogIOKUgiBsZXQgcmVjIHN1bSB0cmVlID0NCiAg4pSCICAgbWF0Y2ggdHJl ZSB3aXRoDQogIOKUgiAgIHwgTGVhZiBuIC0+IG4NCiAg4pSCICAgfCBOb2RlICh0cmVlMSwgdHJl ZTIpIC0+IHN1bSB0cmVlMSArIHN1bSB0cmVlMg0KICDilJTilIDilIDilIDilIANCiAgd2UgZ2V0 IHRoZSBmb2xsb3dpbmcgQ29xIGZpbGU6DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgUmVxdWly ZSBJbXBvcnQgQ29xT2ZPQ2FtbC5Db3FPZk9DYW1sLg0KICDilIIgUmVxdWlyZSBJbXBvcnQgQ29x T2ZPQ2FtbC5TZXR0aW5ncy4NCiAg4pSCIA0KICDilIIgSW5kdWN0aXZlIHRyZWUgKGEgOiBTZXQp IDogU2V0IDo9DQogIOKUgiB8IExlYWYgOiBhIC0+IHRyZWUgYQ0KICDilIIgfCBOb2RlIDogdHJl ZSBhIC0+IHRyZWUgYSAtPiB0cmVlIGEuDQogIOKUgiANCiAg4pSCIEFyZ3VtZW50cyBMZWFmIHtf fS4NCiAg4pSCIEFyZ3VtZW50cyBOb2RlIHtffS4NCiAg4pSCIA0KICDilIIgRml4cG9pbnQgc3Vt ICh0cmVlIDogdHJlZSBpbnQpIDogaW50IDo9DQogIOKUgiAgIG1hdGNoIHRyZWUgd2l0aA0KICDi lIIgICB8IExlYWYgbiA9PiBuDQogIOKUgiAgIHwgTm9kZSB0cmVlMSB0cmVlMiA9PiBaLmFkZCAo c3VtIHRyZWUxKSAoc3VtIHRyZWUyKQ0KICDilIIgICBlbmQuDQogIOKUlOKUgOKUgOKUgOKUgA0K DQogIFdlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBPQ2FtbCBmZWF0dXJlczoNCiAg4oCiIHRoZSBj b3JlIG9mIE9DYW1sIChmdW5jdGlvbnMsIGxldCBiaW5kaW5ncywgcGF0dGVybi1tYXRjaGluZyzi gKYpDQogIOKAoiB0eXBlIGRlZmluaXRpb25zIChyZWNvcmRzLCBpbmR1Y3RpdmUgdHlwZXMsIHN5 bm9ueW1zLCBtdXR1YWwgdHlwZXMpDQogIOKAoiBtb25hZGljIHByb2dyYW1zDQogIOKAoiBtb2R1 bGVzIGFzIG5hbWVzcGFjZXMNCiAg4oCiIG1vZHVsZXMgYXMgcG9seW1vcnBoaWMgcmVjb3JkcyAo c2lnbmF0dXJlcywgZnVuY3RvcnMsIGZpcnN0LWNsYXNzDQogICAgbW9kdWxlcykNCiAg4oCiIG11 bHRpcGxlLWZpbGUgcHJvamVjdHMgKHRoYW5rcyB0byBNZXJsaW4pDQogIOKAoiBib3RoIGAubWwn IGFuZCBgLm1saScgZmlsZXMNCiAg4oCiIGV4aXN0ZW50aWFsIHR5cGVzICh3ZSB1c2UgaW1wcmVk aWNhdGl2ZSBzZXRzIG9wdGlvbiBpbiBDb3EpDQoNCiAgV2UgYWxzbyBoYXZlIHNvbWUgc3VwcG9y dCBmb3IgdGhlIEdBRFRzLCB0aGUgcG9seW1vcnBoaWMgdmFyaWFudHMsIGFuZA0KICB0aGUgZXh0 ZW5zaWJsZSB0eXBlcy4gIFdlIGFyZSBpbiBwYXJ0aWN1bGFyIHdvcmtpbmcgb24gaGF2aW5nIGFu DQogIGF4aW9tLWZyZWUgdHJhbnNsYXRpb24gb2YgdGhlIEdBRFRzIHRvIENvcS4gV2UgZG8gbm90 IHN1cHBvcnQ6DQogIOKAoiBzaWRlLWVmZmVjdHMgb3V0c2lkZSBvZiBhIG1vbmFkIChyZWZlcmVu Y2VzLCBleGNlcHRpb25zLCDigKYpOw0KICDigKIgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5n Ow0KICDigKIgdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgT0NhbWwgZmVhdHVyZXMgZm9yIHdoaWNo IGBjb3Etb2Ytb2NhbWwnDQogICAgc2hvdWxkIGdlbmVyYXRlIGEgd2FybmluZy4NCg0KICBPdXIg bWFpbiBleGFtcGxlIGFuZCB1c2UgY2FzZSBpcyB0aGUgW2NvcS10ZXpvcy1vZi1vY2FtbF0NCiAg cHJvamVjdC4gVGhpcyBjb250YWlucyBhIHRyYW5zbGF0aW9uIG9mIG1vc3Qgb2YgdGhlIFtlY29u b21pYw0KICBwcm90b2NvbF0gb2YgdGhlIFtUZXpvc10gYmxvY2tjaGFpbiAoYXJvdW5kIDMwLjAw MCBsaW5lcyBvZiBPQ2FtbA0KICB0cmFuc2xhdGVkIHRvIDQwLjAwMCBsaW5lcyBvZiBDb3EpLiBG b3IgZXhhbXBsZSwgd2UgdmVyaWZ5IHRoZQ0KICBjb21wYXJpc29uIGZ1bmN0aW9ucyBkZWZpbmVk IGluDQogIFtzcmMvcHJvdG9fYWxwaGEvbGliX3Byb3RvY29sL3NjcmlwdF9jb21wYXJhYmxlLm1s XSB3aXRoDQogIFtzcmMvUHJvdG9fYWxwaGEvUHJvb2ZzL1NjcmlwdF9jb21wYXJhYmxlLnZdLg0K DQogIFdlIGFyZSBsb29raW5nIGZvciB0aGUgYXBwbGljYXRpb24gdG8gb3RoZXIgcHJvamVjdHMg dG9vLg0KDQogIFdlIHRoaW5rIHRoZSBiZXN0IHdheSB0byB1c2UgYGNvcS1vZi1vY2FtbCcgaXMg dG8gY29udGludWUgZGV2ZWxvcGluZw0KICBpbiBPQ2FtbCBhbmQgcnVuIGBjb3Etb2Ytb2NhbWwn IHRvIGtlZXAgYSBzeW5jaHJvbml6ZWQgdHJhbnNsYXRpb24gaW4NCiAgQ29xLiBIYXZpbmcgYSB3 b3JraW5nIENvcSB0cmFuc2xhdGlvbiAoYXMgY29tcGlsaW5nIGluIENvcSkgZm9yY2VzIHVzDQog IHRvIGF2b2lkIHNvbWUgT0NhbWwgY29uc3RydWN0cy4gV2UgYmVsaWV2ZSB0aGVzZSBjb25zdHJ1 Y3RzIHdvdWxkDQogIHByb2JhYmx5IGJlIGhhcmQgdG8gdmVyaWZ5IGFueXdheS4gVGhlbiwgb24g dGhlIENvcSBzaWRlLCB3ZSBjYW4NCiAgdmVyaWZ5IHNvbWUgaW1wb3J0YW50IG9yIGVhc3kgdG8g Y2F0Y2ggcHJvcGVydGllcy4gSWYgdGhlcmUgaXMgYQ0KICByZWdyZXNzaW9uIGluIHRoZSBPQ2Ft bCBjb2RlLCByZS1ydW5uaW5nIGBjb3Etb2Ytb2NhbWwnIHNob3VsZCBtYWtlDQogIHRoZSBwcm9v ZnMgYnJlYWsuDQoNCg0KW2NvcS1vZi1vY2FtbF0gPGh0dHBzOi8vY2xhcnVzLmdpdGh1Yi5pby9j b3Etb2Ytb2NhbWwvPg0KDQpbQ29xXSA8aHR0cHM6Ly9jb3EuaW5yaWEuZnIvPg0KDQpbY29xLXRl em9zLW9mLW9jYW1sXQ0KPGh0dHBzOi8vbm9tYWRpYy1sYWJzLmdpdGxhYi5pby9jb3EtdGV6b3Mt b2Ytb2NhbWwvPg0KDQpbZWNvbm9taWMgcHJvdG9jb2xdDQo8aHR0cHM6Ly9naXRsYWIuY29tL3Rl em9zL3Rlem9zLy0vdHJlZS9tYXN0ZXIvc3JjL3Byb3RvX2FscGhhL2xpYl9wcm90b2NvbD4NCg0K W1Rlem9zXSA8aHR0cHM6Ly90ZXpvcy5jb20vPg0KDQpbc3JjL3Byb3RvX2FscGhhL2xpYl9wcm90 b2NvbC9zY3JpcHRfY29tcGFyYWJsZS5tbF0NCjxodHRwczovL2dpdGxhYi5jb20vdGV6b3MvdGV6 b3MvLS9ibG9iL21hc3Rlci9zcmMvcHJvdG9fYWxwaGEvbGliX3Byb3RvY29sL3NjcmlwdF9jb21w YXJhYmxlLm1sPg0KDQpbc3JjL1Byb3RvX2FscGhhL1Byb29mcy9TY3JpcHRfY29tcGFyYWJsZS52 XQ0KPGh0dHBzOi8vbm9tYWRpYy1sYWJzLmdpdGxhYi5pby9jb3EtdGV6b3Mtb2Ytb2NhbWwvZG9j cy9wcm9vZnMvc2NyaXB0X2NvbXBhcmFibGU+DQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1l IGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29r IGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0K DQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlv dSBtYXkgc3Vic2NyaWJlDQogIFtvbmxpbmVdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3Nl bmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4N Cg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpb UlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9j d24vY3duLnJzcz4NCg0KW29ubGluZV0gPGh0dHA6Ly9saXN0cy5pZHlsbC5vcmcvbGlzdGluZm8v Y2FtbC1uZXdzLXdlZWtseS8+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRl cG9tbWUubmV0Lz4NCg0K --=-=-= 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 10 to 17, 2021.

http-multipart-formdata v3.0.1 released

Continuing the thread from last week, Hannes Mehnert = asked

Thanks for your work on that. I'm curious about the different "multipart" l= ibraries now available for OCaml – anyone has a brief comparison of them?

Are there functional differences? Correctness? Performance? Or just a matte= r of style and co-development?

Bikal Lem replied

One obvious difference among the three is http-multipart-formdata doesn't depend on any IO/Promise libraries, such as lwt or async. so you may find it easier to in= tegrate in your project.

mulitpart-form-data exposes a callback based streaming api, wh= ereas http-multipart-formdata exposes a non-callback, non-blocking based API streaming api.

The API surface of http-multipart-formdata is kept as low as p= ossible, primarily 3 API calls - boundary, reader and read call.

The dependency list of http-multipart-formdata is the thinnest= . This may or may not be an issue depending on your aesthetics. However, relatively/comparatively the l= ess your dependencies, the easier it is to integrate the lib with other OCaml libs a= nd environments such as various OSes.

Bikal Lem added

I should also add http-multipart-formdata has been implemented= with zero-copy streaming and minimal allocation in mind.

Call for participation: ML Family Workshop 2021

Jonathan Protzenko announced

We are happy to announce that the ML Family Workshop is back for its 2021 edition, which we will be held online on Thursday August 26th, in conjunction with ICFP 2021. We invite you to subscribe to, and attend the workshop, in addition to the main ICFP conference.

We are thrilled to announce that Don Syme will give this year's keynote: "Narratives and Lessons from The Early History of F#". Please join us!

The program features 14 exciting submissions, including 4 short talks. The workshop will be held online in the 6pm-3am time band (Seoul Time). Talks will be pre-recorded and uploaded online for those who cannot attend.

Program committee

  • Danel Ahman (University of Ljubljana)
  • Robert Atkey (University of Strathclyde)
  • Fr=C3=A9d=C3=A9ric Bour (Tarides)
  • Ezgi =C3=87i=C3=A7ek (Facebook London)
  • Youyou Cong (Tokyo Institute of Technology)
  • Richard A. Eisenberg (Tweag I/O)
  • Martin Elsman (University of Copenhagen, Denmark)
  • Ohad Kammar (University of Edinburgh)
  • Naoki Kobayashi (University of Tokyo, Japan)
  • Beno=C3=AEt Montagu (Inria)
  • Jonathan Protzenko (Microsoft Research) (Chair)
  • Kristina Sojakova (INRIA Paris)
  • Don Syme (Microsoft)
  • Mat=C3=ADas Toro (University of Chile)
  • Katsuhiro Ueno (Tohoku University)

Coq-of-ocaml to translate OCaml to Coq

Guillaume Claret announced

I am pleased to present the coq-of-ocaml project, to translate a subset of OCaml to the Coq= proof assistant. The aim is to do formal verification on OCaml programs. The idea is to generate a C= oq translation as close as possible to the original code in terms of intent but using the Coq= syntax. As a short example, if we take the following OCaml code and run coq-of-oca= ml:

type 'a tree =3D
| Leaf of 'a
| Node of 'a tree * 'a tree

let rec sum tree =3D
  match tree with
  | Leaf =
n -> n
  | Node =
(tree1, tree2) -> sum tree1 + sum tree2

we get the following Coq file:

Require Import CoqOfOCaml.CoqOfOCaml.
Require Import CoqOfOCaml.Settings.

Inductive tree (a : Set) : Set :=3D
| Leaf : a -> tree a
| Node : tree a -> tree a -> tree a.

Arguments Leaf {_}.
Arguments Node {_}.

Fixpoint sum (tree : tree int) : int :=3D
  match tree with
  | Leaf n =3D> n
  | Node tree1 tree2 =3D> Z.add (sum tree1) (sum tree2)
  end.

We support the following OCaml features:

  • the core of OCaml (functions, let bindings, pattern-matching,…)<= /li>
  • type definitions (records, inductive types, synonyms, mutual types)
  • monadic programs
  • modules as namespaces
  • modules as polymorphic records (signatures, functors, first-class modul= es)
  • multiple-file projects (thanks to Merlin)
  • both .ml and .mli files
  • existential types (we use impredicative sets option in Coq)

We also have some support for the GADTs, the polymorphic variants, and the = extensible types. We are in particular working on having an axiom-free translation of the GAD= Ts to Coq. We do not support:

  • side-effects outside of a monad (references, exceptions, …);
  • object-oriented programming;
  • various combinations of OCaml features for which coq-of-ocaml should generate a warning.

Our main example and use case is the coq-tezos-of= -ocaml project. This contains a translation of most of the economic protocol of the Tezos blockchain (around 30.000 lines of= OCaml translated to 40.000 lines of Coq). For example, we verify the comparison functions defined in src/proto_alpha/lib_protocol/script_compara= ble.ml with src/Proto_alpha/Proofs/Script_comparable.v.

We are looking for the application to other projects too.

We think the best way to use coq-of-ocaml is to continue devel= oping in OCaml and run coq-of-ocaml to keep a synchronized translation in Coq. Having= a working Coq translation (as compiling in Coq) forces us to avoid some OCaml constructs. We believe = these constructs would probably be hard to verify anyway. Then, on the Coq side, we can veri= fy some important or easy to catch properties. If there is a regression in the OCaml code, re= -running coq-of-ocaml should make the proofs break.

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 online.

--=-=-=--