From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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=jwN7BAWM; dkim-atps=neutral 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=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id C5745400CD for ; Tue, 6 Oct 2026 13:15:17 +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=ZN01kH+SUAFOXPUD0usCxg6cWdNTd3cTO7mrhZ47XeA=; b=jwN7BAWM0zTOxwbsYUmktS+FftXtOEOBhrqCEfBreeX54VlJTO7z0AZK upyT+p2Zvn5nDBXkihC4uz5ht6InWRFXxeVPYXdfxANw8m1YYt81dxKOf m2HXuQJFTqAXIGE+Dy9DRihH2WsLNBBsbvQsUsJJj35N6fvrRxZbHkyx2 I=; X-CSE-ConnectionGUID: IJTx6ABXSzWN5w9pzwRMSQ== X-CSE-MsgGUID: qHvlQQwITS6k7KFcvoepUQ== 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@prod-sympa-app.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.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; 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:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 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@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.27,143,1787004000"; d="asc'?scan'208,217";a="298770461" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 06 Oct 2026 15:15:16 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 9B74382736; Tue, 6 Oct 2026 15:15:15 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 4E1E2804AC for ; Tue, 6 Oct 2026 15:15:06 +0200 (CEST) X-CSE-ConnectionGUID: muhE13AZSwCZ8im2ITnv6Q== X-CSE-MsgGUID: vvutbYRcTj2Mv8s8lH86lw== IronPort-SDR: 6ac4f458_dQogCtf1RTMQDmZ5JlkAD/lbgVHb3oIAC3SPCugHxRQnyFH frIdOSIWigZE+5tLzEZuh7P0/HRBRa7s3zJJWXw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0FOBGZe88RqjyIeaIFaFoJFgTtbKRsBaQZcBRQFGgcIS?= =?us-ascii?q?QMBhBg8g0+FKwmIcIEWkDaCPIMxg3+BEIFpgSsWIQIOBwEDAQgFLgEbBAECB?= =?us-ascii?q?AEBAQIBAgGCC4JzAhY5AQEPjSoCHwYBBDQTAQIEAwIDAQEBAQEBAQEBAQELA?= =?us-ascii?q?QEBBAEBAQIBAQIEAwEBAQECEAEBAQEBATkFSYZPDUkBiUQBgVgWUXFeAgQBA?= =?us-ascii?q?gYBNgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QECBAQEAQcBLCoBGAsODgEIBAYTAQEfBxIYIwMKAQUEAQYDAgQNATUXARIUB?= =?us-ascii?q?QEbCIFtWAGCIgJQAwQBDAaaQZsken8zgQGCDAEBBoEJPgMBAQILAxgm2hqBH?= =?us-ascii?q?0MJCYFNgViBHoJ8glEPDQEFJklqAgEChFEJhDgnD4FVRIEVgilKBQJvgmEBA?= =?us-ascii?q?QEBGERIBQERAgEODA8kCRICgxGCaoImehIbgV0FLS4BBEqGbIsugWYDWSwBV?= =?us-ascii?q?RMXCwcFXoEIAyovLW4yHYEjPhcvWBsGBYEdgSCCFiMZNnqBCV6BKylhEBeBC?= =?us-ascii?q?YIHAoJUggACAUlBDgdFUwklQxJHJiIIEgkBExowC4EbODwJKEEXDBBtPTcVG?= =?us-ascii?q?Y8YECENgU1IGR6BXBscDh8ZCA0LERMfBRoJCwcDEQ4CEQ8CNiMKBQIEDQIBF?= =?us-ascii?q?BEMFAMEES8FAQUGAgkCLY8ZgQiCNwIQAxIDLI9cjhmTWR1tNAeEIYFgBgyIL?= =?us-ascii?q?1uBJotmgicnh1OEUYEKhUCeM4EhIphmI4legSYJgW8fTIcQjlATAwqFOYF/I?= =?us-ascii?q?y4OMF0MBzMaMEOCZwkWMRwPVwGNVhaBFAEIgkNBQAM6gSaBI1E7gSjFXQNCN?= =?us-ascii?q?QEBAQEHBDAHAgcBAQsBA4VOHQEBBIFkih4CAiMBAwmBTAEB?= IronPort-PHdr: A9a23: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 2UTQZ5TxXrfE5ULjgc/b7wk9gwkHQ== IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:K2cBgKhfXP1rO3pUkmXMYv3Q4nBQXuUji2hC6mlwRA09TyX4rb HNoB1/73WYtN9/YhAdcLy7VJVoIkmslqKdg7NwAV7KZmCP01dAR7sN0WKN+VLdMhy73tEY/6 ZteapzBbTLfD1HpPe/xhK3V/IpwNzvytHOuQ4y9QYIcT1X X-Talos-CUID: 9a23:PgTKh20zTpVnsb55HY3qlLxfH90lXySG5UXrPGSKWWdsEpypT0HOwfYx X-Talos-MUID: 9a23:1xINZQRIa4ih+7bNRXTymix+PvZS6JisUmUTwY5Wv+nUayhvbmI= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.27,143,1787004000"; d="asc'?scan'208,217";a="159014512" X-IronPort-Outbreak-Status: No, level 2, Malware - Malware X-MGA-submission: =?us-ascii?q?MDFJ0yYVx9o9Svq/DU0RQPirJ3LzWfEJrX48Ps?= =?us-ascii?q?8Bp+je5vkoLCxh1xOLWZUMNjewLot9btI22/ZO4+y3BgMgqjXD4CxYFh?= =?us-ascii?q?WxUSVAvDZarPMoDwkb6ACpuB6/p+hHbn+HRn+b8VFjNjLCEoKUiBPzTn?= =?us-ascii?q?NM7BT6plNBttqW/PCgHxx8cA=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; 06 Oct 2026 15:15:04 +0200 Received: from tm.home (82-66-240-41.subs.proxad.net [82.66.240.41]) (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 721291A46F; Tue, 6 Oct 2026 15:15:03 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 06 Oct 2026 15:15:00 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="===-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Oct 6 15:15:03 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.498983, queueID=A07891A471 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: 19592 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/mixed; boundary="=-=-=" --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgU2VwdGVtYmVyIDI5IHRvDQpPY3RvYmVyIDA2LCAyMDI2Lg0KDQpUYWJsZSBvZiBDb250 ZW50cw0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCnRpbnlib3g6IDE1MCBjbGFzc2ljIGdhbWVzIChQb25nIHRvIFF1YWtlKSBhbmQgQXBwcywg aW4gT0NhbWwsIGFuZCBtb3JlDQpJWCwgYSBmdWxsIE9TIChrZXJuZWwsIHRvb2xjaGFpbiwgdmNz LCDigKYpIGluIE9DYW1sDQpNaWNoZWwgTWF1bnksIDE5NTktMjAyNg0KZHJlYW0taHRtbCA0LjAu MA0KaGVnZWwtb2NhbWwgMC4yNS4wIC0gY29uY3VycmVudCBzdGF0ZWZ1bCBwcm9wZXJ0eS1iYXNl ZCB0ZXN0aW5nDQpUdXRvcmlhbCBvbiBHQURUcw0KT0NhbWwgQ29tcGlsZXIgSW1wbGVtZW50ZWQg aW4gQysrOiBJdCdzIE5vdCBKdXN0IEZhc3RlcuKAlEl0IEFsc28gSW5jcmVhc2VzIFRydXN0DQpD b25mLmZ1bmNwLm9yZyBpcyBhIHNjYW0gT0NhbWwgY29uZmVyZW5jZQ0KVmFhc3QgMC4wLjAgKyBE ZXNpZ24gZGlzY3Vzc2lvbg0KYTJhIFNESyBpbiBPQ2FtbA0KT2xkIENXTg0KDQoNCnRpbnlib3g6 IDE1MCBjbGFzc2ljIGdhbWVzIChQb25nIHRvIFF1YWtlKSBhbmQgQXBwcywgaW4gT0NhbWwsIGFu ZCBtb3JlDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBB cmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi10aW55Ym94LTE1MC1j bGFzc2ljLWdhbWVzLXBvbmctdG8tcXVha2UtYW5kLWFwcHMtaW4tb2NhbWwtYW5kLW1vcmUvMTg1 NjkvMT4NCg0KDQpZb2FubiBQYWRpb2xlYXUgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBIaSwNCg0KICBJIG1hZGUgc29tZXRoaW5nLiBXZWxsIENsYXVkZSBtYWRlIHNvbWV0aGlu ZywgbXkgZmlyc3QgdmliZSBjb2RlZA0KICBwcm9qZWN0IDpzbGlnaHRfc21pbGU6IEFuIG9kZSB0 byBjb2RlLCAxNTAgY2xhc3NpYyB2aWRlbyBnYW1lcyAoZnJvbQ0KICBQb25nIHRvIFF1YWtlKSwg NTAgY2xhc3NpYyBhcHBzIChmcm9tIFZpc2lDYWxjIGFuZCBUdXJib1Bhc2NhbCB0bw0KICBPZmZp Y2UgYW5kIENocm9tZSksIGFsbCBwbGF5YWJsZSBvbmxpbmUgYW5kIHlvdSBjYW4gYWxzbyBhZG1p cmUgdGhlaXINCiAgdGlueSBPQ2FtbCBjb2RlLiAgcmVwbzogPGh0dHBzOi8vZ2l0aHViLmNvbS9h cnl4L29jYW1sLWVsbS1wbGF5Z3JvdW5kPg0KDQogIHRoZSB0aW55Ym94IHdlYiBhcHAgdG8gcGxh eToNCiAgPGh0dHBzOi8vYXJ5eC5naXRodWIuaW8vb2NhbWwtZWxtLXBsYXlncm91bmQvdGlueWJv eC5odG1sPg0KDQoNCklYLCBhIGZ1bGwgT1MgKGtlcm5lbCwgdG9vbGNoYWluLCB2Y3MsIOKApikg aW4gT0NhbWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hp dmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWl4LWEtZnVsbC1vcy1rZXJu ZWwtdG9vbGNoYWluLXZjcy1pbi1vY2FtbC8xODU3MC8xPg0KDQoNCllvYW5uIFBhZGlvbGVhdSBh bm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhpLA0KDQogIEl0IGlzIG15IHBsZWFz dXJlIHRvIGFubm91bmNlIElYLCBhIGZ1bGwgb3BlcmF0aW5nIHN5c3RlbSB3cml0dGVuIGluDQog IE9DYW1sIChieSBDbGF1ZGUgQ29kZSkuIEl0IGlzIGEgY29udGludWF0aW9uIG9mIHR3byBvZiBt eSBwYXN0DQogIHByb2plY3RzLCBwcmluY2lwaWEgc29mdHdhcmljYSBhbmQgWGlYLg0KDQogIFJl cG86IDxodHRwczovL2dpdGh1Yi5jb20vYXJ5eC9JWD4NCg0KICB3ZWJzaXRlOiA8aHR0cHM6Ly9h cnl4LmdpdGh1Yi5pby9JWC8+DQoNCiAgWW91IGNhbiBldmVuIGV4cGxvcmUgdGhlIGNvZGViYXNl IHdpdGggYSBuaWNlIHZpc3VhbGl6ZXIsIGNvZGVtYXB2Mg0KICAoaXRzZWxmIGEgcmV3cml0ZSwg dXNpbmcgQ2xhdWRlLCBvZiB0d28gb2YgbXkgcGFzdCBwcm9qZWN0cywgY29kZW1hcA0KICBhbmQg Y29kZWdyYXBoIGRvbmUgd2hpbGUgYXQgRmFjZWJvb2spOg0KICA8aHR0cHM6Ly9hcnl4LmdpdGh1 Yi5pby9JWC9jb2RlbWFwLmh0bWw+IFNvbWUgbGl0ZXJhdGUgYm9va3MNCiAgZXhwbGFpbmluZyBp biBkZXRhaWwgdGhlIGNvZGUgd2lsbCBhcnJpdmUgc29vbi4gIEVuam95IQ0KDQoNCk1pY2hlbCBN YXVueSwgMTk1OS0yMDI2DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L21pY2hlbC1tYXVueS0xOTU5LTIwMjYvMTg1NzEvMT4NCg0KDQpnYXNj aGUgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBEZWFyIGFsbCwNCg0KICBJdCBpcyB3aXRoIGdyZWF0IHNhZG5lc3MgdGhhdCB3 ZSAodGhlIE9DYW1sIFNvZnR3YXJlIEZvdW5kYXRpb24pIGFyZQ0KICBzaGFyaW5nIHRoZSBuZXdz IG9mIHRoZSBkZWF0aCBvZiBNaWNoZWwgTWF1bnksIGEgbG9uZy10aW1lIG1lbWJlciBvZg0KICB0 aGUgT0NhbWwgY29tbXVuaXR5LiBNaWNoZWwgcGFzc2VkIGF3YXkgb24gU2VwdGVtYmVyIDE3dGgg MjAyNiAoW21vcmUNCiAgaW5mb3JtYXRpb24sIGluIEZyZW5jaF0pLg0KDQogIER1cmluZyBoaXMg Y2FyZWVyIGFzIElOUklBIHJlc2VhcmNoIHNjaWVudGlzdCwgcHJvZmVzc29yIGF0IEVOU1RBIGFu ZA0KICBDRU8gb2YgTm9tYWRpYyBMYWJzLCBhbmQgYW1vbmcgaGlzIG1hbnkgY29udHJpYnV0aW9u cywgTWljaGVsOg0KICDigKIgY28tYXV0aG9yZWQgaW4gMTk4NSB0aGUgcGFwZXIgdGhhdCBzdGFy dGVkIENhbWw6ICJUaGUgQ2F0ZWdvcmljYWwNCiAgICBBYnN0cmFjdCBNYWNoaW5lIiwgQ291c2lu ZWF1LCBDdXJpZW4sIE1hdW55IChbUERGXSkgOw0KICDigKIgYWN0aXZlbHkgY29udHJpYnV0ZWQg aW4gdGhlIGxhdGUgODBzIHRvIHRoZSAiSGVhdnkgQ2FtbCINCiAgICBpbXBsZW1lbnRhdGlvbiB0 aGF0IHByZWRhdGVkIENhbWwgTGlnaHQgYW5kIE9DYW1sICggc2VlDQogICAgPGh0dHBzOi8vb2Nh bWwub3JnL2hpc3Rvcnk+IGZvciBtb3JlIGRldGFpbHMgKSA7DQogIOKAoiBpbnRyb2R1Y2VkIHN0 cmVhbSBwYXJzZXJzIHdpdGggRGFuaWVsIGRlIFJhdWdsYXVkcmUgKFsxOTkyIHRlY2gNCiAgICBy ZXBvcnRdKSwgZGVzaWduZWQgYW5kIGNvLW1haW50YWluZWQgdGhlIGNhbWxwNCBwcmVwcm9jZXNz b3IgOw0KICDigKIgd3JvdGUgd2l0aCBHdXkgQ291c2luZWF1IHRoZSBmaXJzdCBib29rIGluIEVu Z2xpc2ggYWJvdXQgT0NhbWwsICJUaGUNCiAgICBmdW5jdGlvbmFsIGFwcHJvYWNoIHRvIHByb2dy YW1taW5nIiAoMTk5OCkgOw0KICDigKIgdGF1Z2h0IChPKUNhbWwgaW4gRnJlbmNoIHVuaXZlcnNp dGllcyBhbmQgZW5naW5lZXJpbmcgc2Nob29scw0KICAgIHRocm91Z2hvdXQgaGlzIGNhcmVlciAo UGFyaXMgNywgUG9seXRlY2huaXF1ZSwgRU5TVEEpIDsNCiAg4oCiIGFkdmlzZWQgc2V2ZXJhbCBQ aEQgc3R1ZGVudHMsIGluY2x1ZGluZyBzZXZlcmFsIHdobyByZW1haW5lZCBhY3RpdmUNCiAgICBp biB0aGUgT0NhbWwgY29tbXVuaXR5OiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4s IEJlbm/DrnQgVmF1Z29uDQogICAgYW5kIFBpZXJyaWNrIENvdWRlcmMgOw0KICDigKIgY3JlYXRl ZCBpbiAyMDAxIHRoZSBDYW1sIENvbnNvcnRpdW0sIGFuIGVhcmxpZXIgc3RydWN0dXJlIGZvcg0K ICAgIGluZHVzdHJpYWwgdXNlcnMgdG8gcGFydGljaXBhdGUgaW4gYW5kIGZ1bmQgdGhlIGRldmVs b3BtZW50IG9mIE9DYW1sDQogICAgYXQgSU5SSUEgOw0KICDigKIgY3JlYXRlZCBpbiAyMDE4IHRo ZSBPQ2FtbCBGb3VuZGF0aW9uLCB3aXRoIHRoZSBtb3JlIGFtYml0aW91cyBnb2Fscw0KICAgIG9m IGNvbGxlY3RpbmcgbW9yZSBmdW5kcyB0byBhbHNvIHN1cHBvcnQgdGhlIGJyb2FkZXIgT0NhbWwg c29mdHdhcmUNCiAgICBlY29zeXN0ZW0uIE1pY2hlbCBoYWQgdG8gbGVhdmUgdGhlIE9DYW1sIEZv dW5kYXRpb24gd2hlbiBoZSBtb3ZlZA0KICAgIGZyb20gSU5SSUEgdG8gTm9tYWRpYyBMYWJzLCBh bmQgd2UgdHJ5IG91ciBiZXN0IHRvIGZvbGxvdyBoaXMNCiAgICB2aXNpb24uDQoNCiAgVGhpcyBz b2xlbW4gbW9tZW50IGlzIGFsc28gYW4gb2NjYXNpb24gdG8gcmVmbGVjdCBvbiB0aGUgcmljaCBo aXN0b3J5DQogIG9mIG91ciBPQ2FtbCBlY29zeXN0ZW0sIHdoaWNoIGdyb3dzIGJ5IGEgY29sbGVj dGlvbiBvZiBpbmRpdmlkdWFsDQogIGNvbnRyaWJ1dGlvbnMuIEFzIHdlIG1hcmsgTWljaGVs4oCZ cyBwYXNzaW5nLCB3ZSBjZWxlYnJhdGUgYW5kIHRoYW5rDQogIGhpbSwgYXMgd2VsbCBhcyB0aGUg bWFueSBpbmRpdmlkdWFscyB3aG8gZGVkaWNhdGUgdGhlaXIgdGltZSBhbmQNCiAgZWZmb3J0LCBv ZnRlbiBvdmVyIGRlY2FkZXMsIHRvIGJ1aWxkaW5nIG91ciBwcm9ncmFtbWluZyBjb21tb25zLg0K DQoNClttb3JlIGluZm9ybWF0aW9uLCBpbiBGcmVuY2hdDQo8aHR0cHM6Ly93d3cucGZsb2ljLm5l dC9QMTIzMC5hc3B4P0lkUGVyPWV5bkpaOEFEbiZJZEFOPUF1dG8+DQoNCltQREZdIDxodHRwczov L3d3dy5pcmlmLmZyL35zY2hlcmVyL2RvYy9vdGhlcnMvQ0FNLTE5ODUucGRmPg0KDQpbMTk5MiB0 ZWNoIHJlcG9ydF0gPGh0dHBzOi8vaW5yaWEuaGFsLnNjaWVuY2UvaW5yaWEtMDAwNzQ4OTgvPg0K DQoNCmRyZWFtLWh0bWwgNC4wLjANCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv YW5uLWRyZWFtLWh0bWwtNC0wLTAvMTg1NzMvMT4NCg0KDQpZYXdhciBBbWluIGFubm91bmNlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSADQoNCiAgSGksIGRyZWFtLWh0bWwgNC4wLjAgaGFzIGJlZW4gcmVsZWFzZWQgdG8gb3BhbToN CiAgPGh0dHBzOi8vb2NhbWwub3JnL3AvZHJlYW0taHRtbC80LjAuMD4NCg0KICBSZXBvOiA8aHR0 cHM6Ly9naXRodWIuY29tL3lhd2FyYW1pbi9kcmVhbS1odG1sPiBBUEkgZG9jczoNCiAgPGh0dHBz Oi8veWF3YXJhbWluLmdpdGh1Yi5pby9kcmVhbS1odG1sL2RyZWFtLWh0bWwvRHJlYW1faHRtbC9p bmRleC5odG1sPg0KDQogIERyZWFtLWh0bWwgaXMgYSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIEhU TUwsIGNsb3NlbHkgaW50ZWdyYXRlZCB3aXRoDQogIERyZWFtLiBJdCBjYW4gYmUgdXNlZCBhcyBh biBhbHRlcm5hdGl2ZSB0byBEcmVhbeKAmXMgYnVpbHQtaW4gRW1iZWRkZWQNCiAgTUwgdGVtcGxh dGluZyBsYW5ndWFnZSBhbmQgY29tZXMgd2l0aCBhbGwgY3VycmVudCBodG14IGF0dHJpYnV0ZXMN CiAgZGVmaW5lZCBvdXQgb2YgdGhlIGJveC4NCg0KICBJbiB0aGlzIHJlbGVhc2UsIEkgbWFkZSBh IGZldyBicmVha2luZyBjaGFuZ2VzIChoZW5jZSBtYWpvciB2ZXJzaW9uDQogIGJ1bXApOg0KDQog IOKAoiBSYWlzZSBleGNlcHRpb25zIG9uIHBhdGggcGFyYW1ldGVyIHBhcnNlIGVycm9yczogaW5z dGVhZCBvZg0KICAgIHJlc3BvbmRpbmcgd2l0aCA0MDAgQmFkIFJlcXVlc3QuIFRoaXMgYWxsb3dz IHlvdSB0byBob29rIGluIHlvdXIgb3duDQogICAgY3VzdG9tIHJlc3BvbnNlIGJ5IGNhdGNoaW5n IHRoZSBwYXJzZSBleGNlcHRpb24uDQogIOKAoiBSZW1vdmUgdW51c2VkIGZvcm0gZGVjb2RlciBl cnJvciBrZXlzOiBzcGVjaWZpY2FsbHkNCiAgICBgZXJyb3JfZXhwZWN0ZWRfaW50MzInIGFuZCBg ZXJyb3JfZXhwZWN0ZWRfaW50NjQnIHdoaWNoIGFyZSBhbHJlYWR5DQogICAgY292ZXJlZCBieSBg ZXJyb3JfZXhwZWN0ZWRfaW50Jy4NCiAg4oCiIEZpbmFsbHksIHJldmVydCB0byB0aGUgcHJldmlv dXMgc3R5bGUgb2YgSFRNTCBnZW5lcmF0aW9uLCBicmVha2luZw0KICAgIGxpbmVzIGF0IHRoZSBz dGFydCBvZiBlYWNoIGF0dHJpYnV0ZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyB0aGUNCiAg ICBIVE1MIHdpdGggaW5kZW50YXRpb24uIFRoaXMgaXMgZG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVh c29ucy4NCg0KICBGaXhlczoNCg0KICDigKIgUm91dGVyIG1hdGNoaW5nIG9uIGVuY29kZWQgdmFs dWVzLCBlZw0KICAgIGAvYWNjb3VudHMvJUYwJTlGJTkxJThEL3ZlcnNpb25zLzEnIGlzIG5vdyBh YmxlIHRvIGV4dHJhY3QgdGhlDQogICAgc2Vjb25kIHNlZ21lbnQsIGDwn5GNJy4NCg0KICBOZXcg YWRkaXRpb25zOg0KDQogIOKAoiBJbnZva2VyIEFQSSBhdHRyaWJ1dGVzDQogIOKAoiBTb21lIG1v cmUgU1ZHIGVsZW1lbnRzDQoNCiAgRmluYWxseSwgcmFpc2VkIHRoZSBtaW5pbXVtIHN1cHBvcnRl ZCBPQ2FtbCB2ZXJzaW9uIHRvIDUuMy4wIGJlY2F1c2UNCiAgb2YgcHB4bGliLg0KDQogIEVuam95 IQ0KDQoNCmhlZ2VsLW9jYW1sIDAuMjUuMCAtIGNvbmN1cnJlbnQgc3RhdGVmdWwgcHJvcGVydHkt YmFzZWQgdGVzdGluZw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBz Oi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4taGVnZWwtb2NhbWwtMC0yNS0wLWNvbmN1cnJlbnQt c3RhdGVmdWwtcHJvcGVydHktYmFzZWQtdGVzdGluZy8xODU3NS8xPg0KDQoNCkV0aGFuIENob3Ug YW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBIZWxsbywgd2UgZXhjaXRlZCB0byBhbm5vdW5jZSBoZWdlbC1v Y2FtbCAwLjI1LjAhDQoNCiAgU2luY2Ugb3VyIGxhc3QgYW5ub3VuY2VtZW50IG9mIGhlZ2VsLW9j YW1sIDAuMTQuMSwgd2UndmUgYWRkZWQNCiAgY29uY3VycmVudCBzdGF0ZWZ1bCBwcm9wZXJ0eS1i YXNlZCB0ZXN0aW5nIGFuZCBub25kZXRlcm1pbmlzbSBoYW5kbGluZw0KICB0byBIZWdlbC4gU3Rh dGVmdWwgcHJvcGVydHkgYmFzZWQgdGVzdGluZyBzZXF1ZW5jZXMgYWN0aW9ucyAod2hpY2ggd2UN CiAgY2FsbCBydWxlcykgdGhhdCBtdXRhdGUgdGhlIHN0YXRlIG9mIHNvbWUgbW9kZWwgYW5kIHRo ZSBzeXN0ZW0gdW5kZXINCiAgdGVzdC4gVGhlIGNvbmN1cnJlbnQgcGFydCBjb21lcyBmcm9tIHJ1 bm5pbmcgcnVsZXMgY29uY3VycmVudGx5LiBIZWdlbA0KICBzcGlucyB1cCBzb21lIG51bWJlciBv ZiB3b3JrZXJzIGFuZCBkaXN0cmlidXRlcyBzb21lIG51bWJlciBvZiBydWxlcw0KICB0byBlYWNo IHdvcmtlci4gUnVsZXMgd2l0aGluIGEgd29ya2VyIHJ1biBzZXF1ZW50aWFsbHksIGJ1dCBydWxl cyBpbg0KICBkaWZmZXJlbnQgd29ya2VycyBtYXkgcnVuIGNvbmN1cnJlbnRseS4gT2YgY291cnNl LCB0aGlzIGludHJvZHVjZXMNCiAgbm9uZGV0ZXJtaW5pc20gc2luY2UgdGhlIHdvcmtlcnMgY2Fu IHJ1biBpbiBhbnkgb3JkZXIgb3Igc3VzcGVuZC4gVG8NCiAgaGFuZGxlIHRoaXMsIEhlZ2VsIHJl cGVhdGVkbHkgcmVwbGF5cyBmYWlsdXJlcyBhbmQgb3V0cHV0cyB0aGUgbnVtYmVyDQogIG9mIHRp bWVzIHRoZSBmYWlsdXJlIHdhcyByZXByb2R1Y2VkLiBOb25kZXRlcm1pbmlzbSBoYW5kbGluZyBj YW4gYWxzbw0KICBiZSB0dXJuZWQgb2ZmLCBzbyBhbnkgbm9uZGV0ZXJtaW5pc3RpYyBmYWlsdXJl IHByb2R1Y2VzIGEgZmxha3kgdGVzdA0KICBlcnJvciBpbnN0ZWFkLiBPZiBjb3Vyc2UsIHJ1bm5p bmcgSGVnZWwgaW5zaWRlIG9mIFtBbnRpdGhlc2lzXSB3aWxsDQogIGdpdmUgcmVwcm9kdWNpYmxl IGZhaWx1cmVzLg0KDQogIEZvciBhbiBleGFtcGxlIG9mIGNvbmN1cnJlbnQgc3RhdGVmdWwgdGVz dGluZywgc2VlIHRoZSBbZG9jc10uDQoNCiAgVGhlIHVuaXF1ZSBmZWF0dXJlIG9mIEhlZ2VsIGNv bmN1cnJlbnQgc3RhdGVmdWwgdGVzdHMgaXMgdGhlIGFiaWxpdHkNCiAgdG8gcGFzcyBpbiBkaWZm ZXJlbnQgY29uY3VycmVuY3kgY2FwYWJpbGl0aWVzLiBXb3JrZXJzIGNhbiBiZSBvbg0KICB0aHJl YWRzLCBkb21haW5zLCBvciBhbnl0aGluZyBvZiB0aGUgW2BDb25jdXJyZW5jeS50JyB0eXBlLl0g V2UgaGF2ZQ0KICBpbmNsdWRlZCBhIHRocmVhZCBjYXBhYmlsaXR5IGFuZCBkb21haW5zIGNhcGFi aWxpdHkgZm9yIHlvdXINCiAgY29udmVuaWVuY2UuIEhlZ2VsIGRlZmF1bHRzIHRvIHVzaW5nIHRo cmVhZHMuDQoNCiAgV2l0aCB0aGUgW2BoZWdlbF9qYW5lX2FzeW5jJ10gc3VibGlicmFyeSwgSmFu ZSBTdHJlZXQgZWNvc3lzdGVtIHVzZXJzDQogIGNhbiBhbHNvIHJ1biBzZXF1ZW50aWFsIHN0YXRl ZnVsIHRlc3RzIHdob3NlIHJ1bGVzIGFyZSBhc3luYw0KICAocmV0dXJuaW5nIGB1bml0IERlZmVy cmVkLnQnKS4NCg0KICBGb3IgT3hDYW1sIHVzZXJzLCBoZWdlbC1vY2FtbCBpcyBmdWxseSBjb21w YXRpYmxlIHdpdGggT3hDYW1sDQogIDUuMi4wLW1pbnVzMzkuIFdpdGggdGhlIFtgaGVnZWxfamFu ZV9jb25jdXJyZW50J10gc3VibGlicmFyeSwgT3hDYW1sDQogIHVzZXJzIGNhbiBhbHNvIHBhc3Mg aW4gY29uY3VycmVuY3kgY2FwYWJpbGl0aWVzIGZyb20gdGhlIGBDb25jdXJyZW50Jw0KICBsaWJy YXJ5LiBhbmQgcnVuIGNvbmN1cnJlbnQgYXN5bmMgc3RhdGVmdWwgdGVzdHMgd2l0aA0KICBgaGVn ZWxfamFuZV9hc3luYycuDQoNCiAgSGFwcHkgdGVzdGluZyBhbmQgY29udHJpYnV0aW5nIQ0KDQoN CltBbnRpdGhlc2lzXSA8aHR0cHM6Ly9hbnRpdGhlc2lzLmNvbT4NCg0KW2RvY3NdDQo8aHR0cHM6 Ly9oZWdlbC5kZXYvb2NhbWwvaGVnZWwvSGVnZWwvU3RhdGVmdWwjY29uY3VycmVudC1zdGF0ZWZ1 bC10ZXN0aW5nPg0KDQpbYENvbmN1cnJlbmN5LnQnIHR5cGUuXQ0KPGh0dHBzOi8vaGVnZWwuZGV2 L29jYW1sL2hlZ2VsL0hlZ2VsL0NvbmN1cnJlbmN5I3R5cGUtdC5zcGF3bl9qb2luX24+DQoNCltg aGVnZWxfamFuZV9hc3luYyddIDxodHRwczovL2hlZ2VsLmRldi9vY2FtbC9oZWdlbC9oZWdlbF9q YW5lX2FzeW5jPg0KDQpbYGhlZ2VsX2phbmVfY29uY3VycmVudCddDQo8aHR0cHM6Ly9oZWdlbC5k ZXYvb2NhbWwvaGVnZWwvaGVnZWxfamFuZV9jb25jdXJyZW50Pg0KDQoNClR1dG9yaWFsIG9uIEdB RFRzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAN Cg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3R1dG9yaWFsLW9uLWdh ZHRzLzE0MDQwLzMzPg0KDQoNCkNvbnRpbnVpbmcgdGhpcyB0aHJlYWQsIFJhcGhhw6tsIFByb3Vz dCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEkndmUgd3Jp dHRlbiBhIHN1cHBsZW1lbnQgdG8gdGhlIHR1dG9yaWFsOg0KDQogIDxodHRwczovL3JhcGhhZWwt cHJvdXN0LmdpdGxhYi5pby9jb2RlL2dhZHQtd2hhdC1hYm91dC1waGFudG9tLXR5cGVzLmh0bWw+ DQoNCiAgSXQgY29tcGFyZXMgR0FEVHMgYW5kIFBoYW50b20gVHlwZXMuIEl0IGluY2x1ZGVzIGEg KGNvbXB1bHNvcnk/KQ0KICBtZW50aW9uIG9mIFR5eG1sIGluIGRpc2N1c3Npb24gb2YgUGhhbnRv bSBUeXBlcy4gSWYgYW55b25lIGhhcyBvdGhlcg0KICBnb29kIGV4YW1wbGVzIHRvIHNoYXJlIEkg bWlnaHQgYWRkIHRoZW0uDQoNCg0KT0NhbWwgQ29tcGlsZXIgSW1wbGVtZW50ZWQgaW4gQysrOiBJ dCdzIE5vdCBKdXN0IEZhc3RlcuKAlEl0IEFsc28gSW5jcmVhc2VzIFRydXN0DQrilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAN Cg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L29jYW1sLWNvbXBp bGVyLWltcGxlbWVudGVkLWluLWMtaXRzLW5vdC1qdXN0LWZhc3Rlci1pdC1hbHNvLWluY3JlYXNl cy10cnVzdC8xODU3Ni8xPg0KDQoNCk1pY2hhZWwgQmFjYXJlbGxhIGFubm91bmNlZA0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgWW91J3JlIGFic29sdXRlbHkgcmlnaHQgdG8gYmUgc2tl cHRpY2FsIG9mIHlvdXIgY29tcGlsZXIgYmluYXJpZXMuIEluDQogIHRoaXMgcG9zdCwgd2UnbGwg ZXhwbG9yZSBob3cgYSBjb21wcmVoZW5zaXZlIEMrKyByZWltcGxlbWVudGF0aW9uDQogIHVubG9j a3MgRERDIHZlcmlmaWNhdGlvbiBmb3IgT0NhbWwg4oCUIHdoaWxlIGRlbGl2ZXJpbmcgbWVhbmlu Z2Z1bA0KICBjb21waWxlLXRpbWUgaW1wcm92ZW1lbnRzLiDwn5qADQoNCiAg4oCUDQoNCiAgV2Fp dCEgRG9uJ3QgbGVhdmUgeWV0ISBUaGUgcmVzdCBvZiB0aGlzIHdhcyB0eXBlZCBjaGFyYWN0ZXIg YnkNCiAgY2hhcmFjdGVyIGJ5IGEgaHVtYW4uDQoNCiAgV2UgaGFkIHNvbWUgZnVuIGhlcmUgcmVj ZW50bHkgdGFsa2luZyBhYm91dCBhbiB1bnJlbGF0ZWQgcHJvamVjdCwgW3RoZQ0KICBPQ2FtbCBy dW50aW1lIHBvcnRlZCB0byBSdXN0XSwgYW5kIHRoaXMgbGVkIHRvIGFuIGludGVyZXN0aW5nDQog IHNpZGUtY2hhbm5lbCBkaXNjdXNzaW9uIHRoYXQgc3VyZmFjZWQgYSBwYXBlciBvbiBbRGVib290 c3RyYXBwaW5nDQogIHdpdGhvdXQgQXJjaGVvbG9neV0gYnkgTmF0aGFuYcOrbGxlIENvdXJhbnQs IEp1bGllbiBMZXBpbGxlciBhbmQNCiAgR2FicmllbCBTY2hlcmVyLiBJIHNvbWVob3cgaGFkIG5l dmVyIGNvbWUgYWNyb3NzIHRoaXMgYmVmb3JlIQ0KDQogIEJhY2tncm91bmQgYnJpZWYgb24gdHJ1 c3RpbmcgdHJ1c3Q6IG9uY2UgdXBvbiBhIHRpbWUsIFVOSVggZ29kIEtlbg0KICBUaG9tcHNvbiB0 cm9sbGVkIHRoZSB3b3JsZCBkdXJpbmcgYW4gYWNjZXB0YW5jZSBzcGVlY2ggYnkgYXNraW5nDQog ICJ3b3VsZG4ndCBpdCBiZSAqaGlsYXJpb3VzKiBpZiB5b3VyIGJlbG92ZWQgY29tcGlsZXIgYXV0 aG9ycyBoYWQNCiAgaW50cm9kdWNlZCBhIGJhY2tkb29yIHllYXJzIChkZWNhZGVzKSBhZ28gdGhh dCB3YXMgc3RpbGwgbHVya2luZw0KICB0b2RheT8/PyIgKHBhcmFwaHJhc2VkKS4gVGhlIGNydXgg b2YgdGhlIG1hdHRlciB3YXMgdGhhdCwgdG8gY29tcGlsZSBhDQogIEMgY29tcGlsZXIgd2hpY2gg aXMgaW1wbGVtZW50ZWQgaW4gQywgeW91IG5lZWQgYW4gZXhpc3RpbmcgQyBjb21waWxlcg0KICBi aW5hcnkgYW5kIHRoYXQncyBhbiBvcHBvcnR1bml0eSB0byBpbnRyb2R1Y2UgbWFsd2FyZSB0aGF0 IHdha2VzIHVwDQogIHdoZW4gaXQgcmVjb2duaXplcyBpdCdzIGNvbXBpbGluZyBhIHRhcmdldCBw cm9ncmFtIChsaWtlIGBsb2dpbicpLg0KDQogIEV2ZXIgc2luY2UgdGhlbiwgdGhlIGluZm9zZWMg Y29tbXVuaXR5IGhhcyBiZWVu4oCmIGN1cmlvdXPigKYgYWJvdXQNCiAgdHJ1c3RpbmcgdHJ1c3Qg YW5kIHRoZXkgYnJlYXRoZWQgYSBodWdlIHNpZ2ggb2YgcmVsaWVmIHdoZW4gW0RhdmlkDQogIEEu IFdoZWVsZXIgcHJvcG9zZWQgZGl2ZXJzZSBkb3VibGUgY29tcGlsYXRpb24gKEREQyldIGFzIGEN CiAgbWl0aWdhdGlvbi4gU28sIGhhcyBhbnlvbmUgZG9uZSB0aGlzIGZvciBvdXIgZmF2b3JpdGUg bGFuZ3VhZ2U/DQoNCiAgWWVzISBJbiB0aGUgRGVib290c3RyYXBwaW5nIE9DYW1sIHBhcGVyLCB0 aGUgYXV0aG9ycyBkZXNjcmliZSB3cml0aW5nDQogIGFuIE9DYW1sIGludGVycHJldGVyIGluIE1p bmlNTCAoYW4gT0NhbWwgc3Vic2V0KSBhbmQgYSBjb21waWxlciBmb3INCiAgTWluaU1MIGluIFNj aGVtZSB0byBkbyBEREMsIHdoaWNoIHByb3ZlZCB0aGF0IE9DYW1sIDQuMDcuMSBoYXMgbm8NCiAg dHJ1c3RpbmcgdHJ1c3QgYmFja2Rvb3JzIHdoZW4gY29tcGlsaW5nIGl0c2VsZi4gQnV0IG5vdGlj ZSB0aGlzIHBhcnQNCiAgaW4gdGhlaXIgcGFwZXI6DQoNCiAgICAgICAgSWYgd2UgYXNzdW1lIHVu bGltaXRlZCB3b3JrIHJlc291cmNlcywgdGFpbG9yZWQNCiAgICAgICAgZGVib290c3RyYXBwaW5n IGlzIGEgdHJpdmlhbCBwcm9ibGVtOiBqdXN0IHBvcnQgeW91cg0KICAgICAgICBwcm9ncmFtbWlu Zy1sYW5ndWFnZSBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIGxhbmd1YWdlDQogICAgICAgIHRo YXQgaGFzIGFscmVhZHkgYmVlbiBkZWJvb3RzdHJhcHBlZCAoZm9yIGV4YW1wbGUgQykuIEJ1dA0K ICAgICAgICB0aGlzIGlzIGEgbWFzc2l2ZSBlZmZvcnQgdGhhdCBtYXkgbmV2ZXIgaGFwcGVuIGlu IHByYWN0aWNlDQogICAgICAgIOKAkyBlc3BlY2lhbGx5IGFzIHlvdSBoYXZlIHRvIGZpcnN0IGNv bnZpbmNlIHlvdXIgbGFuZ3VhZ2UNCiAgICAgICAgaW1wbGVtZW50b3JzIHRvIHdvcmsgaW4gYSBk aWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuDQoNCiAgVGVlIGhlZS4NCg0KICBJIHByZXNl bnQgW3RoaXMgaW5kZXBlbmRlbnQgT0NhbWwgY29tcGlsZXIgaW1wbGVtZW50ZWQgaW4gQysrXS4g SXQNCiAgcnVucyBhIE9PTXMgZmFzdGVyIHRoYW4gdGhlIE1pbmlNTC9TY2hlbWUgZGVib290c3Ry YXBwZXIsIHNvbHZlcyBEREMNCiAgZm9yIE9DYW1sIDUuNS4xIHJlbGVhc2UgKGFuZCA1LjYrdHJ1 bmspLCBwcm9kdWNlcyAqaWRlbnRpY2FsKiBieXRlDQogIG91dHB1dHMgdG8gdGhlIE9DYW1sIGNv bXBpbGVyLCBhbmQgaXQgZXZlbiBydW5zIGZhc3RlciB0aGFuIHRoZQ0KICBvZmZpY2lhbCBPQ2Ft bCBjb21waWxlcighKQ0KDQogICpOT1RFIGZvciBxdWljayBza2ltbWVycyo6IHRoaXMgcHJvamVj dCBkb2VzICpub3QqIG1ha2UgeW91ciBPQ2FtbA0KICAgcHJvZ3JhbXMgZmFzdGVyLiBJdCBtYXkg b25seSBsZXQgeW91IGNvbXBpbGUgT0NhbWwgcHJvZ3JhbXMgZmFzdGVyLg0KDQogIFJlZ2FyZGlu ZyBieXRlLWlkZW50aWNhbCBvdXRwdXRzLiBUaGVyZSdzIGEgZmV3IGRvY3VtZW50ZWQgbWlub3IN CiAgZGl2ZXJnZW5jZXMgdGhhdCBjb3VsZCBiZSBjbG9zZWQgaWYgdGhlcmUncyBpbnRlcmVzdC4g VGhlIGRpdmVyZ2VuY2VzDQogIGRvIG5vdCBwcmVjbHVkZSBEREMgYW5kIHRoZXkncmUgbWlub3Ig ZW5vdWdoIHRoYXQgSSBhbSBjbGFpbWluZyBieXRlDQogIGlkZW50aWNhbC4NCg0KICBNb3N0IGlt cG9ydGFudGx5OiBiZWNhdXNlIHdlIGhhdmUgZG9uZSBEREMsIHdlIGNhbiBjb25jbHVkZSB0aGUg T0NhbWwNCiAgNS41LjEgKGFuZCA1LjYrdHJ1bmspIGJvb3RzdHJhcCBoYXMgbm8gYmFjayBkb29y cyB3aGVuIGNvbXBpbGluZyB0aGUNCiAgY29tcGlsZXIuIEZ1cnRoZXJtb3JlLCBiZWNhdXNlIHdl ICpkbyogcHJvZHVjZSBieXRlIGlkZW50aWNhbCBvdXRwdXRzDQogIGFzIHVwc3RyZWFtLCBhcmd1 YWJseSBubyBiYWNrIGRvb3IgaXMgbHVya2luZyBvdXRzaWRlIG9mIHRoZQ0KICBzb3VyY2UtYXZh aWxhYmxlIHZpZXdzLlsxXQ0KDQogIFJlZ3JldHRhYmx5LCBub3Qgb25seSBpcyB0aGVyZSBubyBi YWNrZG9vciBpbiB0aGUgT0NhbWwgY29tcGlsZXIsDQogIHRoZXJlIGlzbid0IGV2ZW4gYW4gZWFz dGVyIGVnZy4gU2FkISBJIHdvdWxkIGhhdmUgYXQgbGVhc3Qgc251Y2sgaW4NCiAgc29tZXRoaW5n IGxpa2UgYG1iNGM0cmVsbDRfd2F6X2hlcmUnLCBidXQgdGhhdCdzIHByb2JhYmx5IHdoeSB0aGUg Z29vZA0KICBwZW9wbGUgYmVoaW5kIE9DYW1sIGhhdmUgY29tbWl0IGJpdHMgYW5kIEkgZG9uJ3Qu DQoNCg0KW3RoZSBPQ2FtbCBydW50aW1lIHBvcnRlZCB0byBSdXN0XQ0KPGh0dHBzOi8vZGlzY3Vz cy5vY2FtbC5vcmcvdC9hLWxpbmUtYnktbGluZS10cmFuc2xhdGlvbi1vZi10aGUtb2NhbWwtcnVu dGltZS1mcm9tLWMtdG8tcnVzdD4NCg0KW0RlYm9vdHN0cmFwcGluZyB3aXRob3V0IEFyY2hlb2xv Z3ldIDxodHRwczovL2FyeGl2Lm9yZy9wZGYvMjIwMi4wOTIzMT4NCg0KW0RhdmlkIEEuIFdoZWVs ZXIgcHJvcG9zZWQgZGl2ZXJzZSBkb3VibGUgY29tcGlsYXRpb24gKEREQyldDQo8aHR0cHM6Ly9k d2hlZWxlci5jb20vdHJ1c3RpbmctdHJ1c3QvPg0KDQpbdGhpcyBpbmRlcGVuZGVudCBPQ2FtbCBj b21waWxlciBpbXBsZW1lbnRlZCBpbiBDKytdDQo8aHR0cHM6Ly9naXRodWIuY29tL21iYWNhcmVs bGEvY3h4LW9jYW1sPg0KDQpIb3cgdG8gcnVuIEREQyB5b3Vyc2VsZg0K4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoN CiAgQ2xvbmUgdGhlIHJlcG8gYGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vbWJhY2FyZWxs YS9jeHgtb2NhbWwnIGFuZA0KICBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiBgY3h4L0REQy5t ZCcuDQoNCiAgSW5zdGFsbCBhbiBvcGFtIHN3aXRjaCB0aGF0IHVzZXMgdGhlIEMrKy1iYXNlZCBP Q2FtbCBjb21waWxlcg0KDQogIERvIHRoaXMgdG8gZ2V0IGEgc3dpdGNoIHdob3NlIGBvY2FtbGMn IGFuZCBgb2NhbWxvcHQnIGFyZSB0aGUgQysrDQogIHZlcnNpb24uDQoNCiAg4pSM4pSA4pSA4pSA 4pSADQogIOKUgiBvcGFtIHN3aXRjaCBjcmVhdGUgY3h4LTUuNSAtLWVtcHR5DQogIOKUgiBvcGFt IHBpbiBhZGQgLW4gb2NhbWwtdmFyaWFudHMuNS41LjEgJ2dpdCtodHRwczovL2dpdGh1Yi5jb20v bWJhY2FyZWxsYS9jeHgtb2NhbWwjY3h4LTUuNScNCiAg4pSCIG9wYW0gcGluIGFkZCAtbiBvY2Ft bC1vcHRpb24tY3h4LjEgICAnZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9tYmFjYXJlbGxhL2N4eC1v Y2FtbCNjeHgtNS41Jw0KICDilIIgb3BhbSBpbnN0YWxsIG9jYW1sLW9wdGlvbi1jeHggb2NhbWwt dmFyaWFudHMNCiAg4pSCIG9wYW0gc3dpdGNoIHNldC1pbnZhcmlhbnQgLS1wYWNrYWdlcz1vY2Ft bC12YXJpYW50cyxvY2FtbC1vcHRpb24tY3h4DQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFRvIGNo ZWNrIHRoYXQgeW91J3JlIGFjdHVhbGx5IHJ1bm5pbmcgdGhlIEMrKyB2ZXJzaW9uLCBkbyBgb2Nh bWxjDQogIC1jeHgtdmVyc2lvbicuIFRoZSBzdG9jayBjb21waWxlciBzdGF5cyBhdmFpbGFibGUg aW4gdGhlIHN3aXRjaCBhcw0KICBgb2NhbWwqLnN0b2NrJy4NCg0KICBSZXF1aXJlbWVudHM6IGNs YW5nKysgMTggb3IgbmV3ZXIsIGNtYWtlLCBuaW5qYSwgYW5kIGxpYnpzdGQncyBkZXYNCiAgZmls ZXMuDQoNCiAgRG9uJ3QgQCBtZSB0aGF0IHRoaXMgaXMgYWxsIGEgYmlnIGhvYXggYmVjYXVzZSB5 b3UncmUgbWlzc2luZyBzb21lDQogIGRlcGVuZGVuY2llcy4gW1dlIGhhdmUgYWxsIHNlZW4gaG93 IHRoYXQgZ29lc10uDQoNCg0KW1dlIGhhdmUgYWxsIHNlZW4gaG93IHRoYXQgZ29lc10NCjxodHRw czovL2dpdGh1Yi5jb20vYW50aHJvcGljcy9jbGF1ZGVzLWMtY29tcGlsZXIvaXNzdWVzLzE+DQoN Cg0KTmV4dCBzdGVwcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgTWluaW1p emUgdGhlIGV4dHJhIGRlcGVuZGVuY2llcyBuZWVkZWQgYWJvdmUsIGxpa2Ugc3dhcHBpbmcgY2xh bmcgZm9yDQogIGdjYyB0byBtYXRjaCBPQ2FtbCB1cHN0cmVhbS4NCg0KICBJJ3ZlIG9ubHkgdGVz dGVkIHRoaXMgb24geDg2LTY0IG9uIExpbnV4LCBzbyBBUk02NCBpcyBhbiBvYnZpb3VzIG5leHQN CiAgYWRkaXRpb24uIEFsc28gcHJvYmFibHkgc2hvdWxkIGFkZCBzdXBwb3J0IGZvciBmbGFtYmRh Lg0KDQogIFRoZXJlJ3Mgc3RpbGwgc29tZSBsb3cgaGFuZ2luZyBwZXJmb3JtYW5jZS1mcnVpdCB3 aW5zIHRoYXQgZG9uJ3QNCiAgaW52b2x2ZSBkb2luZyBhbnl0aGluZyB0b28gb2JzY2VuZVsyXSB0 byBnbyBhZnRlci4NCg0KICBJJ20gaGFwcHkgdG8gaGVhciB5b3VyIGZlZWRiYWNrISBXZSBjYW4g Y2hhdCBoZXJlIG9yIG9uIHRoZSBPQ2FtbA0KICBEaXNjb3JkJ3MgYCNhaScgY2hhbm5lbC4NCg0K ICBMZXQgbWUga25vdyB3aGF0IHlvdSdkIGxpa2UgdG8gc2VlIQ0KDQoNCkJlbmNobWFya3MNCuKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRha2UgdGhlc2Ugd2l0aCBhIGdyYWlu IG9mIHNhbHQuIEJlbmNobWFya3MgYXJlIGVhc3kgdG8gZW1iYXJhc3MNCiAgeW91cnNlbGYgd2l0 aC4gVGhhdCBzYWlkLg0KDQogIE15IGJlbmNobWFyayBob3N0IHdhcyBhIERlc2t0b3AgUnl6ZW4g OSA3OTUwWCB3aXRoIDEyOEdCIG9mIFJBTQ0KICBydW5uaW5nIExpbnV4Lg0KDQogIEknZCBwcmVw YXJlIGFuIG9wYW0gc3dpdGNoIHdpdGggZWFjaCBjb21waWxlciBhbmQgYWxsIHByb2plY3QNCiAg ZGVwZW5kZW5jaWVzIGZpcnN0Lg0KDQogIFRoZSBiZW5jaG1hcmsgaXRzZWxmIGlzIGEgZnVsbCBi dWlsZCBvZiBhd3NvLCBhbiBBV1MgbGlicmFyeSB0aGF0IGhhcw0KICBjb3ZlcmFnZSBmb3IgYWxs IG9mIDMwMCsgQVdTIHNlcnZpY2VzLCBpbmNsdWRpbmcgc29tZSB2ZXJ5IGh1Z2UNCiAgYXV0by1n ZW5lcmF0ZWQgbW9kdWxlcyB3aXRoIHBweC4NCg0KICBJdCBidWlsZHMgYnl0ZSBjb2RlLCBuYXRp dmUgYW5kIGFzc2VtYmxlcyBhIGdpZ2FudGljIGF3c28tY2xpIHRoYXQNCiAgbGlua3MgZXZlcnkg YXdzIGxpYnJhcnkuIEkgdGltZWQgYGR1bmUgYnVpbGQnIGFuZCB0b29rIHRoZSBiZXN0IG9mIDMu DQoNCiAgSSB0aGluayB0aGlzIGlzIGEgZ29vZCByZWFsIHdvcmxkIHRlc3QgYmVjYXVzZSBpdCBj b250YWlucyBhYm91dA0KICAxMDAsMDAwIGJ1aWxkIGFydGlmYWN0cyBhbmQgaXQgd2FzIGEgbWFq b3IgcXVhbGl0eSBvZiBsaWZlIGlzc3VlIHRvDQogIGJvdGggZG8gZnVsbCByZWJ1aWxkcyBldmVy eSB0aW1lIEkgdGlua2VyZWQgd2l0aCBzb21ldGhpbmcuIG9wYW0tY2kNCiAgY2VydGFpbmx5IGRp ZG4ndCBhcHByZWNpYXRlIGhvdyBodWdlIGl0IHdhcyBlaXRoZXIuDQoNCiAgZHVuZSBzZWxlY3Rl ZCB1cCB0byAzMiBjb3JlcyBvbiBteSBob3N0Lg0KDQogICpSZXN1bHRzKg0KDQogIOKAoiBvY2Ft bCA1LjUuMTogNDk5OC40MXMgdXNlciAxMDE2LjYycyBzeXN0ZW0gMTkwNCUgY3B1IDU6MTUuOTEg dG90YWwNCiAg4oCiIGMrK29jYW1sIDUuNS4xOiAzMjgxLjg3cyB1c2VyIDk5MC4wMnMgc3lzdGVt IDE5ODQlIGNwdSAzOjM1LjMwIHRvdGFsDQoNCiAgQXMgd2UgY2FuIHNlZSwgYm90aCB0aGUgQ1BV IHRpbWUgYW5kIHdhbGwgY2xvY2sgdGltZSBhcmUgbG93ZXIgaW4gdGhlDQogIEMrKyB2ZXJzaW9u LiBJbiB0ZXJtcyBvZiB3YWxsIHRpbWUgd2UgYXJlIDEuNDd4IGZhc3Rlci4NCg0KICBFdmVyeSBi dWlsZCBhcnRpZmFjdCBpcyBiaXR3aXNlIGlkZW50aWNhbCB0byB1cHN0cmVhbTogLmNtaSwgLmNt bywNCiAgLmNteCwgLm8sIC5jbWEsIC5jbXhhLiBTbyBhcmUgZXhlY3V0YWJsZXMgYnVpbHQgaW4g dGhlIHNhbWUgc3dpdGNoIChpbg0KICB0aGUgQysrIHN3aXRjaCB0aGUgc3RvY2sgY29tcGlsZXIg aXMgYG9jYW1sb3B0LnN0b2NrJyBhbmQgdGhlIEMrKw0KICB2ZXJzaW9uIGlzIHJlbmFtZWQgb3Zl ciBgb2NhbWxvcHQnKS4gVGhlIG9uZSBkaWZmZXJlbmNlIGlzIHRoZQ0KICAuY210Ly5jbXRpIGZp bGVzLCB3aGljaCBhcmUgdXNlZCBieSBlZGl0b3IgdG9vbGluZy4gVGhleSBkZWNvZGUgdG8gdGhl DQogIHNhbWUgZGF0YSBidXQgc3RvY2sgT0NhbWwncyBtYXJzaGFsbGluZyBoYXMgYSBmb3JtIG9m IHN0cnVjdHVyYWwNCiAgc2hhcmluZyB3ZSBkaWRuJ3QgY29tcGxldGVseSByZXByb2R1Y2UgdGhl IGxheW91dCBvZi5bM10NCg0KICBOb3RlIHRoZXJlJ3MgbW9yZSB0aGFuIGp1c3QgdGhlIG9jYW1s IGNvbXBpbGVyIGl0c2VsZiBydW5uaW5nIGENCiAgYnVpbGQuIEEgdG9uIG9mIHRpbWUgaXMgc3Bl bnQgaW4gdGhlIGdjYyB0b29sY2hhaW4gKGxpa2UgYGFzJykuIFRoZQ0KICBpbXByb3ZlbWVudCBp biBpbmRpdmlkdWFsIGFydGlmYWN0cyBpcyBtb3JlIHN1YnN0YW50aWFsIHRoYW4gdGhlIHdhbGwN CiAgY2xvY2sgdGltZSBzdWdnZXN0cywgYnV0IGl0J3MgYWxzbyBhIGxvdCBtb3JlIHdvcmsgdG8g ZGVzY3JpYmUuIFNvDQogIEknbGwgbGVhdmUgdGhhdCBmb3IgbGF0ZXIgaWYgYW55b25lIGlzIGlu dGVyZXN0ZWQuDQoNCg0KQUkgZGlzY2xvc3VyZQ0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWMDQoNCiAgSSBvYnZpb3VzbHkgZGlkbid0IGltcGxlbWVudCBhbiBPQ2FtbCBj b21waWxlciBpbiBDKysgbXlzZWxmLiBJIHVzZWQNCiAgQ2xhdWRlIENvZGUuIFRoaXMgd2Fzbid0 IGVhc3kgZm9yIENsYXVkZSBlaXRoZXI6IGl0IGhhcyBiZWVuIHdvcmtpbmcNCiAgb24gdGhpcyBw cm9qZWN0IGZvciA0IG1vbnRocyBub3csIHRob3VnaCBwcm9ncmVzcyBzcGVkIHVwIGJldHdlZW4g dGhlDQogIHJlbGVhc2VzIG9mIE9wdXMgNC44LCA1LjAgYW5kIDUuNSwgd2l0aCBzb21lIGd1ZXN0 IGFwcGVhcmFuY2VzIGJ5DQogIEZhYmxlLg0KDQoNClRoaXMgaXMgbm90IGFuIEFwcmlsIGZvb2wn cw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgRG9uJ3QgY29uZnVzZSB0aGlzIHdpdGgg U3RlcGhlbiBEb2xhbidzIHRyb2xsLCB3aGljaCBbY29tcGlsZWQgT0NhbWwNCiAgaW50byBDKysg dGVtcGxhdGUgbWV0YXByb2dyYW1zXS4gR2FtZSByZXNwZWN0cyBnYW1lIHRob3VnaC4NCg0KDQpb Y29tcGlsZWQgT0NhbWwgaW50byBDKysgdGVtcGxhdGUgbWV0YXByb2dyYW1zXQ0KPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC9wdWxsLzE0NzAxPg0KDQoNCkNvbmYuZnVuY3Aub3JnIGlz IGEgc2NhbSBPQ2FtbCBjb25mZXJlbmNlDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0 cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2NvbmYtZnVuY3Atb3JnLWlzLWEtc2NhbS1vY2FtbC1j b25mZXJlbmNlLzE4NTc3LzE+DQoNCg0KQ3VpaHRsYXVhYyBBbHZhcmFkbyBhbm5vdW5jZWQNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoaXMgc2l0ZToNCg0KICA8aHR0cHM6 Ly9jb25mLmZ1bmNwLm9yZy8+DQoNCiAgUHJlc2VudHMgYXMgYW4gT0NhbWwvSGFza2VsbC9GUCBj b25mZXJlbmNlLiBIb3dldmVyOg0KDQogIOKAoiBUaGUgZXZlbnQgaXMgbm90IGxpc3RlZCBvbiB0 aGUgdmVudWUncyBvZmZpY2lhbCBzY2hlZHVsZToNCiAgICA8aHR0cHM6Ly93d3cuamF2aXRzY2Vu dGVyLmNvbS9jYWxlbmRhcj4NCiAg4oCiIFRoZSBmdW5jcC5vcmcgZG9tYWluIHdhcyByZWdpc3Rl cmVkIHR3byB3ZWVrcyBhZ28sIHlldCB0aGUgb2xkZXN0DQogICAgYmxvZyBwb3N0cyBhcmUgZGF0 ZWQgZnJvbSBBcHJpbDogPGh0dHBzOi8vcmRhcC5vcmcvZG9tYWluL2Z1bmNwLm9yZz4NCiAg4oCi IFRoZSBkb21haW4gaGFzIG5vIGVtYWlsIHJvdXRpbmcg4oCUIHRoZSBjb250YWN0IGFkZHJlc3Nl cyBjYW5ub3QNCiAgICByZWNlaXZlIG1haWw6IDxodHRwczovL214dG9vbGJveC5jb20vZW1haWxo ZWFsdGgvZnVuY3Aub3JnLz4NCiAg4oCiIFJlZ2lzdHJhdGlvbiByb3V0ZXMgcGF5bWVudCBvZmYt c2l0ZSB0byBhIHRoaXJkLXBhcnR5IHBsYXRmb3JtDQogICAgKGdvbXJ5LmNvbSksIHdpdGggYSAk MTQ5KyB0aWNrZXQuDQogIOKAoiBMaXN0ZWQgc3BlYWtlcnMgb3Igb3JnYW5pc2VycyBkb24ndCBz ZWVtIHRvIGhhdmUgYW55IHRyYWNrIHJlY29yZCBpbg0KICAgIG91ciBjb21tdW5pdHkNCiAg4oCi IFRhbGsncyB0b3BpY3MgZG9uJ3Qgc3RhbmQgc2NydXRpbnkNCiAg4oCiIENsYWltcyB0byBiZSBh IHNlY29uZCBlZGl0aW9uLCBidXQgSSBjYW4ndCBmaW5kIGEgcHJpb3IgZWRpdGlvbg0KDQogIElm IHlvdSByZWdpc3RlcmVkLCBJIHN1Z2dlc3QgY2FuY2VsbGluZyBhbmQgZ2V0dGluZyB5b3VyIG1v bmV5IGJhY2suDQoNCiAgVGhpcyBoYXMgYmVlbiByZXBvcnRlZCB0byB0aGUgT0NhbWwgYW5kIEhh c2tlbGwgc2VjdXJpdHkgdGVhbXMsIHRoZQ0KICBKYXZpdHMgQ2VudGVyLCBHb29nbGUgU2FmZSBC cm93c2luZywgQ2xvdWRmbGFyZSwgZGV2LmV2ZW50cyAod2hpY2gNCiAgbGlzdHMgdGhlIGNvbmZl cmVuY2UpLCBhbmQgR29tcnkgKHRoZSBwYXltZW50IHBsYXRmb3JtKS4NCg0KICBUaGFua3MgdG8g QGFkcmllbiwgQG10ZWx2ZXJzIGFuZCBAZWR3aW4sIHdobyBoZWxwZWQgZGlzY2xvc2UgdGhpcy4N Cg0KDQpWYWFzdCAwLjAuMCArIERlc2lnbiBkaXNjdXNzaW9uDQrilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1s Lm9yZy90L2Fubi12YWFzdC0wLTAtMC1kZXNpZ24tZGlzY3Vzc2lvbi8xODU4My8xPg0KDQoNCmZh bnRhemlvIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSADQoNCiAgSGkgYWxsLA0KDQogIFRoaXMgaXMgYSBiaXQgb2YgbWl4ZWQg cG9zdC4NCg0KICBJIGFtIGV4Y2l0ZWQgdG8gYW5ub3VuY2UgdGhlIDFzdCBwcm90b3R5cGUgb2Yg W1ZhYXN0XSAhICBWYWFzdCBpcyBhDQogIGxpYnJhcnkgdG8gaGFuZGxlIG11bHRpcGxlIHZlcnNp b25zIG9mIHRoZSBUeXBlZHRyZWUgYXQgb25jZS4gSXQgaXMNCiAgbWVhbnQgYXMgYSByZXBsYWNl bWVudCBmb3IgdGhlIGN1cnJlbnQgY29tcGlsZXItdmVyc2lvbi1kZXBlbmRlbnQNCiAgdGVjaG5p cXVlcyAoYmUgaXQgcHJlcHJvY2Vzc2luZyBvciBicmFuY2hpbmcpLg0KDQogIFNpbWlsYXJseSB0 byBwcHhsaWIgZm9yIHRoZSBQYXJzZXRyZWUsIGl0IHByb3ZpZGVzIGEgc2luZ2xlDQogIHJlcHJl c2VudGF0aW9uIG9mIHRoZSBUeXBlZHRyZWUuIFVubGlrZSBwcHhsaWIsIGl0IGRvZXMgbm90IHNl bGVjdCBhDQogIGNvbXBpbGVyIHZlcnNpb24ncyByZXByZXNlbnRhdGlvbiBidXQgcHJvdmlkZXMg YSBmb3JtIG9mDQogIHN1cGVyLXJlcHJlc2VudGF0aW9uIHdoaWNoIGVtYmVkcyB0aGUgVHlwZWR0 cmVlIGZyb20gT0NhbWwgNC4xNCB0byA1LjUNCiAgYXQgb25jZS4gSXQgZG9lcyBzbyB2aWEgYSBk ZWRpY2F0ZWQgdHlwZSBlbmNvZGluZyB3aGljaCBleHBsaWNpdGx5IGFuZA0KICBwcmVjaXNlbHkg aWRlbnRpZmllcyB0aGUgZGlmZmVyZW5jZXMgaW4tYmV0d2VlbiB2ZXJzaW9ucy5WYWFzdCdzDQog IFR5cGVkdHJlZSByZXByZXNlbnRhdGlvbiBpcyBhIHNoYWxsb3cgcmVwbGFjZW1lbnQgZm9yIE9D YW1sJ3MNCiAgVHlwZWR0cmVlLCBtYWtpbmcgaXQgY2hlYXAgdG8gdXNlIGFuZCBlYXN5IHRvIGlu dGVncmF0ZSBpbmNyZW1lbnRhbGx5DQogIGluIGV4aXN0aW5nIGNvZGUuDQoNCiAgTW9yZSBkZXRh aWxzIG9uIGl0cyBkZXNpZ24gYXJlIGF2YWlsYWJsZSBvbiBteSBibG9nOg0KICA8aHR0cHM6Ly9m YW50YXppby5ldS9hcnRpY2xlcy9kZXNpZ25pbmdfdmFhc3QuaHRtbD4NCg0KICBUaGlzIGxlYWRz IHVzIHRvIHRoZSBzZWNvbmQgcGFydCBvZiB0aGlzIHBvc3Q6IGRpc2N1c3NpbmcgdGhlIGRlc2ln bi4NCiAgVGhlIHByb3RvdHlwZSBpcyB1c2FibGUgYXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIGNv bXBpbGVyJ3MgVHlwZWR0cmVlDQogIChhbmQgSSBbZXhwZXJpbWVudGVkIGl0IG9uIHRoZSBkZWFk X2NvZGVfYW5hbHl6ZXJdKS4gT3ZlcmFsbCBpdHMNCiAgZGVzaWduIHJlc2VtYmxlcyB0aGUgVHlw ZWR0cmVlIGJ1dCBsaW1pdHMgdGhlIGJyZWFrYWdlcyBpbiB1c2VyLWNvZGUNCiAgd2hlbiB1cGRh dGluZyB0byBhIG1vcmUgcmVjZW50IE9DYW1sIHZlcnNpb24uDQoNCiAgSGVyZSBpcyBhbiBleGFt cGxlIG9mIGNvZGUgaW4gW29kb2NdLCByZWx5aW5nIG9uIGBjcHBvJyB0byBoYW5kbGUgdGhlDQog IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgVHlwZWR0cmVlOg0KICDilIzilIDilIDilIDilIAN CiAg4pSCICNpZiBkZWZpbmVkIE9YQ0FNTA0KICDilIIgICAgICAgICAgIHwgVHBhdF9hbGlhcyAo XywgaWQsIGxvYywgX3VpZCwgXywgXywgXykgLT4gKA0KICDilIIgI2VsaWYgT0NBTUxfVkVSU0lP TiA+PSAoNSwgNCwgMCkNCiAg4pSCICAgICAgICAgICB8IFRwYXRfYWxpYXMgKF8sIGlkLCBsb2Ms IF91aWQsIF90eSkgLT4gKA0KICDilIIgI2VsaWYgT0NBTUxfVkVSU0lPTiA+PSAoNSwgMiwgMCkN CiAg4pSCICAgICAgICAgICB8IFRwYXRfYWxpYXMgKF8sIGlkLCBsb2MsIF91aWQpIC0+ICgNCiAg 4pSCICNlbHNlDQogIOKUgiAgICAgICAgICAgfCBUcGF0X2FsaWFzIChfLCBpZCwgbG9jKSAtPiAo DQogIOKUgiAjZW5kaWYNCiAg4pSCICAgICAgICAgICAgICAgbWF0Y2ggbWF5YmVfbG9jYWx2YWx1 ZSBpZCBsb2MubG9jIHdpdGgNCiAg4pSCICAgICAgICAgICAgICAgfCBTb21lIHggLT4gcG9zZXMg Oj0geCA6OiAhcG9zZXMNCiAg4pSCICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKQ0KICDilJTi lIDilIDilIDilIANCg0KICBBbmQgaGVyZSBpcyB0aGUgZXF1aXZhbGVudCB1c2luZyBWYWFzdCAo YW5kIGRpc2NhcmRpbmcgdGhlIE94Q2FtbA0KICBjYXNlKToNCiAg4pSM4pSA4pSA4pSA4pSADQog IOKUgiB8IFRwYXRfYWxpYXMge2lkOyBuYW1lOyBffSAtPiAoDQogIOKUgiAgICAgbWF0Y2ggbWF5 YmVfbG9jYWx2YWx1ZSBpZCBuYW1lLmxvYyB3aXRoDQogIOKUgiAgICAgfCBTb21lIHggLT4gcG9z ZXMgOj0geCA6OiAhcG9zZXMNCiAg4pSCICAgICB8IE5vbmUgLT4gKCkpDQogIOKUlOKUgOKUgOKU gOKUgA0KDQogIFRoZXJlIGFyZSBzb21lIHJvdWdoIGVkZ2VzIChgVGV4cF9mdW5jdGlvbicsIGZs YXR0ZW5hYmxlIHZlcnNpb25lZA0KICB0eXBlcyksIGFuZCwgYmVmb3JlIGRpdmluZyBkZWVwZXIg aW50byBidWlsZGluZyB0aGUgbGlicmFyeSwgSSB3b3VsZA0KICBhcHByZWNpYXRlIGZlZWRiYWNr IGFuZCBwYXJ0aWNpcGF0aW9uIG9mIHRob3NlIGludGVyZXN0ZWQgaW4gaXRzDQogIGRldmVsb3Bt ZW50IGFuZCBpdHMgdXNlLiAgSSBvcGVuZWQgYSBbZGVkaWNhdGVkIGlzc3VlXSBmb3IgdGhhdA0K ICBwdXJwb3NlLg0KDQogIFRoZSBtaWQtdGVybSBnb2FsIGlzIHRvIGFkZCB1dGlsaXR5IGZ1bmN0 aW9ucyBmb3IgdXN1YWwgb3BlcmF0aW9ucywNCiAgc3VwcG9ydCBhIGZldyBtYWluc3RyZWFtIG1v ZHVsZXMgb2YgY29tcGlsZXItbGlicyAoYFBhcnNldHJlZScsDQogIGBUeXBlcycpLCBhbmQgbWFr ZSBWYWFzdCBhIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBzdGF0aWMgYW5hbHl6ZXJzLg0KICBU aGUgbG9uZy10ZXJtIGdvYWwgaXMgdG8gaW50ZXJmYWNlIG1vc3Qgb2YgY29tcGlsZXItbGlicy4N Cg0KICBUaGFua3MgIQ0KDQoNCltWYWFzdF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9mYW50YXppby92 YWFzdD4NCg0KW2V4cGVyaW1lbnRlZCBpdCBvbiB0aGUgZGVhZF9jb2RlX2FuYWx5emVyXQ0KPGh0 dHBzOi8vZ2l0aHViLmNvbS9MZXhpRmkvZGVhZF9jb2RlX2FuYWx5emVyL2NvbXBhcmUvbWFzdGVy Li4uZmFudGF6aW86ZGVhZF9jb2RlX2FuYWx5emVyOnZhYXN0Pg0KDQpbb2RvY10NCjxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2RvYy9ibG9iLzZkYzU4MjYyYjI3NmFmN2UyNGI5MmFjNTM0M2I5 ZjI2ZDYyMTEyMmIvc3JjL2xvYWRlci90eXBlZHRyZWVfdHJhdmVyc2UubWwjTDQzPg0KDQpbZGVk aWNhdGVkIGlzc3VlXSA8aHR0cHM6Ly9naXRodWIuY29tL2ZhbnRhemlvL3ZhYXN0L2lzc3Vlcz4N Cg0KDQphMmEgU0RLIGluIE9DYW1sDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90 L2Fubi1hMmEtc2RrLWluLW9jYW1sLzE4NTg0LzE+DQoNCg0KcHJ1ZGVuY2lvIGFubm91bmNlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCiAgU0RLIGZvciB0aGUgQTJBIHByb3RvY29sIFdJUA0KDQogIDxodHRwczovL2dpdGh1Yi5j b20vR2lsZGVkSG9ub3VyL2EyYT4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZAN Cg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNz YWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3Ro ZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYg eW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBz dWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0K W3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9y Zz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0K DQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5l dC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3lt cGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRl cG9tbWUubmV0Lz4NCg0K --==-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of September 29 to Octob= er 06, 2026.

tinybox: 150 classic games (Pong to Quake) and Apps, in OCaml,= and more

Yoann Padioleau announced

Hi,

I made something. Well Claude made something, my first vibe coded project :slight_smile: An ode to code, 150 classic video games (from = Pong to Quake), 50 classic apps (from VisiCalc and TurboPascal to Office and Chrome), all playable online and you can also admire their tiny OCaml code. repo: https= ://github.com/aryx/ocaml-elm-playground=20

the tinybox web app to play: https://aryx.github.io/ocaml-elm-playground/tinybox.= html

IX, a full OS (kernel, toolchain, vcs, …) in OCaml

Yoann Padioleau announced

Hi,

It is my pleasure to announce IX, a full operating system written in OCaml = (by Claude Code). It is a continuation of two of my past projects, principi= a softwarica and XiX.=20

Repo: https://github.com/aryx/IX= =20

website: https://aryx.github.io/IX/<= /a>

You can even explore the codebase with a nice visualizer, codemapv2 (itself= a rewrite, using Claude, of two of my past projects, codemap and codegraph= done while at Facebook): https://aryx.github.io/IX/codemap.html Some literate books explaining in detail the code will arrive soon. Enjoy!

Michel Mauny, 1959-2026

gasche announced

Dear all,

It is with great sadness that we (the OCaml Software Foundation) are sharin= g the news of the death of Michel Mauny, a long-time member of the OCaml co= mmunity. Michel passed away on September 17th 2026 (more information, = in French).

During his career as INRIA research scientist, professor at ENSTA and CEO o= f Nomadic Labs, and among his many contributions, Michel:

  • co-authored in 1985 the paper that started Caml: "The Categorical Abstr= act Machine", Cousineau, Curien, Mauny (PDF) ;
  • actively contributed in the late 80s to the "Heavy Caml" implementation= that predated Caml Light and OCaml ( see https://ocaml.org/history for more details ) ;
  • introduced stream parsers with Daniel de Rauglaudre (1992 tech report), designed and co-= maintained the camlp4 preprocessor ;
  • wrote with Guy Cousineau the first book in English about OCaml, "The fu= nctional approach to programming" (1998) ;
  • taught (O)Caml in French universities and engineering schools throughou= t his career (Paris 7, Polytechnique, ENSTA) ;
  • advised several PhD students, including several who remained active in = the OCaml community: Gr=C3=A9goire Henry, =C3=87a=C4=9Fda=C5=9F Bozman, Ben= o=C3=AEt Vaugon and Pierrick Couderc ;
  • created in 2001 the Caml Consortium, an earlier structure for industria= l users to participate in and fund the development of OCaml at INRIA ;
  • created in 2018 the OCaml Foundation, with the more ambitious goals of = collecting more funds to also support the broader OCaml software ecosystem.= Michel had to leave the OCaml Foundation when he moved from INRIA to Nomad= ic Labs, and we try our best to follow his vision.

This solemn moment is also an occasion to reflect on the rich history of ou= r OCaml ecosystem, which grows by a collection of individual contributions.= As we mark Michel=E2=80=99s passing, we celebrate and thank him, as well a= s the many individuals who dedicate their time and effort, often over decad= es, to building our programming commons.

dream-html 4.0.0

Yawar Amin announced

Hi, dream-html 4.0.0 has been released to opam: https://ocaml.org/p/dream-html/4.0.0

Repo: https://github.co= m/yawaramin/dream-html API docs: https://yawaramin.github.io/dream-html/dream-html/Dream_= html/index.html

Dream-html is a library for generating HTML, closely integrated with Dream.= It can be used as an alternative to Dream=E2=80=99s built-in Embedded ML t= emplating language and comes with all current htmx attributes defined out o= f the box.

In this release, I made a few breaking changes (hence major version bump):

  • Raise exceptions on path parameter parse errors: instead of responding = with 400 Bad Request. This allows you to hook in your own custom response b= y catching the parse exception.
  • Remove unused form decoder error keys: specifically error_expecte= d_int32 and error_expected_int64 which are already cove= red by error_expected_int.
  • Finally, revert to the previous style of HTML generation, breaking line= s at the start of each attribute instead of pretty-printing the HTML with i= ndentation. This is done for performance reasons.

Fixes:

  • Router matching on encoded values, eg /accounts/%F0%9F%91%8D/vers= ions/1 is now able to extract the second segment, =F0=9F=91=8D= .

New additions:

  • Invoker API attributes
  • Some more SVG elements

Finally, raised the minimum supported OCaml version to 5.3.0 because of ppx= lib.

Enjoy!

hegel-ocaml 0.25.0 - concurrent stateful property-based testin= g

Ethan Chou announced

Hello, we excited to announce hegel-ocaml 0.25.0!

Since our last announcement of hegel-ocaml 0.14.1, we've added concurrent s= tateful property-based testing and nondeterminism handling to Hegel. Statef= ul property based testing sequences actions (which we call rules) that muta= te the state of some model and the system under test. The concurrent part c= omes from running rules concurrently. Hegel spins up some number of workers= and distributes some number of rules to each worker. Rules within a worker= run sequentially, but rules in different workers may run concurrently. Of = course, this introduces nondeterminism since the workers can run in any ord= er or suspend. To handle this, Hegel repeatedly replays failures and output= s the number of times the failure was reproduced. Nondeterminism handling c= an also be turned off, so any nondeterministic failure produces a flaky tes= t error instead. Of course, running Hegel inside of Antithesis will give reproducible failures.=20

For an example of concurrent stateful testing, see the docs.

The unique feature of Hegel concurrent stateful tests is the ability to pas= s in different concurrency capabilities. Workers can be on threads, domains= , or anything of the Concurrency.t type. We have incl= uded a thread capability and domains capability for your convenience. Hegel= defaults to using threads.

With the h= egel_jane_async sublibrary, Jane Street ecosystem users can also= run sequential stateful tests whose rules are async (returning unit = Deferred.t).

For OxCaml users, hegel-ocaml is fully compatible with OxCaml 5.2.0-minus39= . With the = hegel_jane_concurrent sublibrary, OxCaml users can also pa= ss in concurrency capabilities from the Concurrent library. an= d run concurrent async stateful tests with hegel_jane_async.

Happy testing and contributing!

Tutorial on GADTs

Continuing this thread, Rapha=C3=ABl Proust announced=

I've written a supplement to the tutorial:

https://raphael-proust.gitlab.io/code/gadt-what-about-phantom-typ= es.html

It compares GADTs and Phantom Types. It includes a (compulsory?) mention of= Tyxml in discussion of Phantom Types. If anyone has other good examples to= share I might add them.

OCaml Compiler Implemented in C++: It's Not Just Faster=E2=80= =94It Also Increases Trust

Michael Bacarella announced

You're absolutely right to be skeptical of your compiler binaries. In this = post, we'll explore how a comprehensive C++ reimplementation unlocks DDC ve= rification for OCaml =E2=80=94 while delivering meaningful compile-time imp= rovements. =F0=9F=9A=80

—

Wait! Don't leave yet! The rest of this was typed character by character by= a human.=20

We had some fun here recently talking about an unrelated project, the OCaml runtime ported to Rust, and this led to = an interesting side-channel discussion that surfaced a paper on Debootstrapping without Archeology b= y Nathana=C3=ABlle Courant, Julien Lepiller and Gabriel Scherer. I somehow = had never come across this before!

Background brief on trusting trust: once upon a time, UNIX god Ken Thompson= trolled the world during an acceptance speech by asking "wouldn't it be hilarious if your beloved compiler authors had introduced a backdoor y= ears (decades) ago that was still lurking today???" (paraphrased). The crux= of the matter was that, to compile a C compiler which is implemented in C,= you need an existing C compiler binary and that's an opportunity to introd= uce malware that wakes up when it recognizes it's compiling a target progra= m (like login).

Ever since then, the infosec community has been… curious… abo= ut trusting trust and they breathed a huge sigh of relief when David A. Wheeler proposed diverse doub= le compilation (DDC) as a mitigation. So, has anyone done this for our = favorite language?

Yes! In the Debootstrapping OCaml paper, the authors describe writing an OC= aml interpreter in MiniML (an OCaml subset) and a compiler for MiniML in Sc= heme to do DDC, which proved that OCaml 4.07.1 has no trusting trust backdo= ors when compiling itself. But notice this part in their paper:

If we assume unlimited work resources, tailored debootstrapping is a trivia= l problem: just port your programming-language implementation to another la= nguage that has already been debootstrapped (for example C). But this is a = massive effort that may never happen in practice =E2=80=93 especially as yo= u have to first convince your language implementors to work in a different = programming language.

Tee hee.=20

I present this independ= ent OCaml compiler implemented in C++. It runs a OOMs faster than the M= iniML/Scheme debootstrapper, solves DDC for OCaml 5.5.1 release (and 5.6+tr= unk), produces identical byte outputs to the OCaml compiler, and it = even runs faster than the official OCaml compiler(!)

NOTE for quick skimmers: this project does not make your OCam= l programs faster. It may only let you compile OCaml programs faster.

Regarding byte-identical outputs. There's a few documented minor divergence= s that could be closed if there's interest. The divergences do not preclude= DDC and they're minor enough that I am claiming byte identical.

Most importantly: because we have done DDC, we can conclude the OCaml 5.5.1= (and 5.6+trunk) bootstrap has no back doors when compiling the compiler. F= urthermore, because we do produce byte identical outputs as upstream= , arguably no back door is lurking outside of the source-available views.[1]

Regrettably, not only is there no backdoor in the OCaml compiler, there isn= 't even an easter egg. Sad! I would have at least snuck in something like <= code>mb4c4rell4_waz_here, but that's probably why the good people be= hind OCaml have commit bits and I don't.

How to run DDC yourself

Clone the repo git clone https://github.com/mbacarella/cxx-ocaml and follow the instructions in cxx/DDC.md.

Install an opam switch that uses the C++-based OCaml compiler

Do this to get a switch whose ocamlc and ocamlopt= are the C++ version.

opam switch create cxx-5.5 --empty
opam pin add -n ocaml-variants.5.5.1 'git+https://github.com/mbacarella/cxx=
-ocaml#cxx-5.5'
opam pin add -n ocaml-option-cxx.1   'git+https://github.com/mbacarella/cxx=
-ocaml#cxx-5.5'
opam install ocaml-option-cxx ocaml-variants
opam switch set-invariant --packages=3Docaml-variants,ocaml-option-cxx

To check that you're actually running the C++ version, do ocamlc -cxx= -version. The stock compiler stays available in the switch as = ocaml*.stock.

Requirements: clang++ 18 or newer, cmake, ninja, and libzstd's dev files.=20

Don't @ me that this is all a big hoax because you're missing some dependen= cies. We have all seen how that goes.

Next steps

Minimize the extra dependencies needed above, like swapping clang for gcc t= o match OCaml upstream.

I've only tested this on x86-64 on Linux, so ARM64 is an obvious next addit= ion. Also probably should add support for flambda.

There's still some low hanging performance-fruit wins that don't involve do= ing anything too obscene[2] to go after.

I'm happy to hear your feedback! We can chat here or on the OCaml Discord's= #ai channel.

Let me know what you'd like to see!

Benchmarks

Take these with a grain of salt. Benchmarks are easy to embarass yourself w= ith. That said.

My benchmark host was a Desktop Ryzen 9 7950X with 128GB of RAM running Lin= ux.=20

I'd prepare an opam switch with each compiler and all project dependencies = first.

The benchmark itself is a full build of awso, an AWS library that has cover= age for all of 300+ AWS services, including some very huge auto-generated m= odules with ppx.

It builds byte code, native and assembles a gigantic awso-cli that links ev= ery aws library. I timed dune build and took the best of 3.

I think this is a good real world test because it contains about 100,000 bu= ild artifacts and it was a major quality of life issue to both do full rebu= ilds every time I tinkered with something. opam-ci certainly didn't appreci= ate how huge it was either.

dune selected up to 32 cores on my host.

Results

  • ocaml 5.5.1: 4998.41s user 1016.62s system 1904% cpu 5:15.91 total
  • c++ocaml 5.5.1: 3281.87s user 990.02s system 1984% cpu 3:35.30 total

As we can see, both the CPU time and wall clock time are lower in the C++ v= ersion. In terms of wall time we are 1.47x faster.

Every build artifact is bitwise identical to upstream: .cmi, .cmo, .cmx, .o= , .cma, .cmxa. So are executables built in the same switch (in the C++ swit= ch the stock compiler is ocamlopt.stock and the C++ version is= renamed over ocamlopt). The one difference is the .cmt/.cmti = files, which are used by editor tooling. They decode to the same data but s= tock OCaml's marshalling has a form of structural sharing we didn't complet= ely reproduce the layout of.[3]

Note there's more than just the ocaml compiler itself running a build. A to= n of time is spent in the gcc toolchain (like as). The improve= ment in individual artifacts is more substantial than the wall clock time s= uggests, but it's also a lot more work to describe. So I'll leave that for = later if anyone is interested.

AI disclosure

I obviously didn't implement an OCaml compiler in C++ myself. I used Claude= Code. This wasn't easy for Claude either: it has been working on this proj= ect for 4 months now, though progress sped up between the releases of Opus = 4.8, 5.0 and 5.5, with some guest appearances by Fable.

This is not an April fool's

Don't confuse this with Stephen Dolan's troll, which compiled OCaml into C++ template metaprogra= ms. Game respects game though.

Conf.funcp.org is a scam OCaml conference

Cuihtlauac Alvarado announced

This site:

https://conf.funcp.org/

Presents as an OCaml/Haskell/FP conference. However:

If you registered, I suggest cancelling and getting your money back.

This has been reported to the OCaml and Haskell security teams, the Javits = Center, Google Safe Browsing, Cloudflare, dev.events (which lists the confe= rence), and Gomry (the payment platform).

Thanks to @adrien, @mtelvers and @edwin, who helped disclose this.

Vaast 0.0.0 + Design discussion

fantazio announced

Hi all,

This is a bit of mixed post.

I am excited to announce the 1st prototype of Vaast ! Vaast is a library to handle multiple versions of the Typedtree at once. It= is meant as a replacement for the current compiler-version-dependent techn= iques (be it preprocessing or branching).

Similarly to ppxlib for the Parsetree, it provides a single representation = of the Typedtree. Unlike ppxlib, it does not select a compiler version's re= presentation but provides a form of super-representation which embeds the T= ypedtree from OCaml 4.14 to 5.5 at once. It does so via a dedicated type en= coding which explicitly and precisely identifies the differences in-between= versions.Vaast's Typedtree representation is a shallow replacement for OCa= ml's Typedtree, making it cheap to use and easy to integrate incrementally = in existing code.

More details on its design are available on my blog: https://fanta= zio.eu/articles/designing_vaast.html

This leads us to the second part of this post: discussing the design. The prototype is usable as a replacement for the compiler's Typedtree (and = I experimented it on the dead_code_analyze= r). Overall its design resembles the Typedtree but limits the breakages= in user-code when updating to a more recent OCaml version.

Here is an example of code in odoc, relying on cppo to handle the different version= s of the Typedtree:

#if defined OXCAML
          | Tpat_alias (_, id, loc, =
_uid, _, _, _) -> (
#elif Tpat_alias (_, id, loc, =
_uid, _ty) -> (
#elif Tpat_alias (_, id, loc, =
_uid) -> (
#else
          | Tpat_alias (_, id, loc) =
-> (
#endif
              match maybe_localvalue id loc.loc with
              | Some x -> poses :=
=3D x :: !poses
              | None -> ())

And here is the equivalent using Vaast (and discarding the OxCaml case):

| Tpat_a=
lias {id; name; _} -> (
    match maybe_l=
ocalvalue id name.loc wi=
th
    | Some x -> poses :=3D x :: !poses
    | None -> ())

There are some rough edges (Texp_function, flattenable version= ed types), and, before diving deeper into building the library, I would app= reciate feedback and participation of those interested in its development a= nd its use. I opened a dedicated i= ssue for that purpose.

The mid-term goal is to add utility functions for usual operations, support= a few mainstream modules of compiler-libs (Parsetree, T= ypes), and make Vaast a basic building block for static analyzers. The long-term goal is to interface most of compiler-libs.

Thanks !

a2a SDK in OCaml

prudencio announced

SDK for the A2A protocol WIP

https://github.com/GildedHo= nour/a2a

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.

--==-=-=-- --=-=-=-- --===-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmrE9FQbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5ce+JQgAoU+wQNmBuvCbSsqNWuekLwqvkSpnowXsuDvzKlSC Q0UJAY61hh1t1oMrGVktUHr4+ki8lxy+7D8BvBLUyxQWhN/DX32Zt5YjQpwM88yh 1b5yRwkpayxQ8fW5TVlIiaFaaBl14R3t8okYWAo8932H0RpUtvxDR5vSQeMIFSVA m407oJwYZwtC3PIbGMi6gcbUkBqQ4xDyFRV2fShjEbbCNnHgju+OZrW8388sXAFI TVNSvtYVJhjCluj0uotze695SlvjCue4DJQEhvpNRp5Wzi9Sl01VsZl0WaQtTzkX IHrQujMDc17A7AtbFTDwajCAKfS7hT0xSB6RTEvzKPWdbw== =9r5R -----END PGP SIGNATURE----- --===-=-=--