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 732855D5 for ; Tue, 21 Jan 2020 14:09:25 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.70,346,1574118000"; d="scan'208,217";a="432394039" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 21 Jan 2020 15:08:53 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 34EBD7F3D7; Tue, 21 Jan 2020 15:08:53 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 0254E7F30F for ; Tue, 21 Jan 2020 15:08:46 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=yGNW=3K=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?9a23=3ACl0tEhVXm618RW1l+8nZl0W7te7V8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYZRWBtKdThVPEFb/W9+hDw7KP9fy5BSpZsd3c4DhCKMUKC0Zez5?= =?us-ascii?q?1O3kQJO42sMQXDNvnkbig3ToxpdWRO2DWFC3VTA9v0fFbIo3e/vnY4ExT7Mhdp?= =?us-ascii?q?dKyuQtaBx8u42Pqv9JLNfg5GmCSyYa9oLBWxsA7dqtQajZFtJ6osxRbFuGZEdu?= =?us-ascii?q?dZyW5oJl+YghLw6tut8JJ5/Clcpvws+9RcXanmeqgzUKBVAikhP20p/sPgqAPN?= =?us-ascii?q?TRGI5nsSU2UWlgRHDg3Y5xzkXZn/rzX3uPNl1CaVIcP5Q7Y0WS+/76hwUx/nlD?= =?us-ascii?q?0HNz8i/27JjMF7kb9Wrwigpxx7xI7UfZ2VOf9jda7TYd8WWWxMVdtRWyJCBIO8?= =?us-ascii?q?cYoPD/EAPelDq4nyuUYFrBW5BQm2Gezv0SJDinv40KEm1ugsFxzN0g49ENIUqH?= =?us-ascii?q?narMv7OrocX+62w6bH0S7OYOlK1Trn8oXEbgwtrPOKULltccTR004vFwbdg1iM?= =?us-ascii?q?rYzqJTWV3fkQvWeH7+pgUOOvi3I7qwpspTWg3MMshZPPho4P0VDL6SV5wIM0Jd?= =?us-ascii?q?2kVE52esakEJxUtyCaK4t5XN8tQ2FuuCY7070GpIC0cDINyJQ9yB7ScvqKeJWG?= =?us-ascii?q?7BLkUeaeOzZ4hHR9dbK4mxm9602gyunmWsmzylZKoTJJksHSuXAR1hzT9taISu?= =?us-ascii?q?N6/kek3DaAyRrf6udaLkAojabbJJ8hwqI0lpUJqkvPBDP5mELzjKOOd0Uk/PKo?= =?us-ascii?q?6+X9bbn8qJ+cLZd4ig7/MqQymsy/HP83PhISUGic/OSwzLvj8lP+QLpWj/02jq?= =?us-ascii?q?jZv47BJcgBoa65GQBV3p4i6xmiDzam1NAYkWMALFJfdxKKiZXiNVLWIP3gEPuz?= =?us-ascii?q?nVChnC12y/zaMbDtGJvAImTZnLrvcrtx81NQxQQuwdxF+Z5ZCr4MLOjuVkPtrt?= =?us-ascii?q?DUEx00PxCyzu36EttyzJkeVniKAqKBMKPdr1uI5uU3LumJa44ZpSzxK+Ai5/7q?= =?us-ascii?q?jX45hUEScrWp3ZsRaXC4B+lmLFuDbXrrmNcBHn8Gvgs4TOP0lF2PSSNfa2i2Uq?= =?us-ascii?q?4m+z03FI2rAZ3NS4yxmrCM0ii2EoVTZm9cC1CMFXnod5+DW/cJcC+cP9NvnCEY?= =?us-ascii?q?WbW5S44v1Amguw/ixrdpK+TZ4jUYtZXn1Nl1++3ciw099TxyD8ScymGNUn97kn?= =?us-ascii?q?kPRz8s06ByuVZyylOZ3qh+mfBYDsBc5/NMUgc7KZ7c0/d3BMv1WgLceNeGVEip?= =?us-ascii?q?Qs68DTE0Qd8wzMUCY0FnG9WtlhzDxTalA6cJl7yXA5w56r7T0GL0J8Z50nrG0K?= =?us-ascii?q?ghj0I6QsZULm2nhqt/9xDJCILTkkWZkbyqdaUG0yLX+meD1znGgEYNGgpvV++N?= =?us-ascii?q?CXQAYGPSstK/4E7eGfvmQ784NEEJgZqJNa1ibtzykU4ARfvyPNCYZHi+zSP4Dh?= =?us-ascii?q?+NwvaIbZH2U2QbxiTUTkYe10gY+nOeHQw/HTu65WXEBj1yHFbhZFOq/PQthmm8?= =?us-ascii?q?SxodywiMJ3Zq17+05gJd0fWYQvVVxbkEvSY9tx1sG1Ksw9/dC9yBvhdsOqJGbo?= =?us-ascii?q?Vusx98yWvFulklbdSbJKd4iwtFK10r7XOr7A1+D8B7qeZvtGkjlVsgMaWcwU9M?= =?us-ascii?q?fDOe3IntN/vQMGagpUn+OZ6T4UnX1ZOtwolK7f05r1v5uwTwSRgo9Ghh2NROlX?= =?us-ascii?q?7A9tPNFgVACMusAHZyzABzovThWgd4547Q0ic3Y6yk63na3NY4GOYuyhChZspS?= =?us-ascii?q?dqSeG12rHg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AoBQDqBCdehyIeaIFlFggBCxyDIIFwV?= =?us-ascii?q?TIqhBKJA4YVhR6FGpMZAQMBDBgBDgUBAgEBhFmBex0GAQUzEwIQAQEEAQEBAgE?= =?us-ascii?q?CAwQBEwEBAQoLCQgphT4MgjsMGYMGASEKZSMDFAcDAgQNARcBFAoXARIagwwBg?= =?us-ascii?q?nsFCpFom3aBMoQ1ARYBDglmgy6BPg0CE4EWhRuGUyYPgUw/gRGCFVBsgksOCwE?= =?us-ascii?q?BAQEBgUABAYMugl4EjWIDkD6RLweCPHcEhVtniSKFbYJHeIcSkCYhjj2BSYUfb?= =?us-ascii?q?oELhSONKoE/KoFmDAgzGjBDgmwJCVYNh1cBhByBPoMbO4U+AkAzAgEBgR4BAQU?= =?us-ascii?q?TCwGKF4IyAQE?= X-IPAS-Result: =?us-ascii?q?A0AoBQDqBCdehyIeaIFlFggBCxyDIIFwVTIqhBKJA4YVhR6?= =?us-ascii?q?FGpMZAQMBDBgBDgUBAgEBhFmBex0GAQUzEwIQAQEEAQEBAgECAwQBEwEBAQoLC?= =?us-ascii?q?QgphT4MgjsMGYMGASEKZSMDFAcDAgQNARcBFAoXARIagwwBgnsFCpFom3aBMoQ?= =?us-ascii?q?1ARYBDglmgy6BPg0CE4EWhRuGUyYPgUw/gRGCFVBsgksOCwEBAQEBgUABAYMug?= =?us-ascii?q?l4EjWIDkD6RLweCPHcEhVtniSKFbYJHeIcSkCYhjj2BSYUfboELhSONKoE/KoF?= =?us-ascii?q?mDAgzGjBDgmwJCVYNh1cBhByBPoMbO4U+AkAzAgEBgR4BAQUTCwGKF4IyAQE?= X-IronPort-AV: E=Sophos;i="5.70,346,1574118000"; d="scan'208,217";a="336552751" X-MGA-submission: =?us-ascii?q?MDFRGz7cJYBQQnP2WzZkvEPEdiQJQnU21xsY5+?= =?us-ascii?q?OvpI43gGU3mIDeE0VX+lNROyipc0E1SQYUWwQxw+JV9x34beSA/fg9AW?= =?us-ascii?q?W7UtFwy9sUN/lTxwixEANWjGrbOeOg1vJorJQ1C4ssYvGdBdIa3fIqEc?= =?us-ascii?q?gLJrjOkcojULIbYdT7XzEcug=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jan 2020 15:08:45 +0100 Received: from set (set.irisa.fr [131.254.10.170]) (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 2D21E5646CA; Tue, 21 Jan 2020 15:08:43 +0100 (CET) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr, comp@lists.orbitalfox.eu Date: Tue, 21 Jan 2020 15:08:42 +0100 Message-ID: <87eevsdhqt.fsf@polytechnique.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jan 21 15:08:43 2020 +0100 (CET)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000000, queueID=83B985646CC 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: 17963 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgSmFudWFyeSAxNCB0byAyMSwNCjIwMjAuDQoNClRhYmxlIG9mIENvbnRlbnRzDQrilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KSG93IGRv ZXMgdGhlIGNvbXBpbGVyIGNoZWNrIGZvciBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmc/DQpy ZXN0byAwLjIgcmVsZWFzZWQNCm9wYW0gMi4wLjYgcmVsZWFzZQ0Kc291cGF1bHQ6IGEgc3RhdGlj IHdlYnNpdGUgZ2VuZXJhdG9yIGJhc2VkIG9uIEhUTUwgcmV3cml0aW5nDQpTcGluOiBQcm9qZWN0 IHNjYWZmb2xkaW5nIHRvb2wgYW5kIHNldCBvZiB0ZW1wbGF0ZXMgZm9yIFJlYXNvbiBhbmQgT0Nh bWwNCk9sZCBDV04NCg0KDQpIb3cgZG9lcyB0aGUgY29tcGlsZXIgY2hlY2sgZm9yIGV4aGF1c3Rp dmUgcGF0dGVybiBtYXRjaGluZz8NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczov L2Rpc2N1c3Mub2NhbWwub3JnL3QvaG93LWRvZXMtdGhlLWNvbXBpbGVyLWNoZWNrLWZvci1leGhh dXN0aXZlLXBhdHRlcm4tbWF0Y2hpbmcvNTAxMy8xPg0KDQoNCkR5bGFuIElybGJlY2sgYXNrZWQN CuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KDQogIEhpIGFsbC4gSSdtIHJlbGF0aXZlbHkgbmV3IHRvIE9DYW1sLCBhbmQgSSB3YXMgY3Vy aW91cyBvbiBob3cgdGhlDQogIGNvbXBpbGVyIGlzIGFibGUgdG8gZ2l2ZSBhIHdhcm5pbmcgd2hl biBhIGNhc2UgbGlzdCBpcyBub24tZXhoYXVzdGl2ZQ0KICAtIGJvdGggZnJvbSBhIGhpZ2gtbGV2 ZWwgYW5kLCBpZiBwb3NzaWJsZSwgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMNCiAgY2hlY2su IEkgaGF2ZSBzb21lIGlkZWFzIGFib3V0IGhvdyBvbmUgY291bGQgZG8gdGhpcywgYnV0IG5vbmUg b2YgbXkNCiAgaWRlYXMgc2VlbSBsaWtlIHRoZXknZCBiZSBuZWFybHkgYXMgZWZmaWNpZW50IGFz IHRoZSBPQ2FtbCBjb21waWxlcg0KICBpcy4NCg0KDQpnYXNjaGUgcmVwbGllZA0K4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhlIGNhbm9uaWNhbCByZWZl cmVuY2UgZm9yIGV4aGF1c3Rpdml0eS1jaGVja2luZyBpbiBPQ2FtbCBpcyB0aGUNCiAgc2NpZW50 aWZpYyBwdWJsaWNhdGlvbg0KDQogICAgICAgIFtXYXJuaW5ncyBmb3IgcGF0dGVybiBtYXRjaGlu Z10gTHVjIE1hcmFuZ2V0IDIwMDcNCg0KICBUaGUgZ2VuZXJhbCBpZGVhIGlzIHRvIGNvbnNpZGVy IGFsbCB0aGUgcGF0dGVybnMgb2YgYSBnaXZlbg0KICBwYXR0ZXJuLW1hdGNoaW5nIGF0IG9uY2Us IGdlbmVyYWxpemUgdGhpcyBzdHJ1Y3R1cmUgdG8gYSAibWF0cml4IiBvZg0KICBwYXR0ZXJucyAo bWF0Y2hpbmcgb24gc2V2ZXJhbCB2YWx1ZXMgaW4gcGFyYWxsZWwpLCBhbmQgZGV2aXNlIGFuDQog IGFsZ29yaXRobSB0byAiZXhwbG9yZSIgdGhlc2UgcGF0dGVybiBtYXRyaWNlcyBpbiBzdWNoIGEg d2F5IHRoYXQgeW91DQogIGV2ZW50dWFsbHkgdGVsbCBpZiBhIGdpdmVuIHBhdHRlcm4tbWF0cml4 IGlzIGV4aGF1c3RpdmUsIG9yIGNhbg0KICBwcm9wb3NlIGEgY291bnRlci1leGFtcGxlLg0KDQog IChJIGd1ZXNzIHdlIHNob3VsZCB3cml0ZSBhIGhpZ2gtbGV2ZWwvYWNjZXNzaWJsZSBibG9nIHBv c3QgYWJvdXQNCiAgdGhpcy4pDQoNCg0KW1dhcm5pbmdzIGZvciBwYXR0ZXJuIG1hdGNoaW5nXQ0K PGh0dHA6Ly9tb3Njb3ZhLmlucmlhLmZyL35tYXJhbmdldC9wYXBlcnMvd2Fybi9pbmRleC5odG1s Pg0KDQoNCnJlc3RvIDAuMiByZWxlYXNlZA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5v Y2FtbC5vcmcvdC9hbm4tcmVzdG8tMC0yLXJlbGVhc2VkLzUwMjgvMT4NCg0KDQpSYXBoYcOrbCBQ cm91c3QgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBPbiBiZWhhbGYgb24gTm9tYWRp YyBMYWJzLCBJJ20gaGFwcHkgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2Ugb2YNCiAgdmVyc2lvbiAw LjIgb2YgYHJlc3RvJywgYSBsaWJyYXJ5IHRvIGNyZWF0ZSB0eXBlLXNhZmUgSFRUUC9KU09ODQog IHNlcnZpY2VzLg0KDQogIFRoZSBsaWJyYXJ5IGlzIGF2YWlsYWJsZSB0aHJvdWdoIG9wYW0gKGBv cGFtIGluc3RhbGwgcmVzdG8nKSwNCiAgZGlzdHJpYnV0ZWQgdW5kZXIgTEdQTCwgYW5kIGhvc3Rl ZCBvbg0KICA8aHR0cHM6Ly9naXRsYWIuY29tL25vbWFkaWMtbGFicy9yZXN0bz4uDQoNCiAgYHJl c3RvJyB3YXMgcHJldmlvdXNseSByZWxlYXNlZCBhcyBgb2NwbGliLXJlc3RvJyBtYWludGFpbmVk IGJ5DQogIE9DYW1sUHJvLiBUaGUgcHJvamVjdCBpcyBub3cgbWFpbnRhaW5lZCBieSBOb21hZGlj IExhYnMuDQoNCiAgQWxvbmcgd2l0aCBtYW55IGJ1Z2ZpeGVzIGFuZCBhIGZldyBhZGRlZCBmZWF0 dXJlcywgdGhlIG1haW4gY2hhbmdlIG9mDQogIHRoaXMgcmVsZWFzZSBpcyB0aGF0IHRoZSBsaWJy YXJ5IGlzIHNwbGl0IGludG8gbXVsdGlwbGUgcGFja2FnZXMgd2l0aA0KICBmaW5lLWdyYWluZWQg ZGVwZW5kZW5jaWVzLg0KDQoNCm9wYW0gMi4wLjYgcmVsZWFzZQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBz Oi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tb3BhbS0yLTAtNi1yZWxlYXNlLzUwMzgvMT4NCg0K DQpSLiBCb3VqYmVsIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2UgYXJlIHBsZWFzZWQgdG8gYW5ub3Vu Y2UgdGhlIG1pbm9yIHJlbGVhc2Ugb2YgW29wYW0gMi4wLjZdLg0KDQogIFRoaXMgbmV3IHZlcnNp b24gY29udGFpbnMgbWFpbmx5IGJ1aWxkIHVwZGF0ZSAmIGZpeGVzLiBZb3UgY2FuIGZpbmQNCiAg bW9yZSBpbmZvcm1hdGlvbiBpbiB0aGlzIFtibG9nIHBvc3RdLg0KDQogIF9vcGFtIGlzIGEgc291 cmNlLWJhc2VkIHBhY2thZ2UgbWFuYWdlciBmb3IgT0NhbWwuIEl0IHN1cHBvcnRzDQogIG11bHRp cGxlIHNpbXVsdGFuZW91cyBjb21waWxlciBpbnN0YWxsYXRpb25zLCBmbGV4aWJsZSBwYWNrYWdl DQogIGNvbnN0cmFpbnRzLCBhbmQgYSBHaXQtZnJpZW5kbHkgZGV2ZWxvcG1lbnQgd29ya2Zsb3cu Xw0KDQoNCltvcGFtIDIuMC42XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0vcmVsZWFz ZXMvdGFnLzIuMC42Pg0KDQpbYmxvZyBwb3N0XSA8aHR0cHM6Ly9vcGFtLm9jYW1sLm9yZy9ibG9n L29wYW0tMi0wLTY+DQoNCg0Kc291cGF1bHQ6IGEgc3RhdGljIHdlYnNpdGUgZ2VuZXJhdG9yIGJh c2VkIG9uIEhUTUwgcmV3cml0aW5nDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6 Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1zb3VwYXVsdC1hLXN0YXRpYy13ZWJzaXRlLWdlbmVy YXRvci1iYXNlZC1vbi1odG1sLXJld3JpdGluZy80MTI2LzExPg0KDQoNCkRhbmlpbCBCYXR1cmlu IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgc291cGF1bHQgMS44LjAgaXMgW3JlbGVh c2VkXSBhbG9uZyB3aXRoIEx1YS1NTCAwLjkuMS4NCg0KICBMdWEtTUwgbm93IHJhaXNlcyBgRmFp bHVyZScgd2hlbiBMdWEgY29kZSBleGVjdXRpb24gZmFpbHMuIFRoZXJlJ3MNCiAgbXVjaCByb29t IGZvciBpbXByb3ZlbWVudCBpbiB0aGF0IGFyZWEsIGZvciBub3cgSSd2ZSBqdXN0IGRvbmUNCiAg c29tZXRoaW5nIHRoYXQgaXMgYmV0dGVyIHRoYW4ganVzdCBkaXNwbGF5aW5nIGVycm9ycyBvbiBz dGRlcnIgYnV0DQogIG90aGVyd2lzZSBhbGxvd2luZyBzeW50YXggYW5kIHJ1bnRpbWUgZXJyb3Jz IHBhc3Mgc2lsZW50bHkuDQoNCiAgSWYgeW91IGhhdmUgYW55IGlkZWFzIGhvdyBwZXJmZWN0IGlu dGVycHJldGVyIGVycm9yIHJlcG9ydGluZyBfc2hvdWxkXw0KICB3b3JrLCBwbGVhc2Ugc2hhcmUh DQoNCiAgQXMgb2YgaW1wcm92ZW1lbnRzIGluIHNvdXBhdWx0IGl0c2VsZiwgdGhlcmUncyBub3c6 DQogIOKAoiBBIHdheSBmb3IgcGx1Z2lucyB0byBzcGVjaWZ5IHRoZWlyIG1pbmltdW0gc3VwcG9y dGVkIHNvdXBhdWx0DQogICAgdmVyc2lvbiBsaWtlIGBQbHVnaW4ucmVxdWlyZV92ZXJzaW9uKCIx LjguMCIpJw0KICDigKIgYFRBUkdFVF9ESVInIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBgdGFy Z2V0X2RpcicgTHVhIGdsb2JhbCB0aGF0DQogICAgY29udGFpbnMgdGhlIGRpcmVjdG9yeSB3aGVy ZSB0aGUgcmVuZGVyZWQgcGFnZSB3aWxsIGJlIHdyaXR0ZW4sIHRvDQogICAgbWFrZSBpdCBlYXNp ZXIgZm9yIHBsdWdpbnMvc2NyaXB0cyB0byBwbGFjZSBwcm9jZXNzZWQgYXNzZXRzDQogICAgdG9n ZXRoZXIgd2l0aCBwYWdlcy4NCiAg4oCiICJCdWlsZCBwcm9maWxlcyI6IGlmIHlvdSBhZGQgYHBy b2ZpbGUgPSAicHJvZHVjdGlvbiInIG9yIHNpbWlsYXIgdG8NCiAgICB3aWRnZXQgY29uZmlnLCB0 aGF0IHdpZGdldCB3aWxsIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBydW4gYHNvdXBhdWx0DQogICAg LS1wcm9maWxlIHByb2R1Y3Rpb24nLg0KICDigKIgQSBidW5jaCBvZiBuZXcgdXRpbGl0eSBmdW5j dGlvbnMgZm9yIHBsdWdpbnMuDQoNCg0KW3JlbGVhc2VkXSA8aHR0cHM6Ly9zb3VwYXVsdC5uZW9j aXRpZXMub3JnL2Jsb2cvc291cGF1bHQtMS44LjAtcmVsZWFzZS8+DQoNCg0KU3BpbjogUHJvamVj dCBzY2FmZm9sZGluZyB0b29sIGFuZCBzZXQgb2YgdGVtcGxhdGVzIGZvciBSZWFzb24gYW5kIE9D YW1sDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBB cmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3NwaW4tcHJvamVjdC1zY2Fm Zm9sZGluZy10b29sLWFuZC1zZXQtb2YtdGVtcGxhdGVzLWZvci1yZWFzb24tYW5kLW9jYW1sLzUw NDcvMT4NCg0KDQpNb2hhbWVkIEVsc2hhcm5vdWJ5IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSADQoNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS90bWF0dGlvL3NwaW4+DQoN Cg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBt aXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBp dCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1Mg ZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2 ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vic2NyaWJlDQogIFtvbmxpbmVdLg0K DQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4u c2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cDovL2FsYW4u cGV0aXRlcG9tbWUubmV0L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2ZXNdIDxodHRw Oi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duL2N3bi5yc3M+DQoNCltvbmxpbmVdIDxodHRwOi8v bGlzdHMuaWR5bGwub3JnL2xpc3RpbmZvL2NhbWwtbmV3cy13ZWVrbHkvPg0KDQpbQWxhbiBTY2ht aXR0XSA8aHR0cDovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of January 14 to 21, 202= 0.

How does the compiler check for exhaustive pattern matching?

Dylan Irlbeck asked

Hi all. I'm relatively new to OCaml, and I was curious on how the compiler = is able to give a warning when a case list is non-exhaustive - both from a high-level and, if possible, the implementation of this check. I have some = ideas about how one could do this, but none of my ideas seem like they'd be nearl= y as efficient as the OCaml compiler is.

gasche replied

The canonical reference for exhaustivity-checking in OCaml is the scientifi= c publication

Warnin= gs for pattern matching Luc Maranget 2007

The general idea is to consider all the patterns of a given pattern-matchin= g at once, generalize this structure to a "matrix" of patterns (matching on seve= ral values in parallel), and devise an algorithm to "explore" these pattern mat= rices in such a way that you eventually tell if a given pattern-matrix is exhaust= ive, or can propose a counter-example.

(I guess we should write a high-level/accessible blog post about this.)

resto 0.2 released

Rapha=C3=ABl Proust announced

On behalf on Nomadic Labs, I'm happy to announce the release of version 0.2= of resto, a library to create type-safe HTTP/JSON services.

The library is available through opam (opam install resto), di= stributed under LGPL, and hosted on https://gitlab.com/nomadic-labs/resto.

resto was previously released as ocplib-resto mai= ntained by OCamlPro. The project is now maintained by Nomadic Labs.

Along with many bugfixes and a few added features, the main change of this = release is that the library is split into multiple packages with fine-grain= ed dependencies.

opam 2.0.6 release

R. Boujbel announced

We are pleased to announce the minor release of opam 2.0.6.

This new version contains mainly build update & fixes. You can find mor= e information in this bl= og post.

opam is a source-based package manager for OCaml.= It supports multiple simultaneous compiler installations, flexible package= constraints, and a Git-friendly development workflow.

soupault: a static website generator based on HTML rewriting

Daniil Baturin announced

soupault 1.8.0 is released along with Lua-ML 0.9.1.

Lua-ML now raises Failure when Lua code execution fails. There= 's much room for improvement in that area, for now I've just done something= that is better than just displaying errors on stderr but otherwise allowin= g syntax and runtime errors pass silently.

If you have any ideas how perfect interpreter error reporting should work, please share!

As of improvements in soupault itself, there's now:

  • A way for plugins to specify their minimum supported soupault version l= ike Plugin.require_version("1.8.0")
  • TARGET_DIR environment variable and target_dir Lua global that contains the directory where the rendered page will be wr= itten, to make it easier for plugins/scripts to place processed assets toge= ther with pages.
  • "Build profiles": if you add profile =3D "production" or s= imilar to widget config, that widget will be ignored unless you run s= oupault --profile production.
  • A bunch of new utility functions for plugins.

Spin: Project scaffolding tool and set of templates for Reason= and OCaml

Mohamed Elsharnouby announced

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 RSS feed of the archives<= /a>.

If you also wish to receive it every week by mail, you may subscribe online.

--=-=-=--