From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=BCKqns9D; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=D2T408Xv; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id D66D9B80123 for ; Tue, 20 Aug 2024 10:29:57 +0100 (BST) 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=ogmQyqhGiwsOTIyBqi083sZYPipRz2h3FNbtf7BDbTc=; b=BCKqns9DsLJnNmPq2KDZ9H+GrAaQZHqIcatlwSHitdaU8z1lcWqdhbKh qrjZifaDiNZ4HvdkxkuG4oasP9+FihPxnA/a518QISyoiwIYpvjjqcDc3 1yNhSait4WpzNDj+tx/Q/ccLOkyJLC6q73ZoA7wtEUhCDoX2lQOszFdiB I=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.10,161,1719871200"; d="scan'208,217";a="179459282" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 20 Aug 2024 11:29:57 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id E8E64E0141; Tue, 20 Aug 2024 11:29:56 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 005CBE00B7 for ; Tue, 20 Aug 2024 11:29:53 +0200 (CEST) IronPort-SDR: 66c46211_0lbcBpVj8NCeGsL0NOunML/JPENSYqD+IOYZJeYEBjhVx0U qG11ACrphkUxJYera/QOlzxgNXTneRtvjyEjNfw== X-IPAS-Result: =?us-ascii?q?A0HjAgDNYcRmkCIeaIFahBmBAxkBY1ozBwhIAwFdg3WDT?= =?us-ascii?q?44fkUiKd4J7AxgWIxQBAwENLgEFDQECBAEBAwECAYQ5RgIWiVMCHwYBBDQTA?= =?us-ascii?q?QIEAQEBAQMCAwEBAQEBAQgBAQUBAQECAQECBAYBAhABAQEBAQE+SYU7CDINg?= =?us-ascii?q?kYZFSNRHl4HCQYBAQEBAQEBAQEBAQEBASIBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgwBMAMEZwkEBhMBAS4KGBIRAxQBB?= =?us-ascii?q?gMCBA0BNRcBEhqCZgGCZAMFDAY/k2abPHp/M4EBggwBAQaBCD4CAQIJAgUBD?= =?us-ascii?q?gkm2gSBYwmBSIgxGgEFJUhqAoRCCYQvAicPgVVEgUqBc0oHb4FQLkwXAQEBA?= =?us-ascii?q?QEXgRwFAwEBTQmDJYJphihVhUQPbIEKRYJvDBOBKXMmgWRXD1dxUUICDDIDg?= =?us-ascii?q?RCBPXwlTFcQhjVhgRpgiViBR0szIRMBVRMXCwkFZIYPgkqDKYIUhBiFKIFnC?= =?us-ascii?q?WGHbYFvgT6BW0eCdUuFWIEEgllsTjkCDQI3gj0pLx1AAwttPTUUG6Z5BA0nA?= =?us-ascii?q?YFaAYF7DkAVGy8pBQEKCQgKBAIiLgQEDgoBCgcWA0kEFQgnBgsLAhQZjQWFb?= =?us-ascii?q?yoCc445jguUWDQHhBiBXQYMiQGBJI4nh0uEBYFWiyuGfZI/IphNIoI0gkGEX?= =?us-ascii?q?4ElCV+BeIhtjCA8AgaFTIF+IzyBIDMaMEMNEAGCSQkKDDAcD4ZCi1kQgS6CY?= =?us-ascii?q?jk7gkEsxB1BNQIBAQENKQIHAQoBAQMJhWIBAYRnI2phAQE?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 uGQ3kUD IronPort-HdrOrdr: A9a23:eS1x+KPdfQxzbMBcTvyjsMiBIKoaSvp037BL7TETdfUxSKalfq +V8sjzuSWYtN9zYhEdcLK7WZVoKEm0nfVICOIqUotKMjOLhEKYaKlcqaHizzfjFyCWzJ8+6Y 5QN45kBpnVBVh+5PyKhDVQ/uxQpeW6zA== X-Talos-CUID: =?us-ascii?q?9a23=3AomzmRGhBLNGemPjxOsuDH2PJjDJuSVf2wniAeH6?= =?us-ascii?q?EGUV4SbeSbG21+b9aqp87?= X-Talos-MUID: 9a23:go3n2wTe45hkBhJwRXTQqyFfE8Nsvp+VS0cJrZchlZjbPi5ZbmI= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.10,161,1719871200"; d="scan'208,217";a="179459248" X-URL-ContentFilter: X-MGA-submission: =?us-ascii?q?MDHF0CmoSM9geCunQBajzjdUCr6FioBHRsgdeP?= =?us-ascii?q?vHLAFtTbQg9kIjFU9HFJ7uyBdOZWEBeXV+eKKvrQUCogKMVsPZf/4jrw?= =?us-ascii?q?Bxj6cO9mJnVi3tHCkjsk0VwmJouWqug+XATfo4J85Oiq3cUQpPr6fqdt?= =?us-ascii?q?WcU47RSUaEMuEqZfVxkIZyuw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Aug 2024 11:29:52 +0200 Received: from mac-03220211.irisa.fr (mac-03220211.irisa.fr [131.254.21.249]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id A5BBD56483B; Tue, 20 Aug 2024 11:29:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1724146191; bh=So+VR6e2jx+rEDrBMrn7qckuGt/hBvNfpW+0wQKVZ14=; h=From:To:Subject:Date:Message-ID; b=D2T408XvyWsYM5tpHLbTX+GC5UBjWL+AVgV+vCZUndZlVNzgU0GeKjzQkhXP8xl5S fW3KxrHrbjGL/2BvuhOYGysun0SJu+Tskxk0wOlF2q+IeGBoxWE7QVCsaZ+0vYuyQ7 RqWCQQeorlC0B5GCs0t22fxSQA6BU555e1c4xrTM= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 20 Aug 2024 11:29:49 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 20 11:29:52 2024 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.371241, queueID=DA53756483C 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: 19174 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 ZWsgb2YgQXVndXN0IDEzIHRvIDIwLA0KMjAyNC4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpNbEZyb250 IC0gQSBKYXZhLWxpa2UgcGFja2FnZSBzeXN0ZW0gZm9yIE9DYW1sDQpScG1maWxlIGxpYnJhcnkg djAuMy4wIHdpdGggbmV3IEVpby1iYXNlZCByZWFkZXINCkdpdEh1YiAtIG1ldGEtaW50cm9zcGVj dG9yL29jYW1sLWxpYnBweC1pbXBvcnQteW9qc29uLWludHJvc3BlY3RvcjogVXNpbmcgbGlicHB4 LCBwcHhfaW1wb3J0LCByZWZsZWN0IG92ZXIgYXN0IHVzaW5nDQpEdW5lIERldmVsb3BlciBQcmV2 aWV3IFVwZGF0ZXMNClBweGxpYiBkZXYgbWVldGluZ3MNClByYWdtYXRpYyBDYXRlZ29yeSBUaGVv cnk6IFBhcnQgMiBwdWJsaXNoZWQhDQpEdW5lIGRldiBtZWV0aW5nIG9uIDIwMjQtMDgtMjEsIDEw YW0gQ0VTVA0KT3RoZXIgT0NhbWwgTmV3cw0KT2xkIENXTg0KDQoNCk1sRnJvbnQgLSBBIEphdmEt bGlrZSBwYWNrYWdlIHN5c3RlbSBmb3IgT0NhbWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0K DQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW1sZnJvbnQt YS1qYXZhLWxpa2UtcGFja2FnZS1zeXN0ZW0tZm9yLW9jYW1sLzE1MDcyLzg+DQoNCg0KamJlY2tm b3JkIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhlcmUgaXMgbm93IGEgbmV3IGxpYnJhcnkgYE1sRnJvbnRf VG9wJyB3aXRoIGEgYnVpbGQgdG9vbA0KICBgbWxmcm9udC10b3AnIHRoYXQgd2lsbCBnZW5lcmF0 ZSBzZWxmLWNvbnRhaW5lZCBPQ2FtbCB0b3BsZXZlbCBzY3JpcHQNCiAgZmlsZXMgd2l0aCBwYXJh bGxlbGlzbSBiYXNlZCBvbiBAYy1jdWJlJ3MgbW9vbnBvb2wgbGlicmFyeToNCg0KICDilIzilIDi lIDilIDilIANCiAg4pSCIC4NCiAg4pSCIOKUnOKUgOKUgCBBY21lV2lkZ2V0c19TdGQvDQogIOKU giDilIIgICDilJzilIDilIAgSm9ic0ExLm1sDQogIOKUgiDilIIgICDilJTilIDilIAgSm9ic0Ey Lm1sDQogIOKUgiDilJTilIDilIAgQm9iQnVpbGRlcl9TdGQvDQogIOKUgiAgICAg4pSU4pSA4pSA IEpvYnNCLm1sDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIg JCBtbGZyb250LXRvcCAtbyBidWlsZHNjcmlwdC5tbA0KICDilIIgDQogIOKUgiAkIG9jYW1sIGJ1 aWxkc2NyaXB0Lm1sIC1qIDIgLW5hdGl2ZQ0KICDilIIgICBsZWdlbmQ6IC0+IHN0YXJ0IHwgPC0g ZmluaXNoDQogIOKUgiAgICAgIGRpcmVjdG9yeSBjcmVhdGU6IHRhcmdldC8NCiAg4pSCICAgICAg ZmlsZSBjcmVhdGU6IHRhcmdldC9BY21lV2lkZ2V0c19TdGQubWwNCiAg4pSCICAgICAgbGluayBj cmVhdGU6IEFjbWVXaWRnZXRzX1N0ZC9Kb2JzQTEubWwgLT4gdGFyZ2V0L0FjbWVXaWRnZXRzX1N0 ZF9fSm9ic0ExLm1sDQogIOKUgiAgICAgIGxpbmsgY3JlYXRlOiBBY21lV2lkZ2V0c19TdGQvSm9i c0EyLm1sIC0+IHRhcmdldC9BY21lV2lkZ2V0c19TdGRfX0pvYnNBMi5tbA0KICDilIIgICAgICBs aW5rIGNyZWF0ZTogQm9iQnVpbGRlcl9TdGQvSm9ic0IubWwgLT4gdGFyZ2V0L0JvYkJ1aWxkZXJf U3RkX19Kb2JzQi5tbA0KICDilIIgICAtPiBjb21waWxlOiBBY21lV2lkZ2V0c19TdGQuSm9ic0Ex DQogIOKUgiAgIC0+IGNvbXBpbGU6IEFjbWVXaWRnZXRzX1N0ZC5Kb2JzQTINCiAg4pSCICAgPC0g Y29tcGlsZTogQWNtZVdpZGdldHNfU3RkLkpvYnNBMQ0KICDilIIgICA8LSBjb21waWxlOiBBY21l V2lkZ2V0c19TdGQuSm9ic0EyDQogIOKUgiAgIC0+IGNvbXBpbGU6IEFjbWVXaWRnZXRzX1N0ZA0K ICDilIIgICA8LSBjb21waWxlOiBBY21lV2lkZ2V0c19TdGQNCiAg4pSCICAgLT4gY29tcGlsZTog Qm9iQnVpbGRlcl9TdGQuSm9ic0INCiAg4pSCICAgPC0gY29tcGlsZTogQm9iQnVpbGRlcl9TdGQu Sm9ic0INCiAg4pSCICAgLT4gZXhlY3V0YWJsZSBjcmVhdGU6IEJvYkJ1aWxkZXJfU3RkLkpvYnNC DQogIOKUgiAgIDwtIGV4ZWN1dGFibGUgY3JlYXRlOiBCb2JCdWlsZGVyX1N0ZC5Kb2JzQg0KICDi lIIgICBkb25lLg0KICDilIIgDQogIOKUgiAkIHRhcmdldC9Cb2JCdWlsZGVyX1N0ZC5Kb2JzQg0K ICDilIIgSSBhbSBhbiBBMSENCiAg4pSCIEkgYW0gYW4gQTIhDQogIOKUgiBJIGFtIGEgQiENCiAg 4pSU4pSA4pSA4pSA4pSADQoNCiAgSXQgcmVxdWlyZXMgdGhlIGBvY2FtbCcgYmluYXJ5IGFuZCBg b2NhbWxjJyBvciBgb2NhbWxvcHQnLiBUaGUNCiAgY29tcGxldGUgZXhhbXBsZSBpcyBhdA0KICA8 aHR0cHM6Ly9naXRsYWIuY29tL2RrbWwvYnVpbGQtdG9vbHMvTWxGcm9udC8tL2Jsb2IvMC40LjAt Ni90ZXN0cy9NbEZyb250X1RvcC9qb2JzLnQvcnVuLnQ+Lg0KDQoNClJwbWZpbGUgbGlicmFyeSB2 MC4zLjAgd2l0aCBuZXcgRWlvLWJhc2VkIHJlYWRlcg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9ycG1m aWxlLWxpYnJhcnktdjAtMy0wLXdpdGgtbmV3LWVpby1iYXNlZC1yZWFkZXIvMTUxNDkvMT4NCg0K DQpNaWtoYWlsIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSADQoNCiAgVG9kYXkgSSB3YW50IHRvIHRlbGwgeW91IGFib3V0IG5ldyB2 ZXJzaW9uIG9mIFtScG1maWxlDQogIGxpYnJhcnldLiBScG1maWxlIGlzIGEgbGlicmFyeSBmb3Ig cmVhZGluZyBtZXRhZGF0YSBmcm9tIFtSUE1dDQogIHBhY2thZ2VzLiBPcmlnaW5hbGx5IFJwbWZp bGUncyBwYXJzZXIgKHJlYWRlcikgdXNlZCBbQW5nc3Ryb21dIGZvcg0KICBwYXJzaW5nLiBBbmQg aW4gdGhlIG5ldyByZWxlYXNlIGFkZGVkIG5ldyBtb2Rlcm4gW0Vpb10tYmFzZWQgcmVhZGVyLg0K DQogIEdsb2JhbGx5LCB0aGUgcHJvamVjdCBpcyBub3cgc3BsaXQgaW50byBmb3VyIHBhY2thZ2Vz OiBgcnBtZmlsZScsDQogIHdoaWNoIGNvbnRhaW5zIHNpZ25hdHVyZXMgYW5kIGltcGxlbWVudGF0 aW9uLWluZGVwZW5kZW50IGZ1bmN0aW9ucywNCiAgYHJwbWZpbGUtdW5peCcgd2l0aCB0aGUgb3Jp Z2luYWwgQW5nc3Ryb20gcGFyc2VyLCBhbmQgYHJwbWZpbGUtZWlvJw0KICAod2l0aCBgcnBtZmls ZS1jbGknKSB3cml0dGVuIHVzaW5nIEVpby4NCg0KDQpbUnBtZmlsZSBsaWJyYXJ5XSA8aHR0cHM6 Ly9naXRodWIuY29tL2R4M21vZC9ycG1maWxlPg0KDQpbUlBNXSA8aHR0cHM6Ly9lbi53aWtpcGVk aWEub3JnL3dpa2kvUlBNX1BhY2thZ2VfTWFuYWdlcj4NCg0KW0FuZ3N0cm9tXSA8aHR0cHM6Ly9n aXRodWIuY29tL2luaGFiaXRlZHR5cGUvYW5nc3Ryb20+DQoNCltFaW9dIDxodHRwczovL2dpdGh1 Yi5jb20vb2NhbWwtbXVsdGljb3JlL2Vpbz4NCg0KTXkgZXhwZXJpZW5jZSBwb3J0aW5nIHRvIEVp bw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgRWlvIGlzIGEgZmFudGFzdGljIGVm ZmVjdC1iYXNlZCBJL08gbGlicmFyeSBmb3IgYSBtb3JlIG1vZGVybiBhZ2UgaW4NCiAgbXVsdGlj b3JlIE9DYW1sLiBJIHRoaW5rIGl0IHRha2VzIHRoZSBiZXN0IGlkZWFzIGZyb20gdGhlDQogIGVj b3N5c3RlbS4gU28gYnVpbHQtaW4gYEJ1Zl9yZWFkJyBhbmQgYEJ1Zl93cml0ZScgbW9kdWxlcyBp bXBsZW1lbnQNCiAgaWRlYXMgZnJvbSBBbmdzdHJvbSBhbmQgRmFyYWRheSBsaWJyYXJpZXMuIEFs bW9zdCBBUEkgb25lLXRvLW9uZSwNCiAgYWxsb3dpbmcgcG9ydGluZyB2aWEgY29weS1wYXN0ZS4N Cg0KICBCdXQsIG9mIGNvdXJzZSwgbm90IGV2ZXJ5dGhpbmcgaXMgc28gcGVyZmVjdC4gVW5saWtl IHRoZQ0KICBgQW5nc3Ryb20ucGFyc2VfJyBmdW5jdGlvbiwgdGhlIGBCdWZfcmVhZC5wYXJzZScg ZnVuY3Rpb24gdGhpbmtzIEkNCiAgd2FudCB0byByZWFkIGEgd2hvbGUgc3RyZWFtIHRvIGVuZCBv ZiBpbnB1dC4NCg0KICBBIHNuaXBwZXQgb2YgdGhlIHNvdXJjZSBjb2RlOg0KICDilIzilIDilIDi lIDilIANCiAg4pSCIGxldCBwYXJzZSA/aW5pdGlhbF9zaXplIH5tYXhfc2l6ZSBwIGZsb3cgPQ0K ICDilIIgICBsZXQgYnVmID0gb2ZfZmxvdyBmbG93ID9pbml0aWFsX3NpemUgfm1heF9zaXplIGlu DQogIOKUgiAgIGZvcm1hdF9lcnJvcnMgKHAgPCogZW5kX29mX2lucHV0KSBidWYNCiAg4pSCICAg KCogICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl4gICAgICAgICAgIA0KICDilIIgICAgICAg ICAgICAgICAgICAgICAwXzAgbmljZSAobm90KSAgICAgICAgKikNCiAg4pSU4pSA4pSA4pSA4pSA DQoNCiAgU28gSSBoYWQgdG8gcmV3cml0ZSB0aGlzIGZ1bmN0aW9uIG15c2VsZiBpbiBhIGZvcm0g c2ltaWxhciB0bw0KICBgQW5nc3Ryb20uQ29uc3VtZS5QcmVmaXgnLg0KDQoNCuKXiiBJcyBpdCBh IHNpZ25lZCBvciB1bnNpZ25lZCBpbnRlZ2VyPw0KDQogIGBCRS51aW50MTYnIGFuZCBvdGhlciBz aW1pbGFyIGZ1bmN0aW9ucyBhcmUgKnNpZ25lZCBpbnQqIGV2ZW4gdGhvdWdoDQogIHRoZXkgaGF2 ZSB0aGUgcHJlZml4IGB1JyBpbiB0aGUgbmFtZSBmb3Igc29tZSByZWFzb24uDQoNCg0K4peKIEFu ZCBhIGZldyBvdGhlciBkaWZmZXJlbmNlcw0KDQogIOKAoiBgQW5nc3Ryb20uYWR2YW5jZScgaXMg YHNraXAnDQogIOKAoiBgQW5nc3Ryb20ucG9zJyBpcyBgY29uc3VtZWRfYnl0ZXMnDQoNCg0KUC5T Lg0K4pWM4pWM4pWM4pWMDQoNCiAgVGhhbmtzIGZvciB5b3VyIGF0dGVudGlvbiENCg0KDQpHaXRI dWIgLSBtZXRhLWludHJvc3BlY3Rvci9vY2FtbC1saWJwcHgtaW1wb3J0LXlvanNvbi1pbnRyb3Nw ZWN0b3I6IFVzaW5nIGxpYnBweCwgcHB4X2ltcG9ydCwgcmVmbGVjdCBvdmVyIGFzdCB1c2luZw0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9naXRo dWItbWV0YS1pbnRyb3NwZWN0b3Itb2NhbWwtbGlicHB4LWltcG9ydC15b2pzb24taW50cm9zcGVj dG9yLXVzaW5nLWxpYnBweC1wcHgtaW1wb3J0LXJlZmxlY3Qtb3Zlci1hc3QtdXNpbmcvMTUxNTEv MT4NCg0KDQpKaW0gRHVwb250IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVyZSBpcyBhIHdvcmtpbmcg Zmlyc3QgdmVyc2lvbiAod2l0aCB3YXJ0cykgb2YgYSBwcHhsaWIgdG8geW9qc29uDQogIGNvbnZl cnRlciwgYW0gc3RpbGwgdGVzdGluZyBpdCBidXQgdGhlIGhlbGxvIHdvcmxkIGlzIHdvcmtpbmcs IEkgaGF2ZQ0KICB0cmllZCBtdWx0aXBsZSB0aW1lcyB0byBnZXQgdGhpcyB0byB3b3JrLCBhbmQg ZmluYWxseSBzZXR0bGVkIG9uIHRoZQ0KICBpbXBvcnQgcm91dGUgdG8gb3ZlcnJpZGUgdGhlIHR5 cGUgc3lzdGVtLiAgY29kZSBoZXJlOg0KICA8aHR0cHM6Ly9naXRodWIuY29tL21ldGEtaW50cm9z cGVjdG9yL29jYW1sLWxpYnBweC1pbXBvcnQteW9qc29uLWludHJvc3BlY3Rvcj4NCg0KICBleGFt cGxlIHNuaXBwZXQNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIHsNCiAg4pSCICAgInBleHBf ZGVzYyI6IFsNCiAg4pSCICAgICAiUGV4cF9jb25zdGFudCIsDQogIOKUgiAgICAgWw0KICDilIIg ICAgICAgIlBjb25zdF9zdHJpbmciLA0KICDilIIgICAgICAgIkhlbGxvLCBXb3JsZCEiDQogIOKU giAgICAgXQ0KICDilIIgICBdDQogIOKUgiB9DQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNCkR1bmUg RGV2ZWxvcGVyIFByZXZpZXcgVXBkYXRlcw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tZHVu ZS1kZXZlbG9wZXItcHJldmlldy11cGRhdGVzLzE1MTYwLzE+DQoNCg0Kb3N0ZXJhIGFubm91bmNl ZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAg SnVzdCB3YW50ZWQgdG8gc2hhcmUgc29tZSBvZiB0aGUgd29yayB0aGUgRHVuZSBoYXMgYmVlbiB1 cCB0byBsYXRlbHkNCiAgcmU6IHRoZSBEZXZlbG9wZXIgUHJldmlldyB3ZSBhbm5vdW5jZWQgW2hl cmVdIDopIOKAkyB3ZSdsbCBiZSB1c2luZyB0aGlzDQogIHRocmVhZCB0byBzaGFyZSBtb3JlIHVw ZGF0ZXMgYXMgdGhpbmdzIGdvLg0KDQogIEFzIGFsd2F5cywgd2UgaG9sZCBvdXIgRHVuZSBEZXZl bG9wZXIgbWVldGluZ3MgaW4gcHVibGljIGFuZCB5b3UncmUNCiAgbW9yZSB0aGFuIHdlbGNvbWUg dG8gc3Vic2NyaWJlIHRvIG91ciBwdWJsaWMgQ2FsZW5kYXIgKFtHb29nbGVdLA0KICBbaUNhbF0p DQoNCg0KW2hlcmVdDQo8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L29jYW1sLXBsYXRmb3Jt LW5ld3NsZXR0ZXItbWFyY2gtbWF5LTIwMjQvMTQ3NjU+DQoNCltHb29nbGVdDQo8aHR0cHM6Ly9j YWxlbmRhci5nb29nbGUuY29tL2NhbGVuZGFyL2VtYmVkP3NyYz1jXzVjZDY5OGRmNjc4NGUzODVi MWNkY2RjMWRiY2ExOGMwNjFmYWE5Njk1OWEwNDc4MTU2NmQzMDRkYzllYzczMTklNDBncm91cC5j YWxlbmRhci5nb29nbGUuY29tJmN0ej1FdXJvcGUlMkZTdG9ja2hvbG0+DQoNCltpQ2FsXQ0KPGh0 dHBzOi8vY2FsZW5kYXIuZ29vZ2xlLmNvbS9jYWxlbmRhci9pY2FsL2NfNWNkNjk4ZGY2Nzg0ZTM4 NWIxY2RjZGMxZGJjYTE4YzA2MWZhYTk2OTU5YTA0NzgxNTY2ZDMwNGRjOWVjNzMxOSU0MGdyb3Vw LmNhbGVuZGFyLmdvb2dsZS5jb20vcHVibGljL2Jhc2ljLmljcz4NCg0KR2V0dGluZyByZWFkeSBm b3IgdGhlIFB1YmxpYyBCZXRhDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYwNCg0KICBBcyB3ZSBwcmVwYXJlIGZvciB0aGUgcHVibGljIGJldGEsIHdlJ3JlIHJhbXBp bmcgdXAgdGhlIERYIGludGVydmlld3MNCiAgYW5kIGVuc3VyaW5nIHRoZSBmaXJzdCBmZXcgdXNl cnMgd2lsbCBoYXZlIGEgZnVuLCBwcm9kdWN0aXZlDQogIGV4cGVyaWVuY2Ugd2l0aCB0aGUgZGV2 ZWxvcGVyIHByZXZpZXcuDQoNCiAgICAgICAgOmluYm94X3RyYXk6IElmIHlvdSBzaWduZWQgdXAg Zm9yIHRoZSBEZXYgUHJldmlldyBiYWNrIGluDQogICAgICAgIE1heSwgY2hlY2sgeW91ciBpbmJv eCBmb3IgYSBsaW5rIGFuZCBpbnN0cnVjdGlvbnMgdG8NCiAgICAgICAgc2NoZWR1bGUgeW91ciBE WCBpbnRlcnZpZXcgd2l0aCB1cy4NCg0KICBIZXJlJ3MgYSBzYW1wbGUgdmlkZW8gKFtNYXN0b2Rv bl0gb3IgW1hdKSB3aGVyZSB5b3UgY2FuIHNlZSBtZQ0KICBidWlsZGluZyB0aGUgUmlvdCBwcm9q ZWN0IG9uIGEgbWFjaGluZSB0aGF0IGRvZXMgbm90IGhhdmUgT0NhbWwNCiAgaW5zdGFsbGVkLiBJ dCBpcyBwcmV0dHkgbmVhdCENCg0KICBTZXJpb3VzbHksIGJpZyBzaG91dG91dCB0byB0aGUgRHVu ZSB0ZWFtIGF0IFRhcmlkZXNbMF0gd2hvIGhhdmUgYmVlbg0KICBkb2luZyBhIHBoZW5vbWVuYWwg am9iIDpjbGFwOiA6c3BhcmtsZXM6IDpjYW1lbDoNCg0KICBTbyBoZXJlJ3Mgd2hhdCBnZXR0aW5n IHN0YXJ0ZWQgd2l0aCBPQ2FtbCBsb29rcyBsaWtlIHRvZGF5IHdpdGggdGhlDQogIER1bmUgRGV2 ZWxvcGVyIFByZXZpZXcgYXMgb2YgdG9kYXkgKEF1Z3VzdCAxOSAyMDI0KToNCg0KICAxLiBnZXQg YGR1bmUnIGZyb20gb3VyIGJpbmFyeSBkaXN0cmlidXRpb24g4oCTIHdlJ2xsIHNvb24gbWFrZSB0 aGlzDQogICAgIHB1YmxpYyENCiAgMi4gcnVuIGBkdW5lIHBrZyBsb2NrJyBpbiB5b3VyIGZhdm9y aXRlIHByb2plY3QNCiAgMy4gcnVuIGBkdW5lIGJ1aWxkJw0KDQogIFRoYXQncyBpdC4gTm8gbmVl ZCB0byBpbnN0YWxsIGFueXRoaW5nIGVsc2UsIER1bmUgd2lsbCBzZWUgdGhhdCBsb2NrDQogIGZp bGUsIGZldGNoLCBhbmQgYnVpbGQgYWxsIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuDQoNCiAgICAg ICAgOndvcmxkX21hcDogVGhlc2UgYXJlIHNvbWUgc3Ryb25nIHN0ZXAgdG93YXJkcyB0aGUgW09D YW1sDQogICAgICAgIFBsYXRmb3JtIHZpc2lvbiBmb3IgMjAyNl0sIHRoYXQgd2UgYXJlIGFjdGl2 ZWx5IHdvcmtpbmcNCiAgICAgICAgdG93YXJkcy4gSWYgeW91IGhhdmUgYW55IHRob3VnaHRzIG9y IGZlZWRiYWNrIHBsZWFzZSBsZXQNCiAgICAgICAgbWUga25vdyENCg0KICBUaGVyZSBhcmUgbW9y ZSBpbXByb3ZlbWVudHMgY29taW5nIHRoYXQgd2lsbCBoZWxwIHJlbW92ZSBmcmljdGlvbiB0bw0K ICBnZXQgc3RhcnRlZCBhbmQgY3JlYXRpbmcgYSBkZWxpZ2h0ZnVsIGV4cGVyaWVuY2UuIEJvdGgg b2YgdGhlc2UgdGhpbmdzDQogIHdlIHN0cm9uZ2x5IGJlbGlldmUgd2lsbCBoZWxwIG9uYm9hcmQg bmV3IHVzZXJzIHRvIHRoZSBPQ2FtbCB3b3JsZC4NCg0KICBIZXJlJ3MgYSBmZXcgaW4gdGhlIHdv cmtzOg0KDQogIOKAoiAqVmFyaW91cyBEWCBpbXByb3ZlbWVudHMqIOKAkyBmcm9tIG5ldyBvdXRw dXRzIHRvIHNpbXBsaWZpZWQNCiAgICAgd29ya2Zsb3dzLCB3ZSB3YW50IHRvIG1ha2UgdXNpbmcg RHVuZSBqdXN0IGRlbGlnaHRmdWwuDQogIOKAoiAqQnVuZGxlZCBzdXBwb3J0IGZvciBkZXYgdG9v bHMqIChvY2FsbWZvcm1hdCwgb2RvYywgbHNwKSDigJMgdGhlDQogICAgIGRlZmF1bHQgdG9vbHNl dCB3aWxsIGJlIGF2YWlsYWJsZSB3aXRob3V0IGFueSBleHRyYSBzdGVwcyEganVzdA0KICAgICBj YWxsIGBkdW5lIGZtdCcsIGFuZCBpdCB3b3Jrcy4gTm8gbmVlZCB0byBtYW51YWxseSBpbnN0YWxs IGFueXRoaW5nDQogICAgIGVsc2UuDQogIOKAoiAqQXV0b21hdGljIGRlcGVuZGVuY3kgbG9ja2lu Zyog4oCTIHdoZW4gYnVpbGRpbmcsIGFuZCBldmVuIG9uIHdhdGNoDQogICAgIG1vZGUsIER1bmUg d2lsbCBsb2NrIHlvdXIgZGVwZW5kZW5jaWVzIGJ5IGRlZmF1bHQgYW5kIGtlZXAgdGhlIGxvY2sN CiAgICAgdXAgdG8gZGF0ZS4NCiAg4oCiICpDcm9zcy1wcm9qZWN0IENhY2hpbmcqIOKAkyBieSBk ZWZhdWx0IHdlJ2xsIGVuYWJsZWQgYSBsb2NhbCBEdW5lDQogICAgIGNhY2hlIHRoYXQgYWNyb3Nz IHRoZSBzeXN0ZW0sIHNvIHlvdSBuZXZlciByZWJ1aWxkIHRoZSBzYW1lDQogICAgIGRlcGVuZGVu Y3kgZXZlbiBhY3Jvc3MgcHJvamVjdHMuDQogIOKAoiAqU2lnbmVkIGJpbmFyaWVzIHdpdGggY2Vy dGlmaWNhdGVzIG9mIG9yaWdpbiog4oCTIHdlIGNhcmUgZGVlcGx5IGFib3V0DQogICAgIHNlY3Vy aXR5IGFuZCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBiaW5hcnkgd2Ugc2hpcCB3aWxsIGJl DQogICAgIGVhc2lseSB2ZXJpZmllZCBhbmQgdHJhY2tlZCBiYWNrIHRvIGl0cyBzb3VyY2VzLg0K DQogIFN0YXkgdHVuZWQhIDp3YXZlOg0KDQogIFBTOiBoZXJlJ3MgYSBsb25nZXIgdmlkZW8gKFtN YXN0b2Rvbl0sIFtYXSkgc2hvd2luZyB5b3UgdGhlIHNldHVwIGZvcg0KICBPQ2FtbCBmcm9tIHpl cm8sIGNyZWF0aW5nIGEgbmV3IHByb2plY3QsIGFuZCBhZGRpbmcgYSBkZXBlbmRlbmN5LCBhbGwN CiAgd2l0aGluIH41IG1pbnV0ZXMNCg0KICBbMF0gQGVtaWxsb24gQExlb25pZGFzIEBncmlkYnVn cyBAdG1hdHRpby4gQW1icmUgU2h1bWF5LCBBbHBoYSBEaWFsbG8sDQogIEV0aWVubmUgTWFyYWlz DQoNCg0KW01hc3RvZG9uXSA8aHR0cHM6Ly9tYXMudG8vZGVjay9AbGVvc3RlcmEvMTEyOTg4ODQx MjA3NjkwNzIwPg0KDQpbWF0gPGh0dHBzOi8veC5jb20vbGVvc3RlcmEvc3RhdHVzLzE4MjU1MTk0 NjU1Mjc2NzMyMzg+DQoNCltPQ2FtbCBQbGF0Zm9ybSB2aXNpb24gZm9yIDIwMjZdDQo8aHR0cHM6 Ly9vY2FtbC5vcmcvdG9vbHMvcGxhdGZvcm0tcm9hZG1hcD4NCg0KW01hc3RvZG9uXSA8aHR0cHM6 Ly9tYXMudG8vZGVjay9AbGVvc3RlcmEvMTEyOTg4ODgwMjkwODE1MzU2Pg0KDQpbWF0gPGh0dHBz Oi8veC5jb20vbGVvc3RlcmEvc3RhdHVzLzE4MjU1MTk0Njk3NTk4MTIwNjI+DQoNCg0KUHB4bGli IGRldiBtZWV0aW5ncw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9wcHhsaWItZGV2LW1lZXRpbmdzLzEyNDQxLzI5Pg0KDQoNCk5hdGhhbiBSZWJvdXJzIGFubm91 bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhpcyBtb250aCdzIG1lZXRpbmcgaXMgc2NoZWR1 bGVkIGZvciB0b21vcnJvdywgW2RhdGU9MjAyNC0wOC0yMA0KICB0aW1lPTE3OjAwOjAwIHRpbWV6 b25lPSJFdXJvcGUvTG9uZG9uIl0hDQoNCiAgVGhlIG1lZXRpbmcgYWdlbmRhIHRodXMgZmFyIGlz IHRvIGRpc2N1c3MgdGhlIGZvbGxvd2luZzoNCg0KICDigKIgKjUuMiBCdW1wIFByb2dlc3MqDQog ICAg4oCiIEF1dG8tZ2VuZXJhdGUgQVNUIHBhdHRlcm4gY29kZSBhbmQgbGFiZWxsZWQgYXJndW1l bnRzDQogICAgICAoZS5nLiBgdmFsdWVfYmluZGluZyB+Y29uc3RyYWludF86bm9uZScgYnV0IG5v IHBvc2l0aW9uYWwNCiAgICAgIGFyZ3VtZW50PykNCiAgICDigKIgYEFzdF9oZWxwZXIuRXhwLmZ1 bmN0aW9uXycgZGVwcmVjYXRpb24NCiAgICDigKIgW29wYW0tcmVwb3NpdG9yeSBvdmVybGF5IGZv ciA1LjIgQVNUIGJ1bXBdDQogIOKAoiAqSXNzdWVzIGluIG1pZ3JhdGlvbnMqDQogICAg4oCiIEJ1 bXBpbmcgdGhlIEFTVCBoYXMgdW5jb3ZlcmVkIGlzc3VlcyBpbiBtaWdyYXRpbmcgY29kZSB1cCBh bmQgZG93bg0KICAgICAgdGhlIGludGVybmFsIHBweGxpYiBBU1RzIOKAkyB3b3VsZCBiZSBnb29k IHRvIGRpc2N1c3MgdGhpcyBhbmQgYWxzbw0KICAgICAgaG93IHRvIG1pdGlnYXRlIHRoaXMgZ29p bmcgZm9yd2FyZC4NCiAg4oCiICpEb2N1bWVudGF0aW9uKg0KICAgIOKAoiBHcmVhdCB1c2VyIGZl ZWRiYWNrIGZyb20gW1BweGxpYjogR2V0dGluZyB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbg0KICAg ICAgb2YgYHR5cF9jb25zdHInIGxpa2UgYHR5cGVfZGVjbGFyYXRpb24nIGZyb20gYGNvcmVfdHlw ZScgb2YNCiAgICAgIGBwdHlwX2NvbnN0ciddIHdoaWNoIHdlIHNob3VsZCB0YWtlIG9uYm9hcmQg YW5kIHdvcmsgaW50bw0KICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4bGli L2lzc3Vlcy8zMjQ+DQogIOKAoiAqU29tZSBjYXJyeSBvdmVyIGl0ZW1zIGZyb20gbGFzdCBtb250 aCoNCiAgICDigKIgSW4gZ2VuZXJhbCB3aGF0IGlzIHRoZSBtZWRpdW0gdGVybSBnb2FscyBmb3Ig cHB4bGliPyBNb3N0bHkNCiAgICAgIG1haW50ZW5hbmNlIGFuZCBidW1waW5nIHRoZSBBU1Qva2Vl cGluZyB1cCB3aXRoIGNvbXBpbGVyIHJlbGVhc2VzPw0KDQogIFRoZSBtZWV0aW5nIHdpbGwgYmUg aG9zdGVkIG9uIGdvb2dsZSBtZWV0IGhlcmU6DQogIDxodHRwczovL21lZXQuZ29vZ2xlLmNvbS95 eHctZWpudS1janU+DQoNCiAgRXZlcnlvbmUgaXMgdmVyeSB3ZWxjb21lIHRvIGpvaW4hIDpjYW1l bDoNCg0KDQpbb3BhbS1yZXBvc2l0b3J5IG92ZXJsYXkgZm9yIDUuMiBBU1QgYnVtcF0NCjxodHRw czovL2dpdGh1Yi5jb20vcGF0cmljb2ZlcnJpcy9vcGFtLXBweGxpYi1yZXBvc2l0b3J5Pg0KDQpb UHB4bGliOiBHZXR0aW5nIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mIGB0eXBfY29uc3RyJyBs aWtlDQpgdHlwZV9kZWNsYXJhdGlvbicgZnJvbSBgY29yZV90eXBlJyBvZiBgcHR5cF9jb25zdHIn XQ0KPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9wcHhsaWItZ2V0dGluZy10aGUtb3JpZ2lu YWwtZGVmaW5pdGlvbi1vZi10eXAtY29uc3RyLWxpa2UtdHlwZS1kZWNsYXJhdGlvbi1mcm9tLWNv cmUtdHlwZS1vZi1wdHlwLWNvbnN0ci8xNTExMD4NCg0KDQpQcmFnbWF0aWMgQ2F0ZWdvcnkgVGhl b3J5OiBQYXJ0IDIgcHVibGlzaGVkIQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9uZXctcGFydC1wcmFnbWF0aWMtY2F0ZWdv cnktdGhlb3J5LXBhcnQtMi1wdWJsaXNoZWQvMTUwNTYvNj4NCg0KDQpEbWl0cmlpIEtvdmFuaWtv diBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEkganVzdCBwdWJsaXNo ZWQgW3RoZSBzZWNvbmQgcGFydF0gb2YgbXkgc2VyaWVzLCBzbyBJIHVwZGF0ZWQgdGhlDQogIHRv cGljLg0KDQogIExldCBtZSBrbm93IHdoZW4gbm90aWZpY2F0aW9ucyBiZWNvbWUgdG9vIG5vaXN5 IDpzbGlnaHRfc21pbGU6DQoNCg0KW3RoZSBzZWNvbmQgcGFydF0NCjxodHRwczovL2Rldi50by9j aHNoZXJzaC9wcmFnbWF0aWMtY2F0ZWdvcnktdGhlb3J5LXBhcnQtMi1jb21wb3Npbmctc2VtaWdy b3Vwcy04Nz4NCg0KDQpEdW5lIGRldiBtZWV0aW5nIG9uIDIwMjQtMDgtMjEsIDEwYW0gQ0VTVA0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9h bm4tZHVuZS1kZXYtbWVldGluZy1vbi0yMDI0LTA4LTIxLTEwYW0tY2VzdC8xNTE2Ni8xPg0KDQoN ClN0ZXZlIFNoZXJyYXR0IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGkhIFRoZSBu ZXh0IHB1YmxpYyBkdW5lIGRldiBtZWV0aW5nIHdpbGwgYmUgaGVsZCBvbiAyMDI0LTA4LTIxLCAx MGFtDQogIENFU1QuIFBsZWFzZSBmZWVsIGZyZWUgdG8gbGV0IG1lIGtub3cgYW55IHRvcGljcyB5 b3UnZCBsaWtlIHVzIHRvDQogIGRpc2N1c3MgYW5kIEknbGwgdXBkYXRlIFt0aGUgbWVldGluZyBu b3Rlc10uIFRoZSB6b29tIGxpbmsgZm9yIHRoZQ0KICBtZWV0aW5nIGlzOg0KICA8aHR0cHM6Ly91 czA2d2ViLnpvb20udXMvai84NTA5Njg3Nzc3Nj9wd2Q9Y1dOaFUxZEhRMVpOU2padU9VWkNRMGgy Ynk5VWR6MDk+DQoNCg0KW3RoZSBtZWV0aW5nIG5vdGVzXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC9kdW5lL3dpa2kvZGV2LW1lZXRpbmctMjAyNC0wOC0yMT4NCg0KDQpPdGhlciBPQ2FtbCBO ZXdzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K RnJvbSB0aGUgb2NhbWwub3JnIGJsb2cNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhlcmUgYXJlIGxpbmtz IGZyb20gbWFueSBPQ2FtbCBibG9ncyBhZ2dyZWdhdGVkIGF0IFt0aGUgb2NhbWwub3JnDQogIGJs b2ddLg0KDQogIOKAoiBbVGhlIG5ldyBUYXIgcmVsZWFzZSwgYSByZXRyb3NwZWN0aXZlXQ0KDQoN Clt0aGUgb2NhbWwub3JnIGJsb2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4NCg0KW1RoZSBu ZXcgVGFyIHJlbGVhc2UsIGEgcmV0cm9zcGVjdGl2ZV0NCjxodHRwczovL2Jsb2cucm9idXIuY29v cC9hcnRpY2xlcy90YXItcmVsZWFzZS5odG1sPg0KDQoNCk9sZCBDV04NCuKVkOKVkOKVkOKVkOKV kOKVkOKVkA0KDQogIElmIHlvdSBoYXBwZW4gdG8gbWlzcyBhIENXTiwgeW91IGNhbiBbc2VuZCBt ZSBhIG1lc3NhZ2VdIGFuZCBJJ2xsIG1haWwNCiAgaXQgdG8geW91LCBvciBnbyB0YWtlIGEgbG9v ayBhdCBbdGhlIGFyY2hpdmVdIG9yIHRoZSBbUlNTIGZlZWQgb2YgdGhlDQogIGFyY2hpdmVzXS4N Cg0KICBJZiB5b3UgYWxzbyB3aXNoIHRvIHJlY2VpdmUgaXQgZXZlcnkgd2VlayBieSBtYWlsLCB5 b3UgbWF5IHN1YnNjcmliZQ0KICB0byB0aGUgW2NhbWwtbGlzdF0uDQoNCiAgW0FsYW4gU2NobWl0 dF0NCg0KDQpbc2VuZCBtZSBhIG1lc3NhZ2VdIDxtYWlsdG86YWxhbi5zY2htaXR0QHBvbHl0ZWNo bmlxdWUub3JnPg0KDQpbdGhlIGFyY2hpdmVdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0 L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2ZXNdIDxodHRwczovL2FsYW4ucGV0aXRl cG9tbWUubmV0L2N3bi9jd24ucnNzPg0KDQpbY2FtbC1saXN0XSA8aHR0cHM6Ly9zeW1wYS5pbnJp YS5mci9zeW1wYS9pbmZvL2NhbWwtbGlzdD4NCg0KW0FsYW4gU2NobWl0dF0gPGh0dHBzOi8vYWxh bi5wZXRpdGVwb21tZS5uZXQvPg0KDQo= --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of August 13 to 20, 2024.

MlFront - A Java-like package system for OCaml

jbeckford announced

There is now a new library MlFront_Top with a build tool mlfront-top that will generate self-contained OCaml toplevel script= files with parallelism based on @c-cube's moonpool library:

.
=E2=94=9C=E2=94=80=E2=94=80 AcmeWidgets_Std/
=E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 JobsA1.ml
=E2=94=82   =E2=94=94=E2=94=80=E2=94=80 JobsA2.ml
=E2=94=94=E2=94=80=E2=94=80 BobBuilder_Std/
    =E2=94=94=E2=94=80=E2=94=80 JobsB.ml
$ mlfront-top -o buildscript.ml

$ ocaml buildscript.ml -j 2 -native
  legend: -> start | <- finish
     directory create: target/
     file create: target/AcmeWidgets_Std.ml
     link create: AcmeWidgets_Std/JobsA1.ml -> target/AcmeWidgets_Std__J=
obsA1.ml
     link create: AcmeWidgets_Std/JobsA2.ml -> target/AcmeWidgets_Std__J=
obsA2.ml
     link create: BobBuilder_Std/JobsB.ml -> target/BobBuilder_Std__Jobs=
B.ml
  -> compile: AcmeWidgets_Std.JobsA1
  -> compile: AcmeWidgets_Std.JobsA2
  <- compile: AcmeWidgets_Std.JobsA1
  <- compile: AcmeWidgets_Std.JobsA2
  -> compile: AcmeWidgets_Std
  <- compile: AcmeWidgets_Std
  -> compile: BobBuilder_Std.JobsB
  <- compile: BobBuilder_Std.JobsB
  -> executable create: BobBuilder_Std.JobsB
  <- executable create: BobBuilder_Std.JobsB
  done.

$ target/BobBuilder_Std.JobsB
I am an A1!
I am an A2!
I am a B!

It requires the ocaml binary and ocamlc or = ocamlopt. The complete example is at http= s://gitlab.com/dkml/build-tools/MlFront/-/blob/0.4.0-6/tests/MlFront_Top/jo= bs.t/run.t.

Rpmfile library v0.3.0 with new Eio-based reader

Mikhail announced

Today I want to tell you about new version of Rpmfile library. Rpmfile is a library for reading meta= data from RPM= packages. Originally Rpmfile's parser (reader) used Angstrom for parsing. And in the ne= w release added new modern Eio-based reader.=20

Globally, the project is now split into four packages: rpmfile= , which contains signatures and implementation-independent functions, rpmfile-unix with the original Angstrom parser, and rpmfile-e= io (with rpmfile-cli) written using Eio.

My experience porting to Eio

Eio is a fantastic effect-based I/O library for a more modern age in multic= ore OCaml. I think it takes the best ideas from the ecosystem. So built-in = Buf_read and Buf_write modules implement ideas fr= om Angstrom and Faraday libraries. Almost API one-to-one, allowing porting = via copy-paste.=20

But, of course, not everything is so perfect. Unlike the Angstrom.par= se_ function, the Buf_read.parse function thinks I want= to read a whole stream to end of input.

A snippet of the source code:

let parse ?initial_size ~m=
ax_size p flow =3D
  let buf =3D of_flow flow ?initial_size ~max_size in
  format_errors (p <* end_of_input) buf
  (*               ^^^^^^^^^^^^^^^     =
      
                    0_0=
 nice (not)     =
   *)

So I had to rewrite this function myself in a form similar to Angstro= m.Consume.Prefix.

  • Is it a signed or unsigned integer?

    BE.uint16 and other similar functions are signed int ev= en though they have the prefix u in the name for some reason.

  • And a few other differences
    • Angstrom.advance is skip
    • Angstrom.pos is consumed_bytes

P.S.

Thanks for your attention!

GitHub - meta-introspector/ocaml-libppx-import-yojson-introspe= ctor: Using libppx, ppx_import, reflect over ast using

Jim Dupont announced

Here is a working first version (with warts) of a ppxlib to yojson converte= r, am still testing it but the hello world is working, I have tried multiple t= imes to get this to work,=20 and finally settled on the import route to override the type system. code here: https://github.com/meta-introspector/ocaml-libppx-import-yojs= on-introspector

example snippet

{
  "pexp_desc": [
    "Pexp_constant",
    [
      "Pconst_string",
      "Hello, World!"
    ]
  ]
}

Dune Developer Preview Updates

ostera announced

Just wanted to share some of the work the Dune has been up to lately re: th= e Developer Preview we announced here :) =E2=80=93 we'll be= using this thread to share more updates as things go.

As always, we hold our Dune Developer meetings in public and you're more th= an welcome to subscribe to our public Calendar (Google, iCal)

Getting ready for the Public Beta

As we prepare for the public beta, we're ramping up the DX interviews and e= nsuring the first few users will have a fun, productive experience with the= developer preview.

:inbox_tray: If you signed up for the Dev Preview back in May, check your i= nbox for a link and instructions to schedule your DX interview with us.

Here's a sample video (Mastodon or X) where you can see me building the Riot project on a mach= ine that does not have OCaml installed. It is pretty neat!

Seriously, big shoutout to the Dune team at Tarides[0] who have been doing = a phenomenal job :clap: :sparkles: :camel:=20

So here's what getting started with OCaml looks like today with the Dune De= veloper Preview as of today (August 19 2024):

  1. get dune from our binary distribution =E2=80=93 we'll soon= make this public!
  2. run dune pkg lock in your favorite project
  3. run dune build

That's it. No need to install anything else, Dune will see that lock file, = fetch, and build all necessary dependencies.

:world_map: These are some strong step towards the OCaml Platform vision for 2026, that we ar= e actively working towards. If you have any thoughts or feedback please let= me know!

There are more improvements coming that will help remove friction to get st= arted and creating a delightful experience. Both of these things we strongl= y believe will help onboard new users to the OCaml world.

Here's a few in the works:

  • Various DX improvements =E2=80=93 from new outputs to simplified= workflows, we want to make using Dune just delightful.
  • Bundled support for dev tools (ocalmformat, odoc, lsp) =E2=80=93= the default toolset will be available without any extra steps! just call <= code>dune fmt, and it works. No need to manually install anything el= se.
  • Automatic dependency locking =E2=80=93 when building, and even o= n watch mode, Dune will lock your dependencies by default and keep the lock= up to date.
  • Cross-project Caching =E2=80=93 by default we'll enabled a local= Dune cache that across the system, so you never rebuild the same dependenc= y even across projects.
  • Signed binaries with certificates of origin =E2=80=93 we care de= eply about security and want to make sure that any binary we ship will be e= asily verified and tracked back to its sources.

Stay tuned! :wave:=20

PS: here's a longer video (Mastodon, X) showing you the setup for OCaml from zero, creating a = new project, and adding a dependency, all within ~5 minutes

[0] @emillon @Leonidas @gridbugs @tmattio. Ambre Shumay, Alpha Diallo, Etie= nne Marais

Ppxlib dev meetings

Nathan Rebours announced

This month's meeting is scheduled for tomorrow, [date=3D2024-08-20 time=3D1= 7:00:00 timezone=3D"Europe/London"]!

The meeting agenda thus far is to discuss the following:

The meeting will be hosted on google meet here: https://meet.google.com/yxw-ejnu-cju

Everyone is very welcome to join! :camel:

Pragmatic Category Theory: Part 2 published!

Dmitrii Kovanikov announced

I just published the second part of my series, so I u= pdated the topic.

Let me know when notifications become too noisy :slight_smile:

Dune dev meeting on 2024-08-21, 10am CEST

Steve Sherratt announced

Hi! The next public dune dev meeting will be held on 2024-08-21, 10am CEST.= Please feel free to let me know any topics you'd like us to discuss and I'= ll update the meeting notes. The zoom link for the meeting is: https://us06web.zoom.us/j/85096877776?pwd=3DcWNhU1dHQ1ZNSjZuOUZCQ0h2by9Udz= 09

Other OCaml News

From the ocaml.org blog

Here are links from many OCaml blogs aggregated at the ocaml.org blog.

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--=-=-=--