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 2631A5D5 for ; Tue, 21 Sep 2021 09:10:06 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.84,326,1620684000"; d="scan'208,217";a="529545821" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 21 Sep 2021 11:10:01 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 4FDA8E0C65; Tue, 21 Sep 2021 11:10:01 +0200 (CEST) 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 BC087E0015 for ; Tue, 21 Sep 2021 11:09:53 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=Pass smtp.pra=alan.schmitt@polytechnique.org; spf=Pass smtp.mailfrom=SRS0=6r45=OL=polytechnique.org=alan.schmitt@bounces.m4x.org; spf=Pass smtp.helo=postmaster@mx1.polytechnique.org IronPort-PHdr: =?us-ascii?q?A9a23=3ANlzlmhfs3GqDYRB5wOEjnO0zlGM+zdjLVj580XL?= =?us-ascii?q?Ho4xHfqnrxZn+JkuXvawr0AWRG9SCoK8bw8Pt8InYEVQa5piAtH1QOLdtbDQiz?= =?us-ascii?q?fssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB?= =?us-ascii?q?1JuPoEYLOksi7ze+/94PPbwlSgDexfLx+IRW0oA7MqsQYnIxuJ7orxBDUuHVIY?= =?us-ascii?q?eNWxW1pJVKXgRnx49q78YBg/SpNpf8v7tZMXqrmcas2S7xYFykmPHsu5ML3rxn?= =?us-ascii?q?DTBCA6WUaX24LjxdHGQnF7BX9Xpfsriv3s/d21SeGMcHqS70/RDSu4aRtSB/2i?= =?us-ascii?q?ScHLD85/3rTisNukalarhWhpwZizI7PfYqZMPRzcr/Ycd4cWGFPXNteVzZZD42?= =?us-ascii?q?8cYUBEuQPM+VXoIbhvFYBtweyCBO2Ce/z1jNFhHn71rA63eQ7FgHG2RQtEs4Ks?= =?us-ascii?q?HvOqtX+KbocXvy1zKnNzDXDc+9W0ir65YfSdhAuu/eMUahrccXNyUkvEgLFjkm?= =?us-ascii?q?MqYH+JzOV0eANsmiH7+V+Se2vi2gnqwBoojiy2MggkI7Jhpgayl3d8yhy3Yk6K?= =?us-ascii?q?8GiRkFhfd6kDIVftzucN4ZuX84uXnxktTsnxrMIuZC1cigHxIgoyRPCdvCKd4a?= =?us-ascii?q?F7xH/WeuNPDt1hnBodbOjihu29UWt1O7xW8263ltOrSdIj9/BvW0D2RzU78iIU?= =?us-ascii?q?Pp9/kG51DaXyQ/T9uBEIVwqmqrDLJ4hx7swmYQJvUTFACD2hF36jKiKeUo+/+i?= =?us-ascii?q?o7/7rYrL8pp+TL4N0hQD+MrgumsyiGus0KBQBX2+e+eikyLLj/Vf2QLNFjvIoi?= =?us-ascii?q?anVqpXaKtkDqqGlHQBVyJws6xO+Dzi60NQXh2UILFFbdxKdlYTmJ1bOIPXgAfe?= =?us-ascii?q?+hVSsijZryOrcMr3vGJXBNmXDkLHgfblh7E5T1RQ8wcpY55JOBbENOPPzVVLxt?= =?us-ascii?q?dzcCh81KQu0w/zoCNh7y4gQWnqPD7eEPK/MtVKE/P8jL/WDaYMPtjvxN+Ip6vD?= =?us-ascii?q?hgHMhhFMQc7Sl0YEJZH24EflqOVuVbHryjtsbD2sHsRQyQer3g1OYSzFTfWy9X?= =?us-ascii?q?6ck6zE7Fo2mCYDDS5iogL2OwSu3BIVWZmdCClGMDXfnaZmLW/cKaCKTO89hjyI?= =?us-ascii?q?LWaKmS4872hGirA76y7x5IerI4iAUqIzv2dxv6+HOiR0/+iZ4AsqB322XQWx5k?= =?us-ascii?q?XsERzos06B+pUx9xE2D0a99g/FACNJd++5HXhsiOJPd1ex3BND/VxrYcNmPUFu?= =?us-ascii?q?mWtKmATUxT9It3dABf0Z9G9OjjhDawiqlHaUZl7uRBJw76q/TxXzxKNx7y3rcz?= =?us-ascii?q?6kuk1kmQs5ONW26mq5y7BPcB4nUk0Wfi6mla78c0DTI9GqMwmuCpkZYUBR/Uan?= =?us-ascii?q?dR3AQelPWrcjl5kPFV7KhFa4oMg5FycKbLqtKa8bpjUldSff4ONXeZnqxlH2qC?= =?us-ascii?q?RaJwLOMdovqdH8H0CXTEkhX2zwUqDyCKg50TnOlvGT2CCNoU1TifxWouaN1t3X?= =?us-ascii?q?xBgdgxB6MR0lgzKauvB8ZlPiYDfQJ0eRA8CworjExGFemw/rXDcCBrkxvZvZye?= =?us-ascii?q?9Q4tX5D3GSRjAd9O528M+g2j1oXdUJstEPr1glrIp1Hldk2oXgqygtrNK/e10l?= =?us-ascii?q?OIWDLlavsM6HafzGhtCukbLTbjwqGuD5z0r8I7OUkpl7jugCwC0dk9G9ogYA9O?= =?us-ascii?q?5q044WTShIVVYPtX0038RljurycZTMytdq8PZJEO66ptDTPwJQsWPtjzQyvLY4?= =?us-ascii?q?3DQ=3D=3D?= IronPort-HdrOrdr: =?us-ascii?q?A9a23=3ARs3E6KN1eql8aMBcTgOjsMiBIKoaSvp037BL?= =?us-ascii?q?7TENdfUxSKelfq+V/MjyqXTP+UwssR0b9uxoEpPwIk80jKQFhLX5ZI3SPjUO21?= =?us-ascii?q?HFEGgd1+bfKmbbaknDH4dmvM9dmsBFYuEYZmIasS+V2meF+pkbsb+6GLfBv5a4?= =?us-ascii?q?815dCSVIL4VByytcBhyAGkN7fhRcGZAlCIGRj/A33wZJ4h8sH72G7uNvZZm5m+?= =?us-ascii?q?H2?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0A3AgASaxphhyIeaIFaFoNvgRoBZFc6M?= =?us-ascii?q?QKERY8kASSCJIMohXWSYoFjEAEDAQ0qAQ4FAQIEAQGEYQIXOgEEghUCHgYBBTM?= =?us-ascii?q?TAQIEFQEBBQEBAQIBAwMEARMBAQEBDQsOCDokhWgNgiITDBmDbQMBGAkKQAYfI?= =?us-ascii?q?wMJCwEGAwIEDQEXARQKAwETARIUBoJXAYMHBQpCiyCcCoExgQGDTQEDAxABDgm?= =?us-ascii?q?EO4FjDQIUgReFcFNIAYJtCINwKRCBVUSBFYIkUW6CSxcBAQEBAYEWJQEBCE4Jg?= =?us-ascii?q?liCZASDRw4fGwQBFhFiGRYBAQkZNjgkNAMgCB8LOgORFBMeJZZWlEItB4MrgTE?= =?us-ascii?q?GC4dmgRWMRYd7g2WBSIobly0hlXCCHoZXgQsJgjWHcYtmhTCBTSqBagwHMxowQ?= =?us-ascii?q?4JpCQlXDleNVRaDUIE+gxs7hUw/MgIBAQENJgIGAQoBAQMJgQgBAQUTCwGHbFs?= =?us-ascii?q?BAQ?= X-IPAS-Result: =?us-ascii?q?A0A3AgASaxphhyIeaIFaFoNvgRoBZFc6MQKERY8kASSCJIM?= =?us-ascii?q?ohXWSYoFjEAEDAQ0qAQ4FAQIEAQGEYQIXOgEEghUCHgYBBTMTAQIEFQEBBQEBA?= =?us-ascii?q?QIBAwMEARMBAQEBDQsOCDokhWgNgiITDBmDbQMBGAkKQAYfIwMJCwEGAwIEDQE?= =?us-ascii?q?XARQKAwETARIUBoJXAYMHBQpCiyCcCoExgQGDTQEDAxABDgmEO4FjDQIUgReFc?= =?us-ascii?q?FNIAYJtCINwKRCBVUSBFYIkUW6CSxcBAQEBAYEWJQEBCE4JgliCZASDRw4fGwQ?= =?us-ascii?q?BFhFiGRYBAQkZNjgkNAMgCB8LOgORFBMeJZZWlEItB4MrgTEGC4dmgRWMRYd7g?= =?us-ascii?q?2WBSIobly0hlXCCHoZXgQsJgjWHcYtmhTCBTSqBagwHMxowQ4JpCQlXDleNVRa?= =?us-ascii?q?DUIE+gxs7hUw/MgIBAQENJgIGAQoBAQMJgQgBAQUTCwGHbFsBAQ?= X-IronPort-AV: E=Sophos;i="5.84,326,1620684000"; d="scan'208,217";a="393563054" X-MGA-submission: =?us-ascii?q?MDH/xz4JvmXC3JDm3AKnZFW96PQQb0SBZO16IE?= =?us-ascii?q?WJyYwc7d2Tjf8ujHVnu46/kJvwGUJXk85N9X7VfXxtIQrD8ldggRWx68?= =?us-ascii?q?XnKw5qlJ5RuWt1zQ64J6IGTOdnpC3gNko6qW1T4gOnGtKmO0jTj0xXCo?= =?us-ascii?q?XsVMR/n+hAwPwPkmZNewRaKg=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 Sep 2021 11:09:51 +0200 Received: from set (unknown [131.254.252.242]) (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 DA2C25605AA; Tue, 21 Sep 2021 11:09:49 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 21 Sep 2021 11:09:48 +0200 Message-ID: <87tuieuwf7.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Sep 21 11:09:50 2021 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.000985, queueID=55F8C5605AB 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: 18572 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 ZWsgb2YgU2VwdGVtYmVyIDE0IHRvDQoyMSwgMjAyMS4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpvcGFt LWdyZXA6IHNlYXJjaCB0aHJvdWdoIHRoZSBzb3VyY2VzIG9mIGFsbCB0aGUgcGFja2FnZXMgaW4g b3BhbS1yZXBvc2l0b3J5DQpIYXJkY2FtbCBNSVBTIENQVSBMZWFybmluZyBQcm9qZWN0IGFuZCBC bG9nDQpQdXp6bGluZyB0aHJvdWdoIHNvbWUgR0FEVCBlcnJvcnMNClBhcmFueSBmb3IgbXVsdGlj b3JlIE9DYW1sDQpPQ2FtbCA0LjEzLjAsIHNlY29uZCByZWxlYXNlIGNhbmRpZGF0ZQ0KVW5pY29k ZSAxNC4wLjAgdXBkYXRlIGZvciBVdWNkLCBVdWNwLCBVdW5mIGFuZCBVdXNlZw0KU2V0IHVwIE9D YW1sIDIuMC4wLWJldGE0DQpCZWNvbWUgYW4gT3V0cmVhY2h5IE1lbnRvcjogc3VwcG9ydCB0aGUg Z3Jvd3RoIGFuZCBkaXZlcnNpdHkgb2YgdGhlIE9DYW1sIGNvbW11bml0eQ0KVGhlIE9DYW1sIDQu MTMgcHJldmlldyBmb3IgTWVybGluIGlzIG5vdyBhdmFpbGFibGUNCk9sZCBDV04NCg0KDQpvcGFt LWdyZXA6IHNlYXJjaCB0aHJvdWdoIHRoZSBzb3VyY2VzIG9mIGFsbCB0aGUgcGFja2FnZXMgaW4g b3BhbS1yZXBvc2l0b3J5DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1s Lm9yZy90L2Fubi1vcGFtLWdyZXAtc2VhcmNoLXRocm91Z2gtdGhlLXNvdXJjZXMtb2YtYWxsLXRo ZS1wYWNrYWdlcy1pbi1vcGFtLXJlcG9zaXRvcnkvODQzNC8zPg0KDQoNCkthdGUgYW5ub3VuY2Vk DQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJJ3ZlIGp1 c3QgcmVsZWFzZWQgb3BhbS1ncmVwLjAuMi4wIHdpdGggcXVpdGUgYSBiaXQgb2YgY2hhbmdlIGNv bXBhcmVkDQogIHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBIZXJlIGlzIHRoZSBoaWdobGlnaHQ6 DQogIOKAoiBDb21wbGV0ZSByZXdyaXRlIGZyb20gc2hlbGwgc2NyaXB0IHRvIE9DYW1sLCBtYWtp bmcgaXQgbW9yZSBwb3J0YWJsZQ0KICDigKIgVXNlIHRoZSBmYXN0ZXIgYHJpcGdyZXAnIGFuZCBg dWdyZXAnIG92ZXIgYGdyZXAnIHdoZW4gYXZhaWxhYmxlDQogICAgKHN1Z2dlc3Rpb24gYnkgQEVu Z2lsKQ0KICDigKIgVXNlIHRoZSBgcHJvZ3Jlc3MnIGxpYnJhcnkgdG8gc2hvdyBwcm9ncmVzcyBp bnN0ZWFkIG9mIGENCiAgICBub24tcG9ydGFibGUvRElZIHNwaW5uZXINCg0KICBTZWUgdGhlIFtj aGFuZ2Vsb2ddIGZvciB0aGUgZnVsbCBsaXN0IG9mIHJlbGV2YW50IGNoYW5nZXMuDQoNCiAgKkJp ZyB0aGFua3MgdG8gQENyYWlnRmUgZm9yIHRoZSBgcHJvZ3Jlc3MnIGxpYnJhcnkgKHN1Y2ggYSB0 cmVhdCEpIGFuZA0KICB0byBAZGJ1ZW56bGkgZm9yIGBib3MnIGFuZCBgY21kbGluZXInIGluIHBh cnRpY3VsYXIsIG1ha2luZyBpdCBlYXN5IHRvDQogIGRvIHN1Y2ggcmV3cml0ZSogOnJlbGF4ZWQ6 DQoNCg0KW2NoYW5nZWxvZ10NCjxodHRwczovL2dpdGh1Yi5jb20va2l0LXR5LWthdGUvb3BhbS1n cmVwL2Jsb2IvbWFzdGVyL0NIQU5HRVMubWQ+DQoNCg0KSGFyZGNhbWwgTUlQUyBDUFUgTGVhcm5p bmcgUHJvamVjdCBhbmQgQmxvZw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0 dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9oYXJkY2FtbC1taXBzLWNwdS1sZWFybmluZy1wcm9q ZWN0LWFuZC1ibG9nLzgwODgvMTA+DQoNCg0KQWxleGFuZGVyIChTYXNoYSkgU2t2b3J0c292IGFu bm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSADQoNCiAgSGkgZXZlcnlvbmUhIFdlIGFyZSBleGNpdGVkIHRvIGFubm91bmNlIHRoYXQg d2UgaGF2ZSBjb21wbGV0ZWQgdGhpcw0KICBwcm9qZWN0IGFuZCBibG9nLiBQcm9ncmVzcyBoYXMg YmVlbiBzbG93IHRoZXNlIHBhc3QgZmV3IG1vbnRocyBkdWUgdG8NCiAgd29yaywgaW50ZXJuc2hp cHMsIGFuZCBjb2xsZWdlLCBidXQgd2XigJl2ZSBub3cgcmVsZWFzZWQgW3YxLjAuMCBvbg0KICBH aXRIdWJdLiBXZSBhbHNvIHB1Ymxpc2hlZCBwb3N0cyBvbjoNCg0KICDigKIgW0Rlc2lnbiBwYXR0 ZXJucywgY29udmVudGlvbnMsIGFuZCB0ZXN0aW5nXQ0KICDigKIgW0hvdyB0aGUgQWx3YXlzIERT TCBjYW4gYmUgdXNlZCB0byB3cml0ZSBzYWZlIOKAnHBzZXVkby1pbXBlcmF0aXZl4oCdDQogICAg Y29kZSBpbiBIYXJkY2FtbF0NCiAg4oCiIFtIYXJkY2FtbOKAmXMgdGVzdGluZyBhbmQgaW50ZXJh Y3RpdmUgc2ltdWxhdGlvbiB0b29sc10NCiAg4oCiIFtBIHJlY2FwIG9mIHNvbWUgaW50ZXJlc3Rp bmcgaGFyZHdhcmUvQ1BVIGZlYXR1cmVzIGluIG91ciBkZXNpZ25dDQoNCiAgRmluYWxseSwgd2Ug cHVibGlzaGVkIGEgW2NvbmNsdXNpb24gYmxvZyBwb3N0XSwgd2hpY2ggd3JhcHMgdXAgc29tZQ0K ICBzdHJlbmd0aHMvd2Vha25lc3NlcyBvZiBIYXJkY2FtbCwgYXMgd2VsbCBhcyBzb21lIHRha2Vh d2F5cyBvbiBPQ2FtbA0KICBhbmQgYmxvZ2dpbmcgbW9yZSBnZW5lcmFsbHkuDQoNCiAgVGhhbmsg eW91IHRvIEBhbmR5bWFuIGFuZCBAZnlxdWFoOTUgZm9yIGJ1aWxkaW5nIEhhcmRjYW1sLCBhbmQg Zm9yDQogIGhlbHBpbmcgdXMgb3V0IG9uIEdpdEh1YiBpc3N1ZXMhIFdlIHJlYWxseSBhcHByZWNp YXRlIHlvdXIgdGltZSBhbmQNCiAgc3VnZ2VzdGlvbnMuDQoNCiAgT3ZlcmFsbCwgd2XigJl2ZSBj b21lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgSGFyZGNhbWwgaXMgYSBtdWNoIGJldHRlcg0KICB0 b29sIGZvciBoYXJkd2FyZSBkZXNpZ24gdGhhbiBWZXJpbG9nLiBUaGlzIGhhcyBiZWVuIGEgZ3Jl YXQNCiAgZXhwZXJpZW5jZSwgYW5kIHdlIHdhbGsgYXdheSB3aXRoIGEgYmV0dGVyIHVuZGVyc3Rh bmRpbmcgb2YgaGFyZHdhcmUsDQogIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcsIGFuZCB0ZWNobmlj YWwgd3JpdGluZy4NCg0KDQpbdjEuMC4wIG9uIEdpdEh1Yl0NCjxodHRwczovL2dpdGh1Yi5jb20v YXNrdm9ydHNvdjEvaGFyZGNhbWwtbWlwcy9yZWxlYXNlcy90YWcvdjEuMC4wPg0KDQpbRGVzaWdu IHBhdHRlcm5zLCBjb252ZW50aW9ucywgYW5kIHRlc3RpbmddDQo8aHR0cHM6Ly9jZXJhbWljaGFj a2VyLmNvbS9ibG9nLzE0LTh4LWRlc2lnbi1wYXR0ZXJucy1jb252ZW50aW9ucy1hbmQtdGVzdGlu Zz4NCg0KW0hvdyB0aGUgQWx3YXlzIERTTCBjYW4gYmUgdXNlZCB0byB3cml0ZSBzYWZlIOKAnHBz ZXVkby1pbXBlcmF0aXZl4oCdIGNvZGUNCmluIEhhcmRjYW1sXQ0KPGh0dHBzOi8vY2VyYW1pY2hh Y2tlci5jb20vYmxvZy8xNS05eC1hbHdheXMtZHNsLWFuZC10aGUtY29udHJvbC11bml0Pg0KDQpb SGFyZGNhbWzigJlzIHRlc3RpbmcgYW5kIGludGVyYWN0aXZlIHNpbXVsYXRpb24gdG9vbHNdDQo8 aHR0cHM6Ly9jZXJhbWljaGFja2VyLmNvbS9ibG9nLzE2LTEweC10ZXN0aW5nLWFuZC1kZWJ1Z2dp bmctaGFyZGNhbWw+DQoNCltBIHJlY2FwIG9mIHNvbWUgaW50ZXJlc3RpbmcgaGFyZHdhcmUvQ1BV IGZlYXR1cmVzIGluIG91ciBkZXNpZ25dDQo8aHR0cHM6Ly9jZXJhbWljaGFja2VyLmNvbS9ibG9n LzE4LTExeC1jcHUtZnVuY3Rpb25hbGl0eS13cmFwLXVwPg0KDQpbY29uY2x1c2lvbiBibG9nIHBv c3RdDQo8aHR0cHM6Ly9jZXJhbWljaGFja2VyLmNvbS9ibG9nLzIwLTEyMTItcHJvamVjdC1jb25j bHVzaW9uPg0KDQoNClB1enpsaW5nIHRocm91Z2ggc29tZSBHQURUIGVycm9ycw0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBz Oi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9wdXp6bGluZy10aHJvdWdoLXNvbWUtZ2FkdC1lcnJvcnMv ODQ3OC84Pg0KDQoNCkRlZXAgaW4gdGhpcyB0aHJlYWQsIGdhc2NoZSBzYWlkDQrilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBOb3QgZXhhY3RseSB3aGF0IHlvdSBh cmUgYXNraW5nIGZvciwgYnV0IEBPY3RhY2hyb24gd3JvdGUgYW4gZXhjZWxsZW50DQogIFtjaGFw dGVyIG9uIEdBRFRzXSBpbiB0aGUgT0NhbWwgbWFudWFsLCB3aGljaCBjb3VsZCBiZSByZWNvbW1l bmRlZCB0bw0KICBwZW9wbGUgc3RhcnRpbmcgR0FEVCBwcm9ncmFtbWluZy4gSXQgZXhwbGFpbnMg d2h5IHJlY3Vyc2l2ZSBmdW5jdGlvbnMNCiAgb24gR0FEVCBuZWVkICJleHBsaWNpdCBwb2x5bW9y cGhpYyBhbm5vdGF0aW9ucyIgaW4gbGVzcw0KICAiaW1wbGVtZW50YXRpb24gZHJpdmVuIiB0ZXJt cy4NCg0KICAoVGhlIGNoYXB0ZXIgYWxzbyBkZW1vbnN0cmF0ZXMgdGhlIG5ldyBuYW1pbmcgc2No ZW1lIGZvciBleGlzdGVudGlhbA0KICB0eXBlIHZhcmlhYmxlcyBpbnRyb2R1Y2VkIGJ5IEdBRFQg Y29uc3RydWN0b3JzLCB3aGljaCBjYW4gaGVscCBhIGxvdA0KICB3b3JraW5nIHRocm91Z2ggdHlw ZSBlcnJvcnMsIGJ1dCBhcmUgc3RpbGwgYSBiaXQgaGVhdnkgYW5kIGRlc2VydmUgYQ0KICBnZW50 bGUgaW50cm9kdWN0aW9uLikNCg0KDQpbY2hhcHRlciBvbiBHQURUc10gPGh0dHBzOi8vb2NhbWwu b3JnL3JlbGVhc2VzLzQuMTIvbWFudWFsL2dhZHRzLmh0bWw+DQoNCg0Kb2N0YWNocm9uIHRoZW4g YWRkZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIEkgaGF2ZSBvbmx5IHdyaXR0ZW4gdGhlIG5vbWVuY2xhdHVyZSBwYXJ0 IGFuZCBhIGJpdCBvZiB0aGUgZXhwbGFuYXRpb24NCiAgZm9yIHJlY3Vyc2l2ZSBmdW5jdGlvbnMg aW4gdGhpcyBjaGFwdGVyLCBAZ2FycmlndWUgaXMgdGhlIGF1dGhvciBvZg0KICBtb3N0IG9mIHRo aXMgY2hhcHRlci4NCg0KDQpQYXJhbnkgZm9yIG11bHRpY29yZSBPQ2FtbA0K4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9w YXJhbnktZm9yLW11bHRpY29yZS1vY2FtbC84NDk1LzE+DQoNCg0KVW5peEp1bmtpZSBhbm5vdW5j ZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgA0KDQogIFRoZXJlIGlzIG5vdyBhbiBpbXBsZW1lbnRhdGlvbiB1c2luZyBtdWx0aWNv cmUtT0NhbWwgaW4gdGhlICdkb21haW5zJw0KICBicmFuY2guDQoNCiAgPGh0dHBzOi8vZ2l0aHVi LmNvbS9Vbml4SnVua2llL3BhcmFueS90cmVlL2RvbWFpbnM+DQoNCiAgUGVvcGxlIGFyZSB2ZXJ5 IHdlbGNvbWUgdG8gZ2l2ZSBpdCBhIHRyeSBhbmQgc2hhcmUgdGhlIHNwZWVkdXAgdGhleQ0KICBv YnNlcnZlLCBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIGZvcmstYmFzZWQgcGFyYWxsZWxpc20uDQoN CiAgVGhhbmtzIHRvIEBuaWxzYmVja2VyIGZvciBoYXZpbmcgbW90aXZhdGVkIG1lLg0KDQoNClVu aXhKdW5raWUgbGF0ZXIgYWRkZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIElmIHlvdSBkb24ndCB1c2UgdGhl IGRvbWFpbnMgYnJhbmNoLCB0aGVuIHBhcmFueSBpcyB1c2luZyBmb3JrLWJhc2VkDQogIHBhcmFs bGVsaXNtLiAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBkb21haW5zIGJyYW5jaCwgeW91IG5lZWQg dG8NCiAgaW5zdGFsbCBtdWx0aWNvcmUtb2NhbWwgZmlyc3Q6DQogIOKUjOKUgOKUgOKUgOKUgA0K ICDilIIgb3BhbSBzd2l0Y2ggY3JlYXRlIDQuMTIuMCtkb21haW5zDQogIOKUgiBldmFsIGBvcGFt IGNvbmZpZyBlbnZgDQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNCk9DYW1sIDQuMTMuMCwgc2Vjb25k IHJlbGVhc2UgY2FuZGlkYXRlDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9j YW1sLm9yZy90L29jYW1sLTQtMTMtMC1zZWNvbmQtcmVsZWFzZS1jYW5kaWRhdGUvODQ5Ni8xPg0K DQoNCm9jdGFjaHJvbiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoZSByZWxlYXNlIG9mIE9DYW1sIDQuMTMu MCBpcyBleHBlY3RlZCBmb3IgbmV4dCB3ZWVrLg0KDQogIFNpbmNlIHdlIGhhZCBhIG5hdGl2ZSBj b2RlIGdlbmVyYXRpb24gYnVnIGZpeCBhbmQgdHdvIG1pbm9yDQogIGNvbmZpZ3VyYXRpb24gdHdl YWtzIHNpbmNlIHRoZSBmaXJzdCByZWxlYXNlIGNhbmRpZGF0ZSwgd2UgYXJlDQogIHB1Ymxpc2hp bmcgYSBzZWNvbmQgcmVsZWFzZSBjYW5kaWRhdGUuICBJZiB5b3UgZmluZCBhbnkgYnVncywgcGxl YXNlDQogIHJlcG9ydCB0aGVtIGhlcmU6DQoNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9v Y2FtbC9pc3N1ZXM+DQoNCiAgSGFwcHkgaGFja2luZywgRmxvcmlhbiBBbmdlbGV0dGkgZm9yIHRo ZSBPQ2FtbCB0ZWFtLg0KDQoNCkluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMNCuKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjA0KDQogIFRoZSBiYXNlIGNvbXBpbGVyIGNhbiBiZSBpbnN0YWxsZWQgYXMgYW4gb3Bh bSBzd2l0Y2ggd2l0aCB0aGUNCiAgZm9sbG93aW5nIGNvbW1hbmRzDQogIOKUjOKUgOKUgOKUgOKU gA0KICDilIIgb3BhbSB1cGRhdGUNCiAg4pSCIG9wYW0gc3dpdGNoIGNyZWF0ZSA0LjEzLjB+cmMy IC0tcmVwb3NpdG9yaWVzPWRlZmF1bHQsYmV0YT1naXQraHR0cHM6Ly9naXRodWIuY29tL29jYW1s L29jYW1sLWJldGEtcmVwb3NpdG9yeS5naXQNCiAg4pSU4pSA4pSA4pSA4pSADQogIElmIHlvdSB3 YW50IHRvIHR3ZWFrIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21waWxlciwgeW91IGNhbiBz d2l0Y2gNCiAgdG8gdGhlIG9wdGlvbiB2YXJpYW50IHdpdGg6DQoNCiAg4pSM4pSA4pSA4pSA4pSA DQogIOKUgiBvcGFtIHVwZGF0ZQ0KICDilIIgb3BhbSBzd2l0Y2ggY3JlYXRlIDxzd2l0Y2hfbmFt ZT4gLS1wYWNrYWdlcz1vY2FtbC12YXJpYW50cy40LjEzLjB+cmMyK29wdGlvbnMsPG9wdGlvbl9s aXN0Pg0KICDilIIgLS1yZXBvc2l0b3JpZXM9ZGVmYXVsdCxiZXRhPWdpdCtodHRwczovL2dpdGh1 Yi5jb20vb2NhbWwvb2NhbWwtYmV0YS1yZXBvc2l0b3J5LmdpdA0KICDilJTilIDilIDilIDilIAN Cg0KICB3aGVyZSA8b3B0aW9uX2xpc3Q+IGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Ygb2Nh bWwtb3B0aW9uLSoNCiAgcGFja2FnZXMuIEZvciBpbnN0YW5jZSwgZm9yIGEgZmxhbWJkYSBhbmQg bm8tZmxhdC1mbG9hdC1hcnJheSBzd2l0Y2g6DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3Bh bSBzd2l0Y2ggY3JlYXRlIDQuMTMuMH5yYzIrZmxhbWJkYStuZmZhDQogIOKUgiAtLXBhY2thZ2Vz PW9jYW1sLXZhcmlhbnRzLjQuMTMuMH5yYzIrb3B0aW9ucyxvY2FtbC1vcHRpb24tZmxhbWJkYSxv Y2FtbC1vcHRpb24tbm8tZmxhdC1mbG9hdC1hcnJheQ0KICDilIIgLS1yZXBvc2l0b3JpZXM9ZGVm YXVsdCxiZXRhPWdpdCtodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwtYmV0YS1yZXBvc2l0 b3J5LmdpdA0KICDilJTilIDilIDilIDilIANCiAgQWxsIGF2YWlsYWJsZSBvcHRpb25zIGNhbiBi ZSBsaXN0ZWQgd2l0aCAib3BhbSBzZWFyY2ggb2NhbWwtb3B0aW9uIi4NCg0KICBUaGUgc291cmNl IGNvZGUgZm9yIHRoZSByZWxlYXNlIGNhbmRpZGF0ZSBpcyBhbHNvIGF2YWlsYWJsZSBhdCB0aGVz ZQ0KICBhZGRyZXNzZXM6DQoNCiAg4oCiIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwv YXJjaGl2ZS80LjEzLjAtcmMyLnRhci5nej4NCiAg4oCiIDxodHRwczovL2NhbWwuaW5yaWEuZnIv cHViL2Rpc3RyaWIvb2NhbWwtNC4xMy9vY2FtbC00LjEzLjB+cmMyLnRhci5nej4NCg0KDQpDaGFu Z2VzIHNpbmNlIHRoZSBmaXJzdCByZWxlYXNlIGNhbmRpZGF0ZQ0K4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCi IFsjMTA2MjZdLCBbIzEwNjI4XTogV3JvbmcgcmVsb2FkaW5nIG9mIHRoZSB4ODYtNjQgaW5zdHJ1 Y3Rpb24gZm9yDQogICAgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiBieSBhIGNvbnN0YW50LCBjYXVz aW5nIHRoZSBhc3NlbWJsZXIgdG8NCiAgICByZWplY3QgdGhlIG9jYW1sb3B0LWdlbmVyYXRlZCBj b2RlLiAoWGF2aWVyIExlcm95LCByZXBvcnQgYnkgRGF2ZQ0KICAgIEFpdGtlbiwgcmV2aWV3IGJ5 IFZpbmNlbnQgTGF2aXJvbikNCg0KICDigKIgWyMxMDE3Nl0sIFsjMTA2MzIobmV3IGluIHJjMild OiBCeSBkZWZhdWx0LCBjYWxsIHRoZSBhc3NlbWJsZXINCiAgICB0aHJvdWdoIHRoZSBDIGNvbXBp bGVyIGRyaXZlciAoU8OpYmFzdGllbiBIaW5kZXJlciwgcmV2aWV3IGJ5IEdhYnJpZWwNCiAgICBT Y2hlcmVyLCBEYXZpZCBBbGxzb3BwIGFuZCBYYXZpZXIgTGVyb3kpDQoNCiAg4oCiIFsjMTA0NTFd LCBbIzEwNjM1KG5ldyBpbiByYzIpXTogUmVwbGFjZSB0aGUgdXNlIG9mIGljb252IHdpdGggYSBD DQogICAgdXRpbGl0eSB0byBjb252ZXJ0ICQoTElCRElSKSB0byBhIEMgc3RyaW5nIGNvbnN0YW50 IG9uIFdpbmRvd3Mgd2hlbg0KICAgIGJ1aWxkaW5nIHRoZSBydW50aW1lLiBIYXJkZW5zIHRoZSBn ZW5lcmF0aW9uIG9mIHRoZSBjb25zdGFudCBvbiBVbml4DQogICAgZm9yIHBhdGhzIHdpdGggYmFj a3NsYXNoZXMsIGRvdWJsZS1xdW90ZXMgYW5kIG5ld2xpbmVzLiAoRGF2aWQNCiAgICBBbGxzb3Bw LCByZXZpZXcgYnkgRmxvcmlhbiBBbmdlbGV0dGkgYW5kIFPDqWJhc3RpZW4gSGluZGVyZXIpDQoN Cg0KWyMxMDYyNl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTA2MjY+ DQoNClsjMTA2MjhdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzEwNjI4 Pg0KDQpbIzEwMTc2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xMDE3 Nj4NCg0KWyMxMDYzMihuZXcgaW4gcmMyKV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2Ft bC9pc3N1ZXMvMTA2MzI+DQoNClsjMTA0NTFdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2Nh bWwvaXNzdWVzLzEwNDUxPg0KDQpbIzEwNjM1KG5ldyBpbiByYzIpXSA8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sL29jYW1sL2lzc3Vlcy8xMDYzNT4NCg0KDQpVbmljb2RlIDE0LjAuMCB1cGRhdGUg Zm9yIFV1Y2QsIFV1Y3AsIFV1bmYgYW5kIFV1c2VnDQrilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1s Lm9yZy90L2Fubi11bmljb2RlLTE0LTAtMC11cGRhdGUtZm9yLXV1Y2QtdXVjcC11dW5mLWFuZC11 dXNlZy84NDk3LzE+DQoNCg0KRGFuaWVsIELDvG56bGkgYW5ub3VuY2VkDQrilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBVbmljb2RlIDE0LjAuMCB3YXMgcmVsZWFzZWQgb24gdGhlIDE0dGggb2Ygc2VwdGVtYmVy Lg0KDQogIEl0IGFkZHMgODM4IG5ldyBjaGFyYWN0ZXJzIHRvIHRoZSBzdGFuZGFyZCBpbmNsdWRp bmcsIGZvciBvdXIgZnJpZW5kcw0KICBmcm9tIENlbnRyYWwgQXNpYSwgc3VwcG9ydCBmb3IgW09s ZCBVeWdodXJdLiAgRm9yIGluZm9ybWF0aW9uIGFib3V0DQogIGFsbCB0aGUgb3RoZXIgYWRkaXRp b25zLCBzZWUgW3RoZSBhbm5vdW5jZW1lbnQgcGFnZV0uDQoNCiAgQWNjb3JkaW5nbHkgdGhlIGxp YnJhcmllcyBtZW50aW9uZWQgYXQgdGhlIGVuZCBvZiB0aGlzIG1lc3NhZ2UgaGFkIHRvDQogIGJl IHVwZGF0ZWQsIGNvbnN1bHQgdGhlIGluZGl2aWR1YWwgcmVsZWFzZSBub3RlcyBmb3IgZGV0YWls cy4gQm90aA0KICBVdWNkIGFuZCBVdWNwIGFyZSBpbmNvbXBhdGlibGUgcmVsZWFzZXMgc2luY2Vz IG5ldyBzY3JpcHQgYW5kIGJsb2NrDQogIGVudW1lcmFudHMgaGFkIHRvIGJlIGFkZGVkLg0KDQog IEJlc3QsDQoNCiAgRGFuaWVsDQoNCiAgUC5TLiBUaG91Z2ggSSdtIG5vdCB2ZXJ5IGZvbmQgb2Yg dGhlIGNvbmNlcHQsIEkgcmVjZW50bHkgZW5hYmxlZA0KICBzcG9uc29ycyBvbiBteSBnaXRodWIg YWNjb3VudCBhcyBhbiBleHBlcmltZW50LiBTbyBJJ2QgbGlrZSB0byB0aGFua3MNCiAgbXkgW2dp dGh1YiBzcG9uc29yc10sIEBkYXZlc254IGJlY2FtZSB0aGUgZmlyc3Qgb25lIG1vbmRheS4NCg0K DQpbT2xkIFV5Z2h1cl0NCjxodHRwczovL3VuaWNvZGUub3JnL2NoYXJ0cy9QREYvVW5pY29kZS0x NC4wL1UxNDAtMTBGNzAucGRmPg0KDQpbdGhlIGFubm91bmNlbWVudCBwYWdlXQ0KPGh0dHA6Ly9i bG9nLnVuaWNvZGUub3JnLzIwMjEvMDkvYW5ub3VuY2luZy11bmljb2RlLXN0YW5kYXJkLXZlcnNp b24tMTQwLmh0bWw+DQoNCltnaXRodWIgc3BvbnNvcnNdIDxodHRwczovL2dpdGh1Yi5jb20vc3Bv bnNvcnMvZGJ1ZW56bGkvPg0KDQoNClNldCB1cCBPQ2FtbCAyLjAuMC1iZXRhNA0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4t c2V0LXVwLW9jYW1sLTItMC0wLWJldGE0Lzg1MDEvMT4NCg0KDQpTb3JhIE1vcmltb3RvIGFubm91 bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSADQoNCkNoYW5nZWQNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQog IOKAoiBTZXQgYE9QQU1TT0xWRVJUSU1FT1VUJyB0byBgMTAwMCcgdG8gYXZvaWQgYSB0aW1lb3V0 IGV2ZW4gaWYgdGhlDQogICAgb3BhbSBzb2x2ZXIgaXMgc2xvdy4NCiAg4oCiIEluY3JlYXNlIGNh Y2hlIGhpdCByYXRpbyBieSBsb29zZW5pbmcgcmVzdG9yZSBrZXlzIG9mIG9wYW0gY2FjaGUuDQoN CiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9zZXR1cC1vY2FtbC9yZWxlYXNlcy90YWcvdjIu MC4wLWJldGE0Pg0KDQoNCkJlY29tZSBhbiBPdXRyZWFjaHkgTWVudG9yOiBzdXBwb3J0IHRoZSBn cm93dGggYW5kIGRpdmVyc2l0eSBvZiB0aGUgT0NhbWwgY29tbXVuaXR5DQrilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Jl Y29tZS1hbi1vdXRyZWFjaHktbWVudG9yLXN1cHBvcnQtdGhlLWdyb3d0aC1hbmQtZGl2ZXJzaXR5 LW9mLXRoZS1vY2FtbC1jb21tdW5pdHkvODIxMy84Pg0KDQoNClNvbmphIEhlaW56ZSBhbm5vdW5j ZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgA0KDQogIEhleSBhbGwsIEkndmUganVzdCBzdWJtaXR0ZWQgYW4gT3V0cmVh Y2h5IHByb2plY3QgZm9yIHRoZSB3aW50ZXINCiAgcm91bmQuIFRoZSBwcm9qZWN0IGlzIHRvIHdy aXRlIHRoZSBiYXNpYyBwcHhfZGVyaXZpbmcgcGx1Z2lucyBpbg0KICBwcHhsaWI7IHRoYXQgaXMs IHRoZSBvbmVzIHRoYXQgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgdmVyc2lvbiBiYXNlZCBvbg0KICBw cHhsaWIuIEkgdGhpbmsgYm90aCwgaGF2aW5nIHRoZW0gYXZhaWxhYmxlIHRvIHVzZSwgYW5kIGhh dmluZyB0aGVpcg0KICBjb2RlIGF2YWlsYWJsZSBhcyBzaW1wbGUgZXhhbXBsZXMgb2YgaG93IHRv IHVzZSBQcHhsaWIuRGVyaXZpbmcgd291bGQNCiAgYmUgdmVyeSBuaWNlISBBbmQgaW1wcm92aW5n IHBweGxpYidzIGRvY3VtZW50YXRpb24gYW5kIGZpbmRpbmcgc2ltcGxlDQogIGlzc3VlcyBvbiBh bHJlYWR5IGV4aXN0aW5nIFBQWHMgdG8gcHJlcGFyZSBmb3IgT3V0cmVhY2h5LCB3aWxsIGJlDQog IGJlbmVmaWNpYWwgYXMgd2VsbC4NCg0KICBPZiBjb3Vyc2UsIGl0J3Mgbm90IGNsZWFyIGlmIHNv bWVvbmUgd2l0aCB0aGUgcmlnaHQgaW50ZXJlc3QgY29tZXMNCiAgYWxvbmcgZm9yIHRoaXMgcHJv amVjdCwgYnV0IGlmIHdlIGRvbid0IGZpbmQgYW4gaW50ZXJuIGZvciBpdCB0aGlzDQogIHJvdW5k LCBJIGNhbiBqdXN0IHJlLXN1Ym1pdCB0aGUgc2FtZSBwcm9qZWN0IG5leHQgcm91bmQuDQoNCg0K U29uamEgSGVpbnplDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBC dHcsIHRoZSBkZWFkbGluZSB0byBzdWJtaXQgcHJvamVjdHMgd2FzIGV4dGVuZGVkIGFuZCBpcyBu b3cgU2VwdA0KICAyM3JkLiBTbyB0aGUgdGltZWxpbmUgaW4gb3VyIHBvc3QgYWJvdmUgaXMgc2xp Z2h0bHkgb3V0ZGF0ZWQuDQoNCg0KVGhlIE9DYW1sIDQuMTMgcHJldmlldyBmb3IgTWVybGluIGlz IG5vdyBhdmFpbGFibGUNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQog IEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXRoZS1vY2FtbC00 LTEzLXByZXZpZXctZm9yLW1lcmxpbi1pcy1ub3ctYXZhaWxhYmxlLzg0MzYvNj4NCg0KDQpDb250 aW51aW5nIHRoaXMgdGhyZWFkLCBLYXRlIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhlIE9DYW1sIDQuMTMg cHJldmlldyBmb3Igb2NhbWwtbHNwLXNlcnZlciBpcyBub3cgYXZhaWxhYmxlIGFzIHdlbGwuDQoN CiAgVG8gaW5zdGFsbCBpdCBhbG9uZyB3aXRoIHRoZSBPQ2FtbCA0LjEzIHJjLCBwbGVhc2UgcmVm ZXIgdG8gdGhlIGZpcnN0DQogIHBvc3QuDQoNCiAgSWYgeW91IGVuY291bnRlciBhbnkgcHJvYmxl bXMgd2hpbGUgdXNpbmcgb2NhbWwtbHNwLXNlcnZlciwgcGxlYXNlDQogIGZlZWwgZnJlZSB0byBy ZXBvcnQgaXQgZGlyZWN0bHkgaW4NCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC1s c3AvcHVsbC81MDY+DQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYg eW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2FnZV0gYW5k IEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0IFt0aGUgYXJjaGl2 ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElmIHlvdSBhbHNv IHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vic2NyaWJl DQogIFtvbmxpbmVdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdl XSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZl XSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhl IGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0K W29ubGluZV0gPGh0dHA6Ly9saXN0cy5pZHlsbC5vcmcvbGlzdGluZm8vY2FtbC1uZXdzLXdlZWts eS8+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= 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 September 14 to 21, 2= 021.

opam-grep: search through the sources of all the packages in o= pam-repository

Kate announced

I've just released opam-grep.0.2.0 with quite a bit of change compared to t= he previous version. Here is the highlight:

  • Complete rewrite from shell script to OCaml, making it more portable
  • Use the faster ripgrep and ugrep over g= rep when available (suggestion by @Engil)
  • Use the progress library to show progress instead of a non= -portable/DIY spinner

See the changelog for the full list of relevant changes.

Big thanks to @CraigFe for the progress library (such a tre= at!) and to @dbuenzli for bos and cmdliner in particular, making it easy to do such rewrite :relaxed:

Hardcaml MIPS CPU Learning Project and Blog

Alexander (Sasha) Skvortsov announced

Hi everyone! We are excited to announce that we have completed this project= and blog. Progress has been slow these past few months due to work, internships, and college, but we=E2=80=99ve no= w released v1.0.0 on GitHub. We also published posts on:

Finally, we published a conclusion blog post, which wraps up some strengths/weaknesses of Hardcaml, as well as some takeaways o= n OCaml and blogging more generally.

Thank you to @andyman and @fyquah95 for building Hardcaml, and for helping = us out on GitHub issues! We really appreciate your time and suggestions.

Overall, we=E2=80=99ve come to the conclusion that Hardcaml is a much bette= r tool for hardware design than Verilog. This has been a great experience, and we walk away with a better understanding of ha= rdware, functional programming, and technical writing.

Puzzling through some GADT errors

Deep in this thread, gasche said

Not exactly what you are asking for, but @Octachron wrote an excellent chapter on GADTs in the OCaml manual, which could be recommended to people starting GADT programming. It explains why recursive functions on GADT need= "explicit polymorphic annotations" in less "implementation driven" terms.

(The chapter also demonstrates the new naming scheme for existential type v= ariables introduced by GADT constructors, which can help a lot working through type errors, but are still a bit heavy= and deserve a gentle introduction.)

octachron then added

I have only written the nomenclature part and a bit of the explanation for = recursive functions in this chapter, @garrigue is the author of most of this chapter.

Parany for multicore OCaml

UnixJunkie announced

There is now an implementation using multicore-OCaml in the 'domains' branc= h.

https://githu= b.com/UnixJunkie/parany/tree/domains

People are very welcome to give it a try and share the speedup they observe, especially compared to fork-based parallelism.

Thanks to @nilsbecker for having motivated me.

UnixJunkie later added

If you don't use the domains branch, then parany is using fork-based parall= elism. If you want to use the domains branch, you need to install multicore-ocaml = first:

opam switch create 4.12.0+domains
eval `opam config env`

OCaml 4.13.0, second release candidate

octachron announced

The release of OCaml 4.13.0 is expected for next week.

Since we had a native code generation bug fix and two minor configuration t= weaks since the first release candidate, we are publishing a second release candi= date. If you find any bugs, please report them here:

https://github.com/ocaml/= ocaml/issues

Happy hacking, Florian Angeletti for the OCaml team.

Installation instructions

The base compiler can be installed as an opam switch with the following com= mands

opam update
opam switch create 4.13.0~rc2 --repositories=3Ddefault,beta=3Dgit+https://g=
ithub.com/ocaml/ocaml-beta-repository.git

If you want to tweak the configuration of the compiler, you can switch to t= he option variant with:

opam update
opam switch create <switch_name> --packages=3Docaml-variants.4.13.0~r=
c2+options,<option_list>
--repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/ocaml-beta-rep=
ository.git

where <option_list> is a comma separated list of ocaml-option-* packa= ges. For instance, for a flambda and no-flat-float-array switch:

opam switch create 4.13.0~rc2+flambda+nffa
--packages=3Docaml-variants.4.13.0~rc2+options,ocaml-option-flambda,ocaml-o=
ption-no-flat-float-array
--repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/ocaml-beta-rep=
ository.git

All available options can be listed with "opam search ocaml-option".

The source code for the release candidate is also available at these addres= ses:

Changes since the first release candidate

  • #10626, #10628: Wrong relo= ading of the x86-64 instruction for integer multiplication by a constant, c= ausing the assembler to reject the ocamlopt-generated code. (Xavier Leroy, = report by Dave Aitken, review by Vincent Laviron)
  • #10176, #10632(new in rc2)= : By default, call the assembler through the C compiler driver (S=C3=A9bast= ien Hinderer, review by Gabriel Scherer, David Allsopp and Xavier Leroy)
  • #10451, #10635(new in rc2)= : Replace the use of iconv with a C utility to convert $(LIBDIR) to a C str= ing constant on Windows when building the runtime. Hardens the generation o= f the constant on Unix for paths with backslashes, double-quotes and newlin= es. (David Allsopp, review by Florian Angeletti and S=C3=A9bastien Hinderer= )

Unicode 14.0.0 update for Uucd, Uucp, Uunf and Uuseg

Daniel B=C3=BCnzli announced

Unicode 14.0.0 was released on the 14th of september.

It adds 838 new characters to the standard including, for our friends from = Central Asia, support for Old Uyghur. For information about all the other additions, see the announ= cement page.

Accordingly the libraries mentioned at the end of this message had to be up= dated, consult the individual release notes for details. Both Uucd and Uucp are incompatible releases sinces new = script and block enumerants had to be added.

Best,

Daniel

P.S. Though I'm not very fond of the concept, I recently enabled sponsors o= n my github account as an experiment. So I'd like to thanks my git= hub sponsors, @davesnx became the first one monday.

Become an Outreachy Mentor: support the growth and diversity o= f the OCaml community

Sonja Heinze announced

Hey all, I've just submitted an Outreachy project for the winter round. The= project is to write the basic ppx_deriving plugins in ppxlib; that is, the ones that don't already have a= version based on ppxlib. I think both, having them available to use, and having their code available as simple exa= mples of how to use Ppxlib.Deriving would be very nice! And improving ppxlib's documentation and finding simple issue= s on already existing PPXs to prepare for Outreachy, will be beneficial as well.

Of course, it's not clear if someone with the right interest comes along fo= r this project, but if we don't find an intern for it this round, I can just re-submit the same project next round.

Sonja Heinze

Btw, the deadline to submit projects was extended and is now Sept 23rd. So = the timeline in our post above is slightly outdated.

The OCaml 4.13 preview for Merlin is now available

Continuing this thread, Kate announced

The OCaml 4.13 preview for ocaml-lsp-server is now available as well.

To install it along with the OCaml 4.13 rc, please refer to the first post.

If you encounter any problems while using ocaml-lsp-server, please feel fre= e to report it directly in https://github.com/= ocaml/ocaml-lsp/pull/506

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.

--=-=-=--