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 C8DDE5D5 for ; Tue, 5 Apr 2022 11:50:08 +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=8jNALVIxK1iE9zv/t4aAa0jVS4Kj7UgkjvRM79gKZZU=; b=o2sXdP2EadyK1R6g4Unh9V1UeAAs6C/fPDobyUGFjntsxrcHmjTuvZTl RfdPdP0tsZRQo/h4QwLOzp5DdPE4EVIQQ8l6AGL/3PexCg9CJdA5C5DNu CNe1psZZALg6gn/ZXKNKMgeBEX42OZh0vK1Dp7IW/hQLttqrQyOSxUFDr U=; Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 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 ip4:192.134.164.0/24 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 X-IronPort-AV: E=Sophos;i="5.90,236,1643670000"; d="scan'208,217";a="30135209" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 05 Apr 2022 13:50:08 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id A64A1E002D; Tue, 5 Apr 2022 13:50:07 +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 22E82E002D for ; Tue, 5 Apr 2022 13:50:05 +0200 (CEST) IronPort-SDR: r+FIcn6IM/+G9PU0xXkTJmc6VZCbBouBIJ8qXZTPDQedejsRaaxR0HQo9cc9e0soDGJe4wOY6t Tg8f6k6fNS5OZtoXPva9prQDWYSrk9hEnkvhk8SMlMnlZIWlxjpMTvxym8w+nTcjXXWaPth2PO KyUkxLAvYPY8ePB8ByGEKbb3Wvtoe1IekXudtmf8xUFqZdDOLy0lnUFlC3uX2wmyPj20tmPdSy dG6iywG32IXAISQAZ1nFwwkuW5KKe98p970vjCyx8dfMwucfpDfz2JUECRJP7rk98xKF1OvoAa I2IAPvhjr0wRIzEgOaLnJ8Zz X-IPAS-Result: =?us-ascii?q?A0AAAwB9LExieyIeaIFaHQEBAQEJARIBBQUBghqBIVkuG?= =?us-ascii?q?QFkVysHCEQChFKJBogSiU+Geow2gREDTxABAwENLAEMBwECBAEBghKCdQIXB?= =?us-ascii?q?oRBAh4GAQUzEwECBAEBAQEDAgMBAQEBAQEDAQEFAQEBAgEBAgQEARMBAQ8LC?= =?us-ascii?q?QYHCwYQDgU8ZGQEgUsEgXQLNA2CNQwZg3ABGAEICkAlIwMUAQYDAgQNARcBF?= =?us-ascii?q?AoXARIUBoJrgxYFCpInnAyBMYEBg08BAwMCDgEOCYQZgWUNAhSBGYYUWEuDB?= =?us-ascii?q?AmECAIIHxCBVUSBFYJ6boJBCwwLAQEBAQEXfgocAQEIEg8tgmSCZQSZQA4LM?= =?us-ascii?q?wEPZRUFAQcDCRYBAQQeNgUeCgsBChgBGQQOCQQBOgsJAgsBkiohjy+JJIJdk?= =?us-ascii?q?UR7NAeDTIE8BgyIJ4EgjHmIIoVDoSyBYiGWPSCJHIEQCYJDiCCMGxMfBoUCg?= =?us-ascii?q?U4qXm8eAwkHMxowQ4JpCUUBAwINAQICAwECAQIJAQECkg8tgjeBdTuCXYJvP?= =?us-ascii?q?zQBAQEBCSsCBgEKAQEDCYVjAQEFEwsBhWaBXVoBAQ?= IronPort-PHdr: A9a23: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 cMUCkcXNA== IronPort-Data: A9a23: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 28Rm/+//rSsuEZp IronPort-HdrOrdr: A9a23:sf97F6kWtcA24AOP4K3/EUHayrLpDfI73DAbv31ZSRFFG/Fw8P re/sjztCWE6wr5PUtK8+xoV5PsfZqiz+8R3WB8B9uftWvd1ldAXbsD0WKK+VSJJ8SUzI9gPM lbHJSWAeeAaWRHsQ== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.90,236,1643670000"; d="scan'208,217";a="10622050" X-MGA-submission: =?us-ascii?q?MDFkPYmhHo2h/8uZmGw3ymRu1wsGAfz8v/Jhzx?= =?us-ascii?q?wAellulQ5rLs2jBwSvedflaB0ME4lsGn3ozgavmDwKoRIYPtTDSp6RI8?= =?us-ascii?q?VFmCdBSwjB2sLMVw5sZ5nU09UI8lqZRxORM7JDDx8uMsT6XTdSmFUFVh?= =?us-ascii?q?YPsPOGqhW0YiPC6CiXiFcGhA=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2022 13:50:04 +0200 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 DC334564DE4; Tue, 5 Apr 2022 13:50:01 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 05 Apr 2022 13:50:01 +0200 Message-ID: <87tub7wxzq.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Apr 5 13:50:02 2022 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.489244, queueID=675FD564DE7 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: 18736 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: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgTWFyY2ggMjkgdG8gQXByaWwNCjA1LCAyMDIyLg0KDQpUYWJsZSBvZiBDb250ZW50cw0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCnYw LjE1IHJlbGVhc2Ugb2YgSmFuZSBTdHJlZXQgcGFja2FnZXMNCkVtZWxsZVRWIFNob3cgLSAyMDIy DQpPcGVuIHNvdXJjZSBlZGl0b3IgZm9yIGlPUywgaVBhZE9TIGFuZCBtYWNPUw0KVGhlIG15c3Rl cmlvdXMgcG9pbnRlciBpbiB0aGUgcnVudGltZSBjbG9zdXJlIHJlcHJlc2VudGF0aW9uDQpPdGhl ciBPQ2FtbCBOZXdzDQpPbGQgQ1dODQoNCg0KdjAuMTUgcmVsZWFzZSBvZiBKYW5lIFN0cmVldCBw YWNrYWdlcw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4t djAtMTUtcmVsZWFzZS1vZi1qYW5lLXN0cmVldC1wYWNrYWdlcy85NjEyLzE+DQoNCg0KQXJzZW5p eSBBbGVrc2V5ZXYgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBXZSBh cmUgcGxlYXNlZCB0byBhbm5vdW5jZSB0aGUgdjAuMTUgcmVsZWFzZSBvZiBKYW5lIFN0cmVldCBw YWNrYWdlcyENCg0KICBUaGlzIHJlbGVhc2UgY29tZXMgd2l0aCA0MSBuZXcgcGFja2FnZXMsIGFu ZCBhIGxhcmdlIG51bWJlciBvZiBmaXhlcw0KICBhbmQgZW5oYW5jZW1lbnRzLiBUaGUgZG9jdW1l bnRhdGlvbiBmb3IgdGhlIGluZGl2aWR1YWwgcGFja2FnZXMgd2lsbA0KICBzb29uIGJlIGF2YWls YWJsZSBvbiBbdjMub2NhbWwub3JnL3BhY2thZ2VzXSwgYWZ0ZXIgc29tZSB0ZWNobmljYWwNCiAg aXNzdWVzIGFyZSBmaXhlZC4NCg0KICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZS1tYWlsIGhpZ2hs aWdodHMgdGhlIG1haW4gY2hhbmdlcyBzaW5jZSB0aGUNCiAgdjAuMTQgcmVsZWFzZS4NCg0KDQpb djMub2NhbWwub3JnL3BhY2thZ2VzXSA8aHR0cHM6Ly92My5vY2FtbC5vcmcvcGFja2FnZXM+DQoN Ck5vdGFibGUgY2hhbmdlcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWMDQoNClJlLXN0cnVjdHVyaW5nIG9mIGBDb3JlJy4NCuKUhOKUhOKUhOKUhOKUhOKUhOKU hOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhA0K DQogIFRoZSBtb3N0IG5vdGljZWFibGUgYnJlYWtpbmcgY2hhbmdlIGlzIHRoZSByZS1zdHJ1Y3R1 cmluZyBvZiBgQ29yZScuDQoNCiAgSW4gMC4xNCwgYENvcmUnIGlzIHNvbWV3aGF0IGJsb2F0ZWQg YW5kIGluY2x1ZGVzIG1hbnkgbW9kdWxlcyB0aGF0IGFyZQ0KICBiYXJlbHkgZXZlciB1c2VkLCBt YW55IG9mIHdoaWNoIGFyZSBVbml4LXNwZWNpZmljLiBJbiAwLjE1LCBtYW55IG9mDQogIHRob3Nl IG1vZHVsZXMgbW92ZWQgdG8gc2VwYXJhdGUgbGlicmFyaWVzLCBtb3N0IG9mIHRoZW0gdG8NCiAg cGFja2FnZX5jb3JlX3VuaXh+LCBhbmQgYGNvcmUnIGlzIG5vdyBtdWNoIHNtYWxsZXIgYW5kIG5v IGxvbmdlcg0KICBjb250YWlucyB1bml4LXNwZWNpZmljIGNvZGUuDQoNCiAgVGhlIG1hcHBpbmcg YmV0d2VlbiB0aGUgbmV3IGxpYnJhcmllcyBhbmQgdGhlIG9sZCBtb2R1bGVzIGNhbiBiZQ0KICBz dW1tYXJpemVkIGJ5IHRoZSBjb250ZW50cyBvZiBgQ29yZV9jb21wYXQnIGxpYnJhcnkgdjAuMTQ6 DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBtb2R1bGUgQ29tbWFuZF91bml4ID0gQ29yZS5D b21tYW5kDQogIOKUgiBtb2R1bGUgRGF0ZV91bml4ID0gQ29yZS5EYXRlDQogIOKUgiBtb2R1bGUg RmlsZW5hbWVfdW5peCA9IENvcmUuRmlsZW5hbWUNCiAg4pSCIG1vZHVsZSBTaWduYWxfdW5peCA9 IENvcmUuU2lnbmFsDQogIOKUgiBtb2R1bGUgU3lzX3VuaXggPSBDb3JlLlN5cw0KICDilIIgbW9k dWxlIENvcmVfdGhyZWFkID0gQ29yZS5UaHJlYWQNCiAg4pSCIG1vZHVsZSBUaW1lX3VuaXggPSBD b3JlLlRpbWUNCiAg4pSCIG1vZHVsZSBUaW1lX25zX3VuaXggPSBDb3JlLlRpbWVfbnMNCiAg4pSC IG1vZHVsZSBDb3JlX3VuaXggPSBDb3JlLlVuaXgNCiAg4pSCIG1vZHVsZSBWZXJzaW9uX3V0aWwg PSBDb3JlLlZlcnNpb25fdXRpbA0KICDilIIgDQogIOKUgiBtb2R1bGUgSW50ZXJ2YWxfbGliID0g c3RydWN0DQogIOKUgiAgIG1vZHVsZSBJbnRlcnZhbCA9IENvcmUuSW50ZXJ2YWwNCiAg4pSCICAg bW9kdWxlIEludGVydmFsX2ludGYgPSBDb3JlLkludGVydmFsX2ludGYNCiAg4pSCIGVuZA0KICDi lIIgDQogIOKUgiBtb2R1bGUgVGltZV9pbnRlcmZhY2UgPSBDb3JlLlRpbWVfY29tbW9uDQogIOKU lOKUgOKUgOKUgOKUgA0KDQoNCkFzeW5jOiBgTW9uaXRvci50cnlfd2l0aCcNCuKUhOKUhOKUhOKU hOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKU hOKUhOKUhA0KDQogIGBNb25pdG9yLnRyeV93aXRoJyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgY2hh bmdlZCB0aGUgZGVmYXVsdHMgZm9yDQogIHRoZWlyIGBydW4nIGFuZCBgcmVzdCcgcGFyYW1ldGVy cy4gIFRoZXkgdXNlZCB0byBkZWZhdWx0IHRvDQogIGB+fnJ1bjp+U2NoZWR1bGUgfnJlc3Q6fkxv Z34nLCBidXQgbm93IHRoZXkgZGVmYXVsdCB0byBgfn5ydW46fk5vdw0KICB+cmVzdDp+UmFpc2V+ Jy4NCg0KDQpNYW55IG90aGVyIGNoYW5nZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoZXJlIGFyZSBtYW55IGNoYW5nZXMgYW5k IGFkZGl0aW9ucyBhY3Jvc3MgMTMwKyBleGlzdGluZyBwYWNrYWdlcywNCiAgYW5kIHVuZm9ydHVu YXRlbHkgd2UgZG9uJ3QgbWFpbnRhaW4gYSBjaGFuZ2Vsb2cgdG8gbGlzdCB0aGVtIGFsbC4gIFRo ZQ0KICBjb2RlIGZvciBhbGwgb2Ygb3VyIHBhY2thZ2VzIGlzIG9uIG91ciBbZ2l0aHViXSwgYW5k IGlmIHlvdSdyZQ0KICBpbnRlcmVzdGVkIGluIHRoZSBkZXRhaWxzIG9mIHdoYXQgY2hhbmdlZCBp biBhIHBhcnRpY3VsYXIgcGFja2FnZSwgeW91DQogIGNhbiBpbnNwZWN0IHRoZSBkaWZmIGJldHdl ZW4gYnJhbmNoZXMgdjAuMTQgYW5kIHYwLjE1Lg0KDQoNCltnaXRodWJdIDxodHRwczovL2dpdGh1 Yi5jb20vamFuZXN0cmVldD4NCg0KDQpOZXcgcGFja2FnZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjA0KDQogIFtgYWJzdHJhY3RfYWxnZWJyYSddOiBBIHNtYWxsIGxpYnJh cnkgZGVzY3JpYmluZyBhYnN0cmFjdCBhbGdlYnJhDQogIGNvbmNlcHRzDQoNCiAgQSBsaWJyYXJ5 IGRlc2NyaWJpbmcgYWJzdHJhY3QgYWxnZWJyYSBjb25jZXB0cy4gQ3VycmVudGx5LCBpdCBpbmNs dWRlcw0KICBDb21tdXRhdGl2ZV9ncm91cCBhbmQgVmVjdG9yX3NwYWNlLg0KDQogIFtgYXN5bmNf cnBjX3dlYnNvY2tldCddOiBMaWJyYXJ5IHRvIHNlcnZlIGFuZCBkaXNwYXRjaCBBc3luYyBSUENz IG92ZXINCiAgd2Vic29ja2V0cw0KDQogIExpYnJhcnkgdG8gc2VydmUgYW5kIGRpc3BhdGNoIEFz eW5jIFJQQ3Mgb3ZlciB3ZWJzb2NrZXRzLg0KDQogIFJwY193ZWJzb2NrZXQgbWFrZXMgaXQgZWFz eSB0byBzZXJ2ZSBhbmQgc2VuZCBBc3luYyBSUENzIHdpdGgNCiAgSFRUUCtXZWJzb2NrZXQgdW5k ZXJseWluZyB0aGUgdHJhbnNwb3J0LiBJdCBhbHNvIHByb3ZpZGVzIGEgbWVjaGFuaXNtDQogIHRv IHNoYXJlIHRoZSBSUEMgaW1wbGVtZW50YXRpb25zIGJldHdlZW4gYSB2YW5pbGxhIFRDUCBzZXJ2 ZXIgYW5kIGENCiAgSFRUUCBzZXJ2ZXIuDQoNCiAgT24gdGhlIHNlcnZlciBzaWRlLCB0aGUgbGli cmFyeSBkZXRlY3RzIHdoZW4gYSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBpcw0KICBlc3RhYmxpc2hl ZCwgYW5kIHJvdXRlcyB0byBhbiBvcHRpb25hbGx5IHByb3ZpZGVkIHZhbmlsbGEgSFRUUCBoYW5k bGVyDQogIHdoZW4gbm9uLXdlYnNvY2tldCB0cmFmZmljIG9jY3Vycy4NCg0KICBbYGJpZ2RlY2lt YWwnXTogQXJiaXRyYXJ5LXByZWNpc2lvbiBkZWNpbWFsIGJhc2VkIG9uIFphcml0aA0KDQogIEEg aGlnaC1wcmVjaXNpb24gcmVwcmVzZW50YXRpb24gb2YgZGVjaW1hbCBudW1iZXJzIGFzIFttYW50 aXNzYSAqDQogIDEwXmV4cG9uZW50XSwgd2hlcmUgdGhlIG1hbnRpc3NhIGlzIGludGVybmFsbHkg YSBbQmlnaW50LnRdIGFuZCB0aGUNCiAgZXhwb25lbnQgaXMgYW4gW2ludF0uDQoNCiAgW2Bjb2h0 dHBfYXN5bmNfd2Vic29ja2V0J106IFdlYnNvY2tldCBsaWJyYXJ5IGZvciB1c2Ugd2l0aCBjb2h0 dHAgYW5kDQogIGFzeW5jDQoNCiAgV2Vic29ja2V0IGxpYnJhcnkgZm9yIHVzZSB3aXRoIGNvaHR0 cCBhbmQgYXN5bmMuDQoNCiAgQ29odHRwX2FzeW5jX3dlYnNvY2tldCBpcyBhIGZ1bGwtZmVhdHVy ZWQgc2VydmVyLXNpZGUgd2Vic29ja2V0DQogIGltcGxlbWVudGF0aW9uLCB1c2luZyBBc3luYyBh cyB0aGUgY29uY3VycmVuY3kgbGlicmFyeSwgYW5kIENvaHR0cCBmb3INCiAgSFRUUCBuZWdvdGlh dGlvbi4NCg0KICBJdCBpbXBsZW1lbnRzIGEgbGFyZ2UgcG9ydGlvbiBvZiBSRkM2NDQ1LiBUaGUg bGlicmFyeSBoYXMgYmVlbg0KICBoYXJkZW5lZCB3aXRoIG1hbnkgYXBwbGljYXRpb25zIHVzaW5n IGl0IGZvciBzZXZlcmFsIHllYXIsIGluDQogIGNvbmp1bmN0aW9uIHdpdGggYXN5bmMtanMgYW5k IGdvb2dsZS1jaHJvbWUuDQoNCiAgW2Bjb2h0dHBfc3RhdGljX2hhbmRsZXInXTogQSBsaWJyYXJ5 IGZvciBlYXNpbHkgY3JlYXRpbmcgYSBjb2h0dHANCiAgaGFuZGxlciBmb3Igc3RhdGljIGZpbGVz DQoNCiAgU2luZ2xlIHBhZ2UgaGFuZGxlcnMgYXJlIGhhbmRsZXJzIHRoYXQgc2VydmUgdXNlciBz cGVjaWZpZWQgSmF2YVNjcmlwdA0KICAgICBhbmQgY3NzIGZpbGVzIGFsb25nIHdpdGggYSBnZW5l cmF0ZWQgaW5kZXggcGFnZSB0aGF0IGxvYWRzIHRob3NlDQogICAgIGZpbGVzLg0KDQogIFtgY29y ZV9jb21wYXQnXTogQ29tcGF0aWJpbGl0eSBmb3IgY29yZSAwLjE0DQoNCiAgQ29tcGF0aWJpbGl0 eSB3cmFwcGVyIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSBjb2RlIGNvbXBhdGlibGUgd2l0 aA0KICBib3RoIENvcmUgMC4xNCBhbmQgMC4xNS4NCg0KICBbYGVudl9jb25maWcnXTogSGVscGVy IGxpYnJhcnkgZm9yIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBmcm9tIGFuDQogIGVudmlyb25t ZW50IHZhcmlhYmxlDQoNCiAgVGhlIEVudl9jb25maWcgbGlicmFyeSBpcyBhIGhlbHBlciBmb3Ig cmV0cmlldmluZyBsaWJyYXJ5IGFuZCBwcm9ncmFtDQogIGNvbmZpZ3VyYXRpb24gZnJvbSBhbiBl bnZpcm9ubWVudCB2YXJpYWJsZS4gSXRzIGdvYWwgaXMgdG8gbWFrZSBpdA0KICBlYXN5IHRvIG92 ZXJyaWRlIGEgY29uZmlndXJhdGlvbiB0aGF0IGlzIGxvYWRlZCBmcm9tIGRpc2ssIGNvbXB1dGVk LA0KICBvciBlbWJlZGRlZCBpbiBhIGxpYnJhcnkuDQoNCiAgW2BmaWxlX3BhdGgnXTogQSBsaWJy YXJ5IGZvciB0eXBlZCBtYW5pcHVsYXRpb24gb2YgVU5JWC1zdHlsZSBmaWxlDQogIHBhdGhzDQoN CiAgQSBsaWJyYXJ5IGZvciB0eXBlZCBtYW5pcHVsYXRpb24gb2YgVU5JWC1zdHlsZSBmaWxlIHBh dGhzLg0KDQogIFtgZnV6enlfbWF0Y2gnXTogQSBsaWJyYXJ5IGZvciBmdXp6eSBzdHJpbmcgbWF0 Y2hpbmcNCg0KICBBIGxpYnJhcnkgZm9yIGZ1enp5IHN0cmluZyBtYXRjaGluZw0KDQogIFtgZnpm J106IEEgbGlicmFyeSBmb3IgcnVubmluZyB0aGUgZnpmIGNvbW1hbmQgbGluZSB0b29sDQoNCiAg QSBsaWJyYXJ5IGZvciBydW5uaW5nIHRoZSBmemYgY29tbWFuZCBsaW5lIGZ1enp5IG1hdGNoZXIN Cg0KICBbYGhhcmRjYW1sX2MnXTogSGFyZGNhbWwgQyBTaW11bGF0aW9uIEJhY2tlbmQNCg0KICBB IGZhc3QgQy1iYXNlZCBzaW11bGF0aW9uIGJhY2tlbmQgZm9yIEhhcmRjYW1sIGNpcmN1aXRzLg0K DQogIFRoZSBsaWJyYXJ5IHRyYW5zcGFyZW50bHkgY29tcGlsZXMgYSBIYXJkY2FtbCBDaXJjdWl0 IHRvIEMgY29kZSwgd2hpY2gNCiAgaXMgaW4gdHVybiBjb21waWxlZCBhbmQgbGlua2VkIGludG8g dGhlIHJ1bm5pbmcgZXhlY3V0YWJsZS4gVGhlDQogIGdlbmVyYXRlZCBzaW11bGF0aW9uIG9iamVj dCBjYW4gYmUgdXNlZCBsaWtlIGFueSBvdGhlciBjeWNsZXNpbQ0KICBzaW11bGF0aW9uLg0KDQog IFtgaGFyZGNhbWxfY2lyY3VpdHMnXTogSGFyZGNhbWwgQ2lyY3VpdHMNCg0KICBBIHNtYWxsIGxp YnJhcnkgb2YgdXNlZnVsL2ludGVyZXN0aW5nIEhhcmRjYW1sIGNpcmN1aXRzLg0KDQogIFtgaGFy ZGNhbWxfZml4ZWRfcG9pbnQnXTogSGFyZGNhbWwgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYw0KDQog IFNpZ25lZCBhbmQgVW5zaWduZWQgZml4ZWQgcG9pbnQgb3BlcmF0aW9ucywgd2l0aCBhIGZ1bGwg Y29tcGxlbWVudCBvZg0KICByb3VuZGluZyBhbmQgb3ZlcmZsb3cgZnVuY3Rpb25hbGl0eS4NCg0K ICBbYGhhcmRjYW1sX29mX3Zlcmlsb2cnXTogQ29udmVydCBWZXJpbG9nIHRvIGEgSGFyZGNhbWwg ZGVzaWduDQoNCiAgVGhlIG9wZW5zb3VyY2Ugc3ludGhlc2lzIHRvb2wgeW9zeXMgaXMgdXNlZCB0 byBjb252ZXJ0IGEgdmVyaWxvZw0KICBkZXNpZ24gdG8gYSBKU09OIGJhc2VkIG5ldGxpc3QgcmVw cmVzZW50YXRpb24uIFRoaXMgbGlicmFyeSBjYW4gbG9hZA0KICB0aGUgSlNPTiBuZXRsaXN0IGFu ZCBidWlsZCBhIGhhcmRjYW1sIGNpcmN1aXQuDQoNCiAgQ29kZSBjYW4gYWxzbyBiZSBnZW5lcmF0 ZWQgdG8gd3JhcCB0aGUgY29udmVyc2lvbiBwcm9jZXNzIHVzaW5nDQogIEhhcmRjYW1sIGludGVy ZmFjZXMuDQoNCiAgW2BoYXJkY2FtbF9zdGVwX3Rlc3RiZW5jaCddOiBIYXJkY2FtbCBUZXN0YmVu Y2ggTW9uYWQNCg0KICBBIG1vbmFkIGZvciBpbnRlcmFjdGluZyB3aXRoIEhhcmRjYW1sLkN5Y2xl c2ltIGJhc2VkIHNpbXVsYXRpb25zLg0KDQogIEFsbG93cyBtdWx0aXBsZSBjb250cm9sIHRocmVh ZHMgdG8gaW50ZXJhY3Qgd2l0aCBhIHNpbXVsYXRpb24gbW9kdWxlLA0KICBhbGwgb2Ygd2hpY2gg YXJlIHN5bmNocm9uaXNlZCB0byB0aGUgc3lzdGVtIGNsb2NrLg0KDQogIFtgaGFyZGNhbWxfdmVy aWZ5J106IEhhcmRjYW1sIFZlcmlmaWNhdGlvbiBUb29scw0KDQogIFRvb2xzIGZvciB2ZXJpZnlp bmcgcHJvcGVydGllcyBvZiBIYXJkY2FtbCBjaXJjdWl0cy4NCg0KICBDb21iaW5hdGlvbmFsIGNp cmN1aXRzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gJ2Nvbmp1bmN0aXZlIG5vcm1hbCBmb3JtJw0KICBm b3IgaW5wdXQgaW50byBTQVQgc29sdmVycyB2aWEgRElNQUMgZmlsZXMuIFN1cHBvcnQgZm9yIGEg ZmV3DQogIG9wZW5zb3VyY2Ugc29sdmVycyBpcyBpbnRlZ3JhdGVkIC0gbWluaXNhdCwgcGljb3Nh dCwgWjMgLSBqdXN0IGVuc3VyZQ0KICB0aGV5IGFyZSBpbiB5b3VyIFBBVEguDQoNCiAgQ2lyY3Vp dHMgY2FuIGFsc28gYmUgY29udmVydGVkIHRvIE51U01WIGZvcm1hdCBmb3IgYWR2YW5jZWQgYm91 bmRlZA0KICBhbmQgdW5ib3VuZGVkIG1vZGVsIGNoZWNraW5nIHRhc2tzLg0KDQogIFtgaGFyZGNh bWxfdmVyaWxhdG9yJ106IEhhcmRjYW1sIFZlcmlsYXRvciBTaW11bGF0aW9uIEJhY2tlbmQNCg0K ICBWZXJ5IGZhc3QgdmVyaWxhdG9yLWJhc2VkIHNpbXVsYXRpb25zIG9mIEhhcmRjYW1sIGNpcmN1 aXRzLg0KDQogIFRoaXMgbGlicmFyeSB0cmFuc3BhcmVudGx5IGNvbXBpbGVzIGEgdmVyaWxhdG9y LWJhc2VkIHNoYXJlZCBsaWJyYXJ5LA0KICBhbmQgbGlua3MgaXQgYmFjayB0byB0aGUgcnVubmlu ZyBleGVjdXRhYmxlIHRvIGJlIHVzZWQgYXMgYSBDeWNsZXNpbQ0KICBzaW11bGF0aW9uLg0KDQog IFtgaGFyZGNhbWxfeGlsaW54J106IEhhcmRjYW1sIHdyYXBwZXJzIGZvciBYaWxpbnggbWVtb3J5 IHByaW1pdGl2ZXMNCg0KICBUaGUgSGFyZGNhbWxfeGlsaW54IGxpYnJhcnkgcHJvdmlkZXMgd3Jh cHBlcnMgZm9yIFhpbGlueCBzcGVjaWZpYyBSQU0NCiAgYW5kIEZJRk8gcHJpbWl0aXZlIGJsb2Nr cy4gSW4gbWFueSBjYXNlcyBhIHNpbXVsYXRpb24gbW9kZWwgaXMNCiAgcHJvdmlkZWQuDQoNCiAg VGhlIGBTeW50aGVzaXMnIG1vZHVsZSBpbXBsZW1lbnRzIHZhcmlvdXMgYXJpdGhtZXRpYyBhbmQg bG9naWNhbCBSVEwNCiAgY29tcG9uZW50cyB3aXRoIFhpbGlueCBMVVQgcHJpbWl0aXZlcy4NCg0K ICBbYGhhcmRjYW1sX3hpbGlueF9jb21wb25lbnRzJ106IEhhcmRjYW1sIFhpbGlueCBjb21wb25l bnQgZGVmaW5pdGlvbnMNCg0KICBBIHRvb2wgZm9yIHJlYWRpbmcgWGlsaW54IFZIREwgVW5pc2lt IGFuZCBYUE0gY29tcG9uZW50IGRlZmluaXRpb25zDQogIGZyb20gYSBWaXZhZG8gaW5zdGFsbGF0 aW9uIGFuZCBnZW5lcmF0aW5nIEhhcmRjYW1sIGludGVyZmFjZXMNCiAgYXV0b21hdGljYWxseS4N Cg0KICBbYGhleF9lbmNvZGUnXTogSGV4YWRlY2ltYWwgZW5jb2RpbmcgbGlicmFyeQ0KDQogIFRo aXMgbGlicmFyeSBpbXBsZW1lbnRzIGhleGFkZWNpbWFsIGVuY29kaW5nIGFuZCBkZWNvZGluZw0K DQogIFtgaGdfbGliJ106IEEgbGlicmFyeSB0aGF0IHdyYXBzIHRoZSBNZXJjdXJpYWwgY29tbWFu ZCBsaW5lIGludGVyZmFjZQ0KDQogIEEgbGlicmFyeSB0aGF0IHdyYXBzIHRoZSBNZXJjdXJpYWwg Y29tbWFuZCBsaW5lIGludGVyZmFjZS4NCg0KICBbYGludF9yZXByJ106IEludGVnZXJzIG9mIHZh cmlvdXMgd2lkdGhzDQoNCiAgSW50ZWdlcnMgb2YgdmFyaW91cyB3aWR0aHMuDQoNCiAgW2Bqc29u YWYnXTogQSBsaWJyYXJ5IGZvciBwYXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBzZXJpYWxpemlu ZyBkYXRhDQogIHN0cnVjdHVyZWQgYXMgSlNPTg0KDQogIEEgbGlicmFyeSBmb3IgcGFyc2luZywg bWFuaXB1bGF0aW5nLCBhbmQgc2VyaWFsaXppbmcgZGF0YSBzdHJ1Y3R1cmVkDQogIGFzIEpTT04u DQoNCiAgW2BrcmInXTogQSBsaWJyYXJ5IGZvciB1c2luZyBLZXJiZXJvcyBmb3IgYm90aCBScGMg YW5kIFRjcA0KICBjb21tdW5pY2F0aW9uDQoNCiAgSmFuZSBTdHJlZXQncyBsaWJyYXJ5IGZvciBL ZXJiZXJpemluZyBSUEMgY29ubmVjdGlvbnMgc28gdGhhdA0KICDigKIgdGhlIHNlcnZlciBnZXRz IGFuIGF1dGhlbnRpY2F0ZWQgcHJpbmNpcGFsIChpLmUuIHVzZXJuYW1lKSB3aXRoDQogICAgZXZl cnkgaW5jb21pbmcgY29ubmVjdGlvbiwgYW5kDQogIOKAoiBSUEMgY29tbXVuaWNhdGlvbiBtYXkg YmUgZW5jcnlwdGVkLCBpZiBuZWNlc3NhcnkuDQoNCiAgW2BtYWdpYy10cmFjZSddOiBFYXN5IElu dGVsIFByb2Nlc3NvciBUcmFjZSBWaXN1YWxpemVyDQoNCiAgTWFnaWMtdHJhY2UgbWFrZXMgaXQg ZWFzeSB0byByZWNvcmQgYW5kIHZpc3VhbGl6ZSBJbnRlbCBQcm9jZXNzb3INCiAgICAgIFRyYWNl IGRhdGEgZm9yIGRlYnVnZ2luZyB0cmlja3kgcGVyZm9ybWFuY2UgaXNzdWVzLg0KDQogIFtgb2Nh bWwtZW1iZWQtZmlsZSddOiBGaWxlcyBjb250ZW50cyBhcyBtb2R1bGUgY29uc3RhbnRzDQoNCiAg RW1iZWQtZmlsZSB0YWtlcyBzb21lIGZpbGVzIGFuZCBnZW5lcmF0ZXMgY29kZSBmb3IgYW4gT0Nh bWwgbW9kdWxlDQogIGRlZmluaW5nIHN0cmluZyBjb25zdGFudHMgY29udGFpbmluZyB0aGUgY29u dGVudHMgb2YgdGhvc2UgZmlsZXMuDQoNCiAgW2BvY2FtbF9pbnRyaW5zaWNzJ106IEludHJpbnNp Y3MNCg0KICBQcm92aWRlcyBmdW5jdGlvbnMgdG8gaW52b2tlIGFtZDY0IGluc3RydWN0aW9ucyAo c3VjaCBhcw0KICAgICAgIGNseixwb3BjbnQscmR0c2MscmRwbWMpIHdoZW4gYXZhaWxhYmxlLCBv ciBjb21wYXRpYmxlIHNvZnR3YXJlDQogICAgICAgaW1wbGVtZW50YXRpb24gb24gb3RoZXIgdGFy Z2V0cy4NCg0KICBbYG9jYW1sLXByb2JlcyddOiBVU0RUIHByb2JlcyBmb3IgT0NhbWw6IGNvbW1h bmQgbGluZSB0b29sDQoNCiAgQSB0b29sIGZvciBjb250cm9sbGluZyB1c2VyLXNwYWNlIHN0YXRp Y2FsbHktZGVmaW5lZCB0cmFjaW5nIHByb2Jlcw0KICBmb3IgT0NhbWwuICBFeHBlcmltZW50YWwu DQoNCiAgW2BwcHhfY3NzJ106IEEgcHB4IHRoYXQgdGFrZXMgaW4gY3NzIHN0cmluZ3MgYW5kIHBy b2R1Y2VzIGEgbW9kdWxlIGZvcg0KICBhY2Nlc3NpbmcgdGhlIHVuaXF1ZSBuYW1lcyBkZWZpbmVk IHdpdGhpbg0KDQogIEEgcHB4IHRoYXQgdGFrZXMgaW4gY3NzIHN0cmluZ3MgYW5kIHByb2R1Y2Vz IGEgbW9kdWxlIGZvciBhY2Nlc3NpbmcNCiAgdGhlIHVuaXF1ZSBuYW1lcyBkZWZpbmVkIHdpdGhp bi4NCg0KICBbYHBweF9kaXNhYmxlX3VudXNlZF93YXJuaW5ncyddOiBFeHBhbmRzIFtAZGlzYWJs ZV91bnVzZWRfd2FybmluZ3NdDQogIGludG8gW0B3YXJuaW5nIFwiLTIwLTI2LTMyLTMzLTM0LTM1 LTM2LTM3LTM4LTM5LTYwLTY2LTY3XCJdDQoNCiAgUGFydCBvZiB0aGUgSmFuZSBTdHJlZXQncyBQ UFggcmV3cml0ZXJzIGNvbGxlY3Rpb24uDQoNCiAgW2BwcHhfaWdub3JlX2luc3RydW1lbnRhdGlv biddOiBJZ25vcmUgSmFuZSBTdHJlZXQgc3BlY2lmaWMNCiAgaW5zdHJ1bWVudGF0aW9uIGV4dGVu c2lvbnMNCg0KICBJZ25vcmUgSmFuZSBTdHJlZXQgc3BlY2lmaWMgaW5zdHJ1bWVudGF0aW9uIGV4 dGVuc2lvbnMgZnJvbSBpbnRlcm5hbA0KICAgICBQUFhzIG9yIGNvbXBpbGVyIGZlYXR1cmVzIG5v dCB5ZXQgdXBzdHJlYW1lZC4NCg0KICBbYHBweF9qc29uYWZfY29udiddOiBbQEBkZXJpdmluZ10g cGx1Z2luIHRvIGdlbmVyYXRlIEpzb25hZiBjb252ZXJzaW9uDQogIGZ1bmN0aW9ucw0KDQogIFBh cnQgb2YgdGhlIEphbmUgU3RyZWV0J3MgUFBYIHJld3JpdGVycyBjb2xsZWN0aW9uLg0KDQogIFtg cHB4X3R5cGVkX2ZpZWxkcyddOiBHQURULWJhc2VkIGZpZWxkIGFjY2Vzc29ycyBhbmQgdXRpbGl0 aWVzDQoNCiAgUGFydCBvZiB0aGUgSmFuZSBTdHJlZXQncyBQUFggcmV3cml0ZXJzIGNvbGxlY3Rp b24uDQoNCiAgW2BwcHhfdHlwZV9kaXJlY3RlZF92YWx1ZSddOiBHZXQgW0BAZGVyaXZpbmddLXN0 eWxlIGdlbmVyYXRpb24gb2YNCiAgdHlwZS1kaXJlY3RlZCB2YWx1ZXMgd2l0aG91dCB3cml0aW5n IGEgcHB4DQoNCiAgYFBweF90eXBlX2RpcmVjdGVkX3ZhbHVlJyBpcyBhIHBweCB0aGF0IGRvZXMg YFtAQGRlcml2aW5nXSctc3R5bGUNCiAgZ2VuZXJhdGlvbiBvZiB0eXBlLWRpcmVjdGVkIHZhbHVl cyBiYXNlZCBvbiB1c2VyLXByb3ZpZGVkIG1vZHVsZXMuIFRoZQ0KICB1c2VyLXByb3ZpZGVkIG1v ZHVsZXMgdGVsbCBgcHB4X3R5cGVfZGlyZWN0ZWRfdmFsdWUnIGhvdyB0byBjb21wb3NlDQogIHR5 cGUtZGlyZWN0ZWQgdmFsdWVzIChmb3IgZXhhbXBsZSwgY29tYmluZSB0eXBlLWRpcmVjdGVkIHZh bHVlcyBvZiB0aGUNCiAgZmllbGRzIG9mIGEgcmVjb3JkIHRvIGZvcm0gYSB0eXBlLWRpcmVjdGVk IHZhbHVlIGZvciB0aGUgcmVjb3JkDQogIGl0c2VsZikuDQoNCiAgVGhpcyBhbGxvd3MgYSB3aWRl IHZhcmlldHkgb2YgUFBYcyBzdWNoIGFzIGBwcHhfc2V4cF9jb252JywNCiAgYHBweF9jb21wYXJl JywgYHBweF9lbnVtZXJhdGUnLCBldGMuIHRvIGJlIGltcGxlbWVudGVkIHdpdGgNCiAgYHBweF90 eXBlX2RpcmVjdGVkX3ZhbHVlJywgYnV0IHdpdGggc29tZSBydW50aW1lIGNvc3QuDQoNCiAgVGhp cyBQUFggY3VycmVudGx5IHN1cHBvcnRzIGRlcml2aW5nIHR5cGUtZGlyZWN0ZWQgdmFsdWVzIGZv ciByZWNvcmRzLA0KICBvcmRpbmFyeSAmIHBvbHltb3JwaGljIHZhcmlhbnRzIGFuZCB0dXBsZXMu IEl0IGFsc28gc3VwcG9ydHMgY3VzdG9tDQogIHVzZXItZGVmaW5lZCBhdHRyaWJ1dGVzIG9uIHJl Y29yZCBhbmQgdmFyaWFudCBmaWVsZHMuDQoNCiAgW2Bwcm9mdW5jdG9yJ106IEEgbGlicmFyeSBw cm92aWRpbmcgYSBzaWduYXR1cmUgZm9yIHNpbXBsZSBwcm9mdW5jdG9ycw0KICBhbmQgdHJhdmVy c2FsIG9mIGEgcmVjb3JkDQoNCiAgVGhpcyBpcyBhIHZlcnkgc21hbGwgbGlicmFyeSB3aGljaCBw cm92aWRlcyBhIHNpZ25hdHVyZSBmb3IgcHJvZnVuY3Rvcg0KICB0eXBlcyBhbmQgb3BlcmF0aW9u cyB3aGljaCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBhIHJlY29yZCB3aXRoIHRoZW0NCiAgYmFz ZWQgb24gcmVjb3JkX2J1aWxkZXIgYW5kIHRoZSBgcHB4X2ZpZWxkcycgc3ludGF4IGV4dGVuc2lv bi4NCg0KICBbYHJlZGlzLWFzeW5jJ106IFJlZGlzIGNsaWVudCBmb3IgQXN5bmMgYXBwbGljYXRp b25zDQoNCiAgQSBjbGllbnQgbGlicmFyeSBmb3IgUmVkaXMgdmVyc2lvbnMgNiBhbmQgaGlnaGVy Lg0KDQogIFByb3ZpZGVzIGEgc3Ryb25nbHktdHlwZWQgQVBJIHdpdGggdHJhbnNwYXJlbnQgKGRl KXNlcmlhbGl6YXRpb24gZm9yDQogIGFwcGxpY2F0aW9uLWRlZmluZWQgdHlwZXMuDQoNCiAgU3Vw cG9ydHMgY2xpZW50IHRyYWNraW5nIGFuZCBpbnRlcm5hbGx5IHVzZXMgdGhlIFJFU1AzIHByb3Rv Y29sLg0KDQogIFtgc2V4cF9kaWZmJ106IENvZGUgZm9yIGNvbXB1dGluZyB0aGUgZGlmZiBvZiB0 d28gc2V4cHMNCg0KICBUaGUgY29kZSBiZWhpbmQgdGhlIFtkaWZmXSBzdWJjb21tYW5kIG9mIHRo ZSBKYW5lIFN0cmVldCdzIFtzZXhwXQ0KICBjb21tYW5kIGxpbmUgdG9vbC4NCg0KICBbYHNleHBf Z3JhbW1hciddOiBTZXhwIGdyYW1tYXIgaGVscGVycw0KDQogIEhlbHBlcnMgZm9yIG1hbmlwdWxh dGluZyBbU2V4cGxpYi5TZXhwX2dyYW1tYXJdIHZhbHVlcy4NCg0KICBbYHNleHBfc3RyaW5nX3F1 aWNrY2hlY2snXTogUXVpY2tjaGVjayBoZWxwZXJzIGZvciBzdHJpbmdzIHBhcnNpbmcgdG8NCiAg c2V4cHMNCg0KICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcXVpY2tjaGVjayBnZW5lcmF0b3JzLCBo ZWxwZXJzLCBhbmQgc2hyaW5rZXJzDQogIGZvciBxdWlja2NoZWNrLWJhc2VkIHRlc3RzIHRoYXQg d2lzaCB0byBleGVyY2lzZSB0aGUgY29uY3JldGUgc3ludGF4DQogIG9mIHNleHBzLCBpbmNsdWRp bmcgZXNjYXBlIHNlcXVlbmNlcyBhbmQgY29tbWVudHMuDQoNCiAgW2B0cmFjaW5nJ106IFRyYWNp bmcgbGlicmFyeQ0KDQogIFV0aWxpdGllcyBmb3IgY3JlYXRpbmcgYW5kIHBhcnNpbmcgdHJhY2Vz IGluIEZ1Y2hzaWEgVHJhY2UgRm9ybWF0Lg0KDQogIFtgdXNlcm5hbWVfa2VybmVsJ106IEFuIGlk ZW50aWZpZXIgZm9yIGEgdXNlcg0KDQogIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciBhIHVz ZXIsIHR5cGljYWxseSBhIFVOSVggdXNlcm5hbWUNCg0KDQpbYGFic3RyYWN0X2FsZ2VicmEnXSA8 aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvYWJzdHJhY3RfYWxnZWJyYT4NCg0KW2Bhc3lu Y19ycGNfd2Vic29ja2V0J10NCjxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9hc3luY19y cGNfd2Vic29ja2V0Pg0KDQpbYGJpZ2RlY2ltYWwnXSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVz dHJlZXQvYmlnZGVjaW1hbD4NCg0KW2Bjb2h0dHBfYXN5bmNfd2Vic29ja2V0J10NCjxodHRwczov L2dpdGh1Yi5jb20vamFuZXN0cmVldC9jb2h0dHBfYXN5bmNfd2Vic29ja2V0Pg0KDQpbYGNvaHR0 cF9zdGF0aWNfaGFuZGxlciddDQo8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvY29odHRw X3N0YXRpY19oYW5kbGVyPg0KDQpbYGNvcmVfY29tcGF0J10gPGh0dHBzOi8vZ2l0aHViLmNvbS9q YW5lc3RyZWV0L2NvcmVfY29tcGF0Pg0KDQpbYGVudl9jb25maWcnXSA8aHR0cHM6Ly9naXRodWIu Y29tL2phbmVzdHJlZXQvZW52X2NvbmZpZz4NCg0KW2BmaWxlX3BhdGgnXSA8aHR0cHM6Ly9naXRo dWIuY29tL2phbmVzdHJlZXQvZmlsZV9wYXRoPg0KDQpbYGZ1enp5X21hdGNoJ10gPGh0dHBzOi8v Z2l0aHViLmNvbS9qYW5lc3RyZWV0L2Z1enp5X21hdGNoPg0KDQpbYGZ6ZiddIDxodHRwczovL2dp dGh1Yi5jb20vamFuZXN0cmVldC9memY+DQoNCltgaGFyZGNhbWxfYyddIDxodHRwczovL2dpdGh1 Yi5jb20vamFuZXN0cmVldC9oYXJkY2FtbF9jPg0KDQpbYGhhcmRjYW1sX2NpcmN1aXRzJ10gPGh0 dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L2hhcmRjYW1sX2NpcmN1aXRzPg0KDQpbYGhhcmRj YW1sX2ZpeGVkX3BvaW50J10NCjxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9oYXJkY2Ft bF9maXhlZF9wb2ludD4NCg0KW2BoYXJkY2FtbF9vZl92ZXJpbG9nJ10NCjxodHRwczovL2dpdGh1 Yi5jb20vamFuZXN0cmVldC9oYXJkY2FtbF9vZl92ZXJpbG9nPg0KDQpbYGhhcmRjYW1sX3N0ZXBf dGVzdGJlbmNoJ10NCjxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9oYXJkY2FtbF9zdGVw X3Rlc3RiZW5jaD4NCg0KW2BoYXJkY2FtbF92ZXJpZnknXSA8aHR0cHM6Ly9naXRodWIuY29tL2ph bmVzdHJlZXQvaGFyZGNhbWxfdmVyaWZ5Pg0KDQpbYGhhcmRjYW1sX3ZlcmlsYXRvciddDQo8aHR0 cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvaGFyZGNhbWxfdmVyaWxhdG9yPg0KDQpbYGhhcmRj YW1sX3hpbGlueCddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9oYXJkY2FtbF94aWxp bng+DQoNCltgaGFyZGNhbWxfeGlsaW54X2NvbXBvbmVudHMnXQ0KPGh0dHBzOi8vZ2l0aHViLmNv bS9qYW5lc3RyZWV0L2hhcmRjYW1sX3hpbGlueF9jb21wb25lbnRzPg0KDQpbYGhleF9lbmNvZGUn XSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvaGV4X2VuY29kZT4NCg0KW2BoZ19saWIn XSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvaGdfbGliPg0KDQpbYGludF9yZXByJ10g PGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L2ludF9yZXByPg0KDQpbYGpzb25hZiddIDxo dHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9qc29uYWY+DQoNCltga3JiJ10gPGh0dHBzOi8v Z2l0aHViLmNvbS9qYW5lc3RyZWV0L2tyYj4NCg0KW2BtYWdpYy10cmFjZSddIDxodHRwczovL2dp dGh1Yi5jb20vamFuZXN0cmVldC9tYWdpYy10cmFjZT4NCg0KW2BvY2FtbC1lbWJlZC1maWxlJ10g PGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L29jYW1sLWVtYmVkLWZpbGU+DQoNCltgb2Nh bWxfaW50cmluc2ljcyddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9vY2FtbF9pbnRy aW5zaWNzPg0KDQpbYG9jYW1sLXByb2JlcyddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVl dC9vY2FtbC1wcm9iZXM+DQoNCltgcHB4X2NzcyddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0 cmVldC9wcHhfY3NzPg0KDQpbYHBweF9kaXNhYmxlX3VudXNlZF93YXJuaW5ncyddDQo8aHR0cHM6 Ly9naXRodWIuY29tL2phbmVzdHJlZXQvcHB4X2Rpc2FibGVfdW51c2VkX3dhcm5pbmdzPg0KDQpb YHBweF9pZ25vcmVfaW5zdHJ1bWVudGF0aW9uJ10NCjxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0 cmVldC9wcHhfaWdub3JlX2luc3RydW1lbnRhdGlvbj4NCg0KW2BwcHhfanNvbmFmX2NvbnYnXSA8 aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvcHB4X2pzb25hZl9jb252Pg0KDQpbYHBweF90 eXBlZF9maWVsZHMnXSA8aHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvcHB4X3R5cGVkX2Zp ZWxkcz4NCg0KW2BwcHhfdHlwZV9kaXJlY3RlZF92YWx1ZSddDQo8aHR0cHM6Ly9naXRodWIuY29t L2phbmVzdHJlZXQvcHB4X3R5cGVfZGlyZWN0ZWRfdmFsdWU+DQoNCltgcHJvZnVuY3RvciddIDxo dHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9wcm9mdW5jdG9yPg0KDQpbYHJlZGlzLWFzeW5j J10gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3JlZGlzLWFzeW5jPg0KDQpbYHNleHBf ZGlmZiddIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0cmVldC9zZXhwX2RpZmY+DQoNCltgc2V4 cF9ncmFtbWFyJ10gPGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NleHBfZ3JhbW1hcj4N Cg0KW2BzZXhwX3N0cmluZ19xdWlja2NoZWNrJ10NCjxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0 cmVldC9zZXhwX3N0cmluZ19xdWlja2NoZWNrPg0KDQpbYHRyYWNpbmcnXSA8aHR0cHM6Ly9naXRo dWIuY29tL2phbmVzdHJlZXQvdHJhY2luZz4NCg0KW2B1c2VybmFtZV9rZXJuZWwnXSA8aHR0cHM6 Ly9naXRodWIuY29tL2phbmVzdHJlZXQvdXNlcm5hbWVfa2VybmVsPg0KDQoNCkVtZWxsZVRWIFNo b3cgLSAyMDIyDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90 L2VtZWxsZXR2LXNob3ctMjAyMi85NjEzLzE+DQoNCg0KRGF2aWQgU2FuY2hvIGFubm91bmNlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSADQoNCiAgSSdtIGNyZWF0aW5nIGEgcG9zdCBhcyBhIGhlYWRlciBmcm9tIHRoaXMg c2Vhc29uIG9mICpFbWVsbGVUViogaW4NCiAgMjAyMC4gV2lsbCB1c2UgdGhpcyBwb3N0IHRvIHNo YXJlIGFubm91bmNlbWVudHMsIG5ldyBzaG93cywgZ2F0aGVyDQogIGZlZWRiYWNrIGFuZCBpbnZp dGUgeW91IHRvIHdhdGNoIGFuZCBmb2xsb3cNCiAgW2h0dHBzOi8vd3d3LnR3aXRjaC50di9lbWVs bGV0dl0hDQoNCiAgRm9yIHRoZSBvbmVzIHdobyBkb2Vzbid0IGtub3cgdXMsIEl0J3MgYSBzdHJl YW1pbmcgc2hvdyB0aGF0IHdpbGwNCiAgaGFwcGVuIG9uY2UgcGVyIG1vbnRoIGFuZCB3aWxsIHRy eSB0byBpbnRlcnZpZXcgYW5kIHRhbGsgY2FzdWFsbHkNCiAgYWJvdXQgT0NhbWwsIFJlYXNvbiwg UmVTY3JpcHQgYW5kIHRoZWlyIGNvbW11bml0aWVzLiBJbnZpdGluZw0KICBpbnRlcmVzdGluZyBl bmdpbmVlcnMgYW5kIGFzayBzaWxseSBxdWVzdGlvbnMgYWJvdXQgbGl0ZXJhbGx5DQogIGFueXRo aW5nLg0KDQogIElmIGNhbid0IGF0dGVuZCBsaXZlLCB3ZSBwdWJsaXNoIHRoZSBWT0QgaW4geW91 dHViZSB1bmRlcg0KICBbaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ3ZWVmZDYTct bnpTdUNkTUtYbk5KTlFdLiAgWW91IGNhbg0KICByZS13YXRjaCBzb21lIG9mIHRoZSAyMDIxIGlu dGVydmlld3MsIHRoZXkgd2VyZSBhIHRvbiBvZiBmdW4gZm9yIG1lLg0KDQogIEl0J3MgbWFkZSBi eSBteXNlbGYgYW5kIEBmYWtlbmlja2Vscy4NCg0KICBGZWVsIGZyZWUgdG8gc2hhcmUgYW55IGZl ZWRiYWNrLCBwcm9wb3NlIGFueSBndWVzdCBvciBtYWtlIGZ1biBvZiB1cw0KICBeXg0KDQoNClto dHRwczovL3d3dy50d2l0Y2gudHYvZW1lbGxldHZdIDxodHRwczovL3d3dy50d2l0Y2gudHYvZW1l bGxldHY+DQoNCltodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDdlZWZkNhNy1uelN1 Q2RNS1huTkpOUV0NCjxodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDdlZWZkNhNy1u elN1Q2RNS1huTkpOUT4NCg0KDQpPcGVuIHNvdXJjZSBlZGl0b3IgZm9yIGlPUywgaVBhZE9TIGFu ZCBtYWNPUw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9vcGVuLXNvdXJjZS1lZGl0b3ItZm9yLWlvcy1pcGFkb3MtYW5kLW1h Y29zLzc2MjQvMjE+DQoNCg0KTmF0aGFuIEZhbGxldCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K DQogIEp1c3QgcmVsZWFzZWQgdGhlIGFwcCBvbiB0aGUgUGxheSBTdG9yZSBmb3IgQW5kcm9pZDog W1BsYXkgU3RvcmVdDQoNCiAgRmVlbCBmcmVlIHRvIGdpdmUgeW91ciBmZWVkYmFjayBhcyB3ZWxs LiBJIHRyaWVkIHRvIG1ha2UgaXQgbGlrZSB0aGUNCiAgaU9TL21hY09TIHZlcnNpb24uIEZvciBu b3csIHRoZSBvbmx5IG1pc3NpbmcgZmVhdHVyZSBpcyBzeW50YXgNCiAgaGlnaGxpZ2h0aW5nLCBi dXQgSSdtIHdvcmtpbmcgb24gaXQgKEkgc3RpbGwgaGF2ZSBhIGZldyBidWdzIHdpdGggaXQpDQoN Cg0KW1BsYXkgU3RvcmVdDQo8aHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRh aWxzP2lkPW1lLm5hdGhhbmZhbGxldC5vY2FtbD4NCg0KDQpUaGUgbXlzdGVyaW91cyBwb2ludGVy IGluIHRoZSBydW50aW1lIGNsb3N1cmUgcmVwcmVzZW50YXRpb24NCuKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFy Y2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvdGhlLW15c3RlcmlvdXMtcG9p bnRlci1pbi10aGUtcnVudGltZS1jbG9zdXJlLXJlcHJlc2VudGF0aW9uLzk1NjAvNz4NCg0KDQpE ZWVwIGluIHRoaXMgdGhyZWFkLCBZdWUgTGkgUGljYXNzbyBhbm5vdW5jZWQNCuKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIFRoYW5rcyBmb3IgeW91ciByZXBsaWVzIEBzaWxlbmUgQHpvem96byAh ICBEdWUgdG8gcHJvamVjdCBpbnRlcmVzdCBJDQogIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcnVu dGltZSB2YWx1ZSByZXByZXNlbnRhdGlvbi4gTm93IEkgcmVsZWFzZWQgYQ0KICBsaXR0bGUgbGli cmFyeSBmb3IgZGlzcGxheWluZyBydW50aW1lIHZhbHVlcyBpbiB0ZXh0dWFsIGZvcm06DQogIFtP SW5zcGVjdF0uDQoNCg0KW09JbnNwZWN0XSA8aHR0cHM6Ly9naXRodWIuY29tL1l1ZUxpUGljYXNz by9PSW5zcGVjdD4NCg0KDQpPdGhlciBPQ2FtbCBOZXdzDQrilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KRnJvbSB0aGUgb2NhbWxjb3JlIHBsYW5ldCBi bG9nDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIZXJlIGFyZSBsaW5r cyBmcm9tIG1hbnkgT0NhbWwgYmxvZ3MgYWdncmVnYXRlZCBhdCBbT0NhbWwgUGxhbmV0XS4NCg0K ICDigKIgW01pcmFnZU9TIDQgUmVsZWFzZWQhXQ0KICDigKIgW1BoRCBQb3NpdGlvbiBhdCBDRUEg TElTVCAtIExTTF0NCiAg4oCiIFtBbGwgeW91ciBtZXRyaWNzIGJlbG9uZyB0byBpbmZsdXhdDQog IOKAoiBbU2VjdXJlIFZpcnR1YWwgTWVzc2FnZXMgaW4gYSBCb3R0bGUgd2l0aCBTQ29QXQ0KICDi gKIgW1Jlc2VhcmNoIGludGVybnNoaXBzIGluIG91ciBUb29scyBhbmQgQ29tcGlsZXJzIGdyb3Vw XQ0KDQoNCltPQ2FtbCBQbGFuZXRdIDxodHRwOi8vb2NhbWwub3JnL2NvbW11bml0eS9wbGFuZXQv Pg0KDQpbTWlyYWdlT1MgNCBSZWxlYXNlZCFdDQo8aHR0cHM6Ly90YXJpZGVzLmNvbS9ibG9nLzIw MjItMDMtMjktbWlyYWdlb3MtNC1yZWxlYXNlZD4NCg0KW1BoRCBQb3NpdGlvbiBhdCBDRUEgTElT VCAtIExTTF0NCjxodHRwOi8vZnJhbWEtYy5jb20vam9icy8yMDIyLTAzLTI4LW1hY2hpbmUtbGVh cm5pbmctZm9yLWltcHJvdmluZy1mb3JtYWwtdmVyaWZpY2F0aW9uLW9mLWNvZGUuaHRtbD4NCg0K W0FsbCB5b3VyIG1ldHJpY3MgYmVsb25nIHRvIGluZmx1eF0NCjxodHRwczovL2hhbm5lcy5ucXNi LmlvL1Bvc3RzL01vbml0b3Jpbmc+DQoNCltTZWN1cmUgVmlydHVhbCBNZXNzYWdlcyBpbiBhIEJv dHRsZSB3aXRoIFNDb1BdDQo8aHR0cHM6Ly90YXJpZGVzLmNvbS9ibG9nLzIwMjItMDMtMDgtc2Vj dXJlLXZpcnR1YWwtbWVzc2FnZXMtaW4tYS1ib3R0bGUtd2l0aC1zY29wPg0KDQpbUmVzZWFyY2gg aW50ZXJuc2hpcHMgaW4gb3VyIFRvb2xzIGFuZCBDb21waWxlcnMgZ3JvdXBdDQo8aHR0cHM6Ly9i bG9nLmphbmVzdHJlZXQuY29tL3Jlc2VhcmNoLWludGVybnNoaXBzLXRuYy8+DQoNCg0KT2xkIENX Tg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dO LCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3Us IG9yIGdvIHRha2UgYSBsb29rIGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0 aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVy eSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vic2NyaWJlDQogIFtvbmxpbmVdLg0KDQogIFtBbGFu IFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBw b2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBv bW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFu LnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW29ubGluZV0gPGh0dHA6Ly9saXN0cy5p ZHlsbC5vcmcvbGlzdGluZm8vY2FtbC1uZXdzLXdlZWtseS8+DQoNCltBbGFuIFNjaG1pdHRdIDxo dHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= Content-Type: text/html Content-Disposition: inline OCaml Weekly News

OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of March 29 to April 05, 2022.

v0.15 release of Jane Street packages

Arseniy Alekseyev announced

We are pleased to announce the v0.15 release of Jane Street packages!

This release comes with 41 new packages, and a large number of fixes and enhancements. The documentation for the individual packages will soon be available on v3.ocaml.org/packages, after some technical issues are fixed.

The remainder of this e-mail highlights the main changes since the v0.14 release.

Notable changes

Re-structuring of Core.

The most noticeable breaking change is the re-structuring of Core.

In 0.14, Core is somewhat bloated and includes many modules that are barely ever used, many of which are Unix-specific. In 0.15, many of those modules moved to separate libraries, most of them to package~core_unix~, and core is now much smaller and no longer contains unix-specific code.

The mapping between the new libraries and the old modules can be summarized by the contents of Core_compat library v0.14:

module Command_unix = Core.Command
module Date_unix = Core.Date
module Filename_unix = Core.Filename
module Signal_unix = Core.Signal
module Sys_unix = Core.Sys
module Core_thread = Core.Thread
module Time_unix = Core.Time
module Time_ns_unix = Core.Time_ns
module Core_unix = Core.Unix
module Version_util = Core.Version_util

module Interval_lib = struct
  module Interval = Core.Interval
  module Interval_intf = Core.Interval_intf
end

module Time_interface = Core.Time_common
Async: Monitor.try_with

Monitor.try_with and related functions changed the defaults for their run and rest parameters. They used to default to ~~run:~Schedule ~rest:~Log~, but now they default to ~~run:~Now ~rest:~Raise~.

Many other changes

There are many changes and additions across 130+ existing packages, and unfortunately we don't maintain a changelog to list them all. The code for all of our packages is on our github, and if you're interested in the details of what changed in a particular package, you can inspect the diff between branches v0.14 and v0.15.

New packages

abstract_algebra: A small library describing abstract algebra concepts

A library describing abstract algebra concepts. Currently, it includes Commutative_group and Vector_space.

async_rpc_websocket: Library to serve and dispatch Async RPCs over websockets

Library to serve and dispatch Async RPCs over websockets.

Rpc_websocket makes it easy to serve and send Async RPCs with HTTP+Websocket underlying the transport. It also provides a mechanism to share the RPC implementations between a vanilla TCP server and a HTTP server.

On the server side, the library detects when a websocket connection is established, and routes to an optionally provided vanilla HTTP handler when non-websocket traffic occurs.

bigdecimal: Arbitrary-precision decimal based on Zarith

A high-precision representation of decimal numbers as [mantissa * 10^exponent], where the mantissa is internally a [Bigint.t] and the exponent is an [int].

cohttp_async_websocket: Websocket library for use with cohttp and async

Websocket library for use with cohttp and async.

Cohttp_async_websocket is a full-featured server-side websocket implementation, using Async as the concurrency library, and Cohttp for HTTP negotiation.

It implements a large portion of RFC6445. The library has been hardened with many applications using it for several year, in conjunction with async-js and google-chrome.

cohttp_static_handler: A library for easily creating a cohttp handler for static files

Single page handlers are handlers that serve user specified JavaScript and css files along with a generated index page that loads those files.

core_compat: Compatibility for core 0.14

Compatibility wrapper to make it possible to have code compatible with both Core 0.14 and 0.15.

env_config: Helper library for retrieving configuration from an environment variable

The Env_config library is a helper for retrieving library and program configuration from an environment variable. Its goal is to make it easy to override a configuration that is loaded from disk, computed, or embedded in a library.

file_path: A library for typed manipulation of UNIX-style file paths

A library for typed manipulation of UNIX-style file paths.

fuzzy_match: A library for fuzzy string matching

A library for fuzzy string matching

fzf: A library for running the fzf command line tool

A library for running the fzf command line fuzzy matcher

hardcaml_c: Hardcaml C Simulation Backend

A fast C-based simulation backend for Hardcaml circuits.

The library transparently compiles a Hardcaml Circuit to C code, which is in turn compiled and linked into the running executable. The generated simulation object can be used like any other cyclesim simulation.

hardcaml_circuits: Hardcaml Circuits

A small library of useful/interesting Hardcaml circuits.

hardcaml_fixed_point: Hardcaml fixed point arithmetic

Signed and Unsigned fixed point operations, with a full complement of rounding and overflow functionality.

hardcaml_of_verilog: Convert Verilog to a Hardcaml design

The opensource synthesis tool yosys is used to convert a verilog design to a JSON based netlist representation. This library can load the JSON netlist and build a hardcaml circuit.

Code can also be generated to wrap the conversion process using Hardcaml interfaces.

hardcaml_step_testbench: Hardcaml Testbench Monad

A monad for interacting with Hardcaml.Cyclesim based simulations.

Allows multiple control threads to interact with a simulation module, all of which are synchronised to the system clock.

hardcaml_verify: Hardcaml Verification Tools

Tools for verifying properties of Hardcaml circuits.

Combinational circuits can be converted to 'conjunctive normal form' for input into SAT solvers via DIMAC files. Support for a few opensource solvers is integrated - minisat, picosat, Z3 - just ensure they are in your PATH.

Circuits can also be converted to NuSMV format for advanced bounded and unbounded model checking tasks.

hardcaml_verilator: Hardcaml Verilator Simulation Backend

Very fast verilator-based simulations of Hardcaml circuits.

This library transparently compiles a verilator-based shared library, and links it back to the running executable to be used as a Cyclesim simulation.

hardcaml_xilinx: Hardcaml wrappers for Xilinx memory primitives

The Hardcaml_xilinx library provides wrappers for Xilinx specific RAM and FIFO primitive blocks. In many cases a simulation model is provided.

The Synthesis module implements various arithmetic and logical RTL components with Xilinx LUT primitives.

hardcaml_xilinx_components: Hardcaml Xilinx component definitions

A tool for reading Xilinx VHDL Unisim and XPM component definitions from a Vivado installation and generating Hardcaml interfaces automatically.

hex_encode: Hexadecimal encoding library

This library implements hexadecimal encoding and decoding

hg_lib: A library that wraps the Mercurial command line interface

A library that wraps the Mercurial command line interface.

int_repr: Integers of various widths

Integers of various widths.

jsonaf: A library for parsing, manipulating, and serializing data structured as JSON

A library for parsing, manipulating, and serializing data structured as JSON.

krb: A library for using Kerberos for both Rpc and Tcp communication

Jane Street's library for Kerberizing RPC connections so that

  • the server gets an authenticated principal (i.e. username) with every incoming connection, and
  • RPC communication may be encrypted, if necessary.

magic-trace: Easy Intel Processor Trace Visualizer

Magic-trace makes it easy to record and visualize Intel Processor Trace data for debugging tricky performance issues.

ocaml-embed-file: Files contents as module constants

Embed-file takes some files and generates code for an OCaml module defining string constants containing the contents of those files.

ocaml_intrinsics: Intrinsics

Provides functions to invoke amd64 instructions (such as clz,popcnt,rdtsc,rdpmc) when available, or compatible software implementation on other targets.

ocaml-probes: USDT probes for OCaml: command line tool

A tool for controlling user-space statically-defined tracing probes for OCaml. Experimental.

ppx_css: A ppx that takes in css strings and produces a module for accessing the unique names defined within

A ppx that takes in css strings and produces a module for accessing the unique names defined within.

ppx_disable_unused_warnings: Expands [@disable_unused_warnings] into [@warning \"-20-26-32-33-34-35-36-37-38-39-60-66-67\"]

Part of the Jane Street's PPX rewriters collection.

ppx_ignore_instrumentation: Ignore Jane Street specific instrumentation extensions

Ignore Jane Street specific instrumentation extensions from internal PPXs or compiler features not yet upstreamed.

ppx_jsonaf_conv: [@@deriving] plugin to generate Jsonaf conversion functions

Part of the Jane Street's PPX rewriters collection.

ppx_typed_fields: GADT-based field accessors and utilities

Part of the Jane Street's PPX rewriters collection.

ppx_type_directed_value: Get [@@deriving]-style generation of type-directed values without writing a ppx

Ppx_type_directed_value is a ppx that does [@@deriving]-style generation of type-directed values based on user-provided modules. The user-provided modules tell ppx_type_directed_value how to compose type-directed values (for example, combine type-directed values of the fields of a record to form a type-directed value for the record itself).

This allows a wide variety of PPXs such as ppx_sexp_conv, ppx_compare, ppx_enumerate, etc. to be implemented with ppx_type_directed_value, but with some runtime cost.

This PPX currently supports deriving type-directed values for records, ordinary & polymorphic variants and tuples. It also supports custom user-defined attributes on record and variant fields.

profunctor: A library providing a signature for simple profunctors and traversal of a record

This is a very small library which provides a signature for profunctor types and operations which can be used to traverse a record with them based on record_builder and the ppx_fields syntax extension.

redis-async: Redis client for Async applications

A client library for Redis versions 6 and higher.

Provides a strongly-typed API with transparent (de)serialization for application-defined types.

Supports client tracking and internally uses the RESP3 protocol.

sexp_diff: Code for computing the diff of two sexps

The code behind the [diff] subcommand of the Jane Street's [sexp] command line tool.

sexp_grammar: Sexp grammar helpers

Helpers for manipulating [Sexplib.Sexp_grammar] values.

sexp_string_quickcheck: Quickcheck helpers for strings parsing to sexps

This library provides quickcheck generators, helpers, and shrinkers for quickcheck-based tests that wish to exercise the concrete syntax of sexps, including escape sequences and comments.

tracing: Tracing library

Utilities for creating and parsing traces in Fuchsia Trace Format.

username_kernel: An identifier for a user

A string representation for a user, typically a UNIX username

EmelleTV Show - 2022

David Sancho announced

I'm creating a post as a header from this season of EmelleTV in 2020. Will use this post to share announcements, new shows, gather feedback and invite you to watch and follow https://www.twitch.tv/emelletv!

For the ones who doesn't know us, It's a streaming show that will happen once per month and will try to interview and talk casually about OCaml, Reason, ReScript and their communities. Inviting interesting engineers and ask silly questions about literally anything.

If can't attend live, we publish the VOD in youtube under https://www.youtube.com/channel/UCvVVfCa7-nzSuCdMKXnNJNQ. You can re-watch some of the 2021 interviews, they were a ton of fun for me.

It's made by myself and @fakenickels.

Feel free to share any feedback, propose any guest or make fun of us ^^

Open source editor for iOS, iPadOS and macOS

Nathan Fallet announced

Just released the app on the Play Store for Android: Play Store

Feel free to give your feedback as well. I tried to make it like the iOS/macOS version. For now, the only missing feature is syntax highlighting, but I'm working on it (I still have a few bugs with it)

The mysterious pointer in the runtime closure representation

Deep in this thread, Yue Li Picasso announced

Thanks for your replies @silene @zozozo ! Due to project interest I need to understand the runtime value representation. Now I released a little library for displaying runtime values in textual form: OInspect.

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

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

--==-=-=-- --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Pour une =C3=A9valuation ind=C3=A9pendante, transparente et rigoureuse ! Je soutiens la Commission d'=C3=89valuation de l'INRIA. --=-=-=--