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=Agn5+3VX; 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 29403400CB for ; Tue, 7 Jul 2026 13:29:21 +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=nBAReezzAUjrHwbygw3QS6fO6vgmbiYwkrui4bZxFsU=; b=Agn5+3VXG3ohSOsKSHiE1w3RwYeiygsW8OIJUDf9jugrpQ1EHi1RMw3C 2sir4GVLeUcJdc0W1yAB8BsClj0HAdIQ/Tzk3p9CrNUtOdxvGHCzJ2cOQ afyTyZV9Kha9tdAmp0teOotxtmz0HzSVvKVZtSVQR6EOl/aOdzBXMUdJY A=; X-CSE-ConnectionGUID: djV3QsqlSF6mJBnQ/auQ6A== X-CSE-MsgGUID: ostgTJ9bSSKANaOrIGXBBw== 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.25,153,1779141600"; d="asc'?scan'208,217";a="285271850" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 07 Jul 2026 15:29:16 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 85D42825AA; Tue, 7 Jul 2026 15:29:16 +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 5334182592 for ; Tue, 7 Jul 2026 15:29:05 +0200 (CEST) X-CSE-ConnectionGUID: /DFelgWlSuCqIxbQFpZafQ== X-CSE-MsgGUID: iqxGyiG9QPC/gd0nSsN+sw== IronPort-SDR: 6a4cff1f_jTQkYx2BEvGdpkD8O6gjxPXEkREnF1RmJKU8JYLqANq+0F0 LjbqB/lOnwCUQ477FhPh6EUhDqnWgTaSRA4i50Q== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0GZBABh/kxqhSIeaIFahBZbKRsBbl8zBwhJhFiBY4Fsj?= =?us-ascii?q?iWRTYp8gWmBKxYFHAIOBwEDAQgFLgEbBAECBAEBAQIBAgGDSHFGAhaNOAIfB?= =?us-ascii?q?gEENBMBAgQDAgMBAQEBAQEBAQEBAQsBAQEEAQEBAgEBAgQDAQEBAQIQAQEBA?= =?us-ascii?q?UBJhhUHMw2CRRk4VB1gBw0BAQEBAQEBAQEBAQEBASIBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgQIAYEeCQoTAQE4GCMDF?= =?us-ascii?q?AEGAwIEDQE1AwETARIUBoIQWAGCIAICTwMFDAaeAZtEeoEygQGCDAEBBoEIP?= =?us-ascii?q?gIBEg/aRYFgCQkUgTmBWIQZgk4PDQEFJUlqAgEChE8JhDgIHw+BVUSBFTWBd?= =?us-ascii?q?FFvgmEBAQEBXEgYAQECBAJFCYMlgmqCERWBDIF4X3IFGSdtdIMfOYEnhjmCQ?= =?us-ascii?q?iwBVRMXCwcFXoEIAyovLW4yHYEjPhc0WBsHBYEdgV+BAoR5Ix8DOX+BMHVKe?= =?us-ascii?q?S2BAxIeCoFSgVEDC209NxQbi2oQIQ2BL0kZFw+BcA4LM1sHAgQYDwEpAiACN?= =?us-ascii?q?QFAAwUUEQsYNwEEDgkCIQoPA5JXCQcYKo9eg1aKQ5NZgQo0B4QggWAGDIkJg?= =?us-ascii?q?SaWB4QEgVeLPYcDkWpnIphmI4legSYJgW9rlSQ8Ew0BhTeBfyM8gSAzGjBDg?= =?us-ascii?q?mcJRxwPiTaESS4WgRQBDmSBWYE+gSaBdDuBPccnA0I1AgEBOwcCBw8ChWsBA?= =?us-ascii?q?YwGKwluXQEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:S2zWJqqiFpID1NekUQvs7x8aV5oUeYIsimQD101hICG9E/bo9f xG+c5wuCMc5wxxZJhNo7y90cq7MBDhHPxOgbX5VI3KNGLbUQCTQr2Kg7GM/xTQXwXAssRd2a 1jf6UWMqyUMXFKyeDg7k2dG9YkqeP3l5xAaN2uq0tQcQ== X-Talos-CUID: 9a23:YK/SR2Owb+pN4e5DHwVJ+UobJcQeb1bE7WfaGmGgO29ncejA X-Talos-MUID: =?us-ascii?q?9a23=3ADhRNXQ6HVann72UdeCjAGzWPxoxp+rSBGUEiwKw?= =?us-ascii?q?+kI6LOXR2ACy7zy+oF9o=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.25,153,1779141600"; d="asc'?scan'208,217";a="151485003" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDH9kwhzwBWV60BzUu77Gk1BP3Kbz4J2QM2coA?= =?us-ascii?q?X6c4MmA7IM0PHmiNCp10QlEquzJmpwybARR+f5/vCAdBghcDk8AHa3hU?= =?us-ascii?q?BLrgTw2TunKFF62hMKnEbXNlOS6AoZIsrP1DWjBhKQf4vuCUkfJUQHBr?= =?us-ascii?q?JRQ6XfOPaBfICPVFHNetgT1A=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; 07 Jul 2026 15:29:03 +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 ABF801A425; Tue, 7 Jul 2026 15:29:02 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 07 Jul 2026 15:29: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 Jul 7 15:29:02 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499869, queueID=D04071A489 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: 19542 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 ZWsgb2YgSnVuZSAzMCB0byBKdWx5DQowNywgMjAyNi4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpvcGFt LW1pbnZlciAwLjIuMCAtIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIG1pbmltdW0gZGVwZW5kZW5j eSB2ZXJzaW9ucw0KWmFudWRhIOKAkyBPQ2FtbCBsaW50ZXIgZXhwZXJpbWVudA0KcnBnbS1kZWNy eXB0IOKAlCBhIGZvcm1hbGx5LXZlcmlmaWVkIFJQRyBNYWtlciBhc3NldCBkZWNyeXB0b3IgaW4g T0NhbWwNCm1lbmhpcmZvcm1hdCAwLjEuMA0KU29sbzUgMC4xMi4wDQpMYW5kbWFya3MgMS43DQpX aHkgT2NzaWdlbiBpcyBzdGF5aW5nIG9uIEx3dCAoZm9yIG5vdykNCkR1bmUgMy4yNA0KT2xkIENX Tg0KDQoNCm9wYW0tbWludmVyIDAuMi4wIC0gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgbWluaW11 bSBkZXBlbmRlbmN5IHZlcnNpb25zDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fu bi1vcGFtLW1pbnZlci0wLTItMC1hdXRvbWF0aWNhbGx5LWRldGVybWluZS1taW5pbXVtLWRlcGVu ZGVuY3ktdmVyc2lvbnMvMTgzMjgvMT4NCg0KDQpvbmV0aW1lcm9ib3QgYW5ub3VuY2VkDQrilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBJIGhhdmUgcHVibGlzaGVkIG9wYW0tbWludmVyIDAuMi4wIChwcmV2aW91cyB2 ZXJzaW9ucyB3ZXJlIG5vdA0KICByZWxlYXNlZCB0byB0aGUgcHVibGljKS4gV2hhdCBpdCBkb2Vz IGlzIHVzZSBhIGJpbmFyeSBzZWFyY2ggdG8gZmluZA0KICB0aGUgbWluaW11bSBwYXNzaW5nIHZl cnNpb25zIG9mIGEgcHJvamVjdCdzIGRlcGVuZGVuY2llcyBsaXN0ZWQgaW4gaXRzDQogIG9wYW0g ZmlsZSBhbmQgb3B0aW9uYWxseSB3cml0ZXMgdGhlbSBvdXQgdG8gdGhlIG9wYW0gZmlsZSBpbi1w bGFjZS4gSQ0KICB3cm90ZSB0aGlzIGJlY2F1c2UgSSB3YXMgd29ya2luZyBvbiBhbm90aGVyIHBy b2plY3QgKG5vdCB5ZXQNCiAgcHVibGlzaGVkKSBhbmQgZ290IHRvIHRoZSBwb2ludCBvZiBsaXN0 aW5nIGFsbCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQNCiAgcmVhbGl6aW5nIEkgaGFkIG5vIGlkZWEg d2hhdCB2ZXJzaW9ucyBpdCB3YXMgY29tcGF0aWJsZSB3aXRoLiBUaGlzDQogIHRvb2wgZmluZHMg dGhhdCBvdXQgYXV0b21hdGljYWxseS4NCg0KICBJdCdzIHByZXR0eSB3ZWxsIHBvbGlzaGVkIGF0 IHRoaXMgcG9pbnQsIGFuZCBpdCBoYXMgYSBjbWRsaW5lcg0KICBpbnRlcmZhY2UsIHN0b3JlcyBp dHMgc3RhdGUgaW4gYSBqc29uIGZpbGUgc28gc2Vzc2lvbnMgY2FuIGJlIHJlc3VtZWQNCiAgaWYg bmVlZCBiZSwgYW5kIGl0IGFsc28gZmluZHMgdGhlIG1pbmltdW0gY29tcGlsZXIgdmVyc2lvbnMg YW5kDQogIGhhbmRsZXMgc3BsaXQgT0NhbWwgY29tcGlsZXIgYm91bmRzIGlmLCBmb3IgZXhhbXBs ZSwgYSBwcm9qZWN0IGRvZXNuJ3QNCiAgd29yayBzcGVjaWZpY2FsbHkgd2l0aCBlYXJseSBPQ2Ft bCA1IHZlcnNpb25zLiBUaGlzIGNvdWxkIGJlIHVzZWQgbm90DQogIG9ubHkgZm9yIG5ldyBwcm9q ZWN0cywgYnV0IGFsc28gdG8gcmVsYXggdmVyc2lvbiBib3VuZHMgb24gYW55IHByb2plY3QNCiAg d2hlcmUgdGhleSBoYXZlbid0IGJlZW4gZGV0ZXJtaW5lZCBwcmVjaXNlbHkuDQoNCiAgSG9tZXBh Z2UgYW5kIHJlYWRtZSBpcyBoZXJlOg0KICA8aHR0cHM6Ly9naXRodWIuY29tL2x1bWlub3VzLW1v b3NlL29wYW0tbWludmVyPg0KDQoNClphbnVkYSDigJMgT0NhbWwgbGludGVyIGV4cGVyaW1lbnQN CuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQog IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXphbnVkYS1vY2FtbC1saW50ZXItZXhw ZXJpbWVudC8xMTc4NC8xND4NCg0KDQpDb250aW51aW5nIHRoaXMgdGhyZWFkLCBLYWthZHUgYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBaYW51ZGEgMi4xLjAgaXMgbWVyZ2VkIGludG8gb3BhbS1yZXBv c2l0b3J5DQoNCiAg4oCiIE9DYW1sIDUuNSBzdXBwb3J0DQogIOKAoiBMaW50cyBjb3VsZCBiZSBk aXNhYmxlZCB2aWEgYFtAQEB6YW51ZGEgIi1uYW1lIl0nDQogIOKAoiBMaW50cyByZXByZXNlbnRl ZCBhcyBvY2FtbGZpbmQgcGFja2FnZXMgY291bGQgYmUgbG9hZGVkIGF0IHJ1bnRpbWUNCiAgICBh bmQgZGVmaW5lZCBvdXRzaWRlIHphbnVkYSBjb2RlYmFzZS4gVGhpcyBtb2R1bGFyaXR5IGZvciBu b3cgaXMNCiAgICBleHBlcmltZW50YWwuDQoNCg0KcnBnbS1kZWNyeXB0IOKAlCBhIGZvcm1hbGx5 LXZlcmlmaWVkIFJQRyBNYWtlciBhc3NldCBkZWNyeXB0b3IgaW4gT0NhbWwNCuKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1 c3Mub2NhbWwub3JnL3QvYW5uLXJwZ20tZGVjcnlwdC1hLWZvcm1hbGx5LXZlcmlmaWVkLXJwZy1t YWtlci1hc3NldC1kZWNyeXB0b3ItaW4tb2NhbWwvMTgzMjQvMT4NCg0KDQpMdWxMYVMgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0K ICBIaSBldmVyeW9uZSkpKSA6c2xpZ2h0bHlfc21pbGluZ19mYWNlOg0KDQogIEknZCBsaWtlIHRv IHNoYXJlICpycGdtLWRlY3J5cHQqLCBhIHNtYWxsIGNvbW1hbmQtbGluZSB0b29sIHRoYXQNCiAg ZGVjcnlwdHMgYW5kIGV4dHJhY3RzIFJQRyBNYWtlciBhc3NldCBhcmNoaXZlcyAoWFAgLyBWWCAv IFZYIEFjZSB2aWENCiAgYC5yZ3NzYWQnIC8gYC5yZ3NzMmEnIC8gYC5yZ3NzM2EnLCBhbmQgTVYg LyBNWiB2aWEgdGhlIFhPUi1lbmNyeXB0ZWQNCiAgYXNzZXRzIGFuZCBgLnBhaycgYXJjaGl2ZXMp Lg0KDQogIEl0IHN0YXJ0ZWQgYXMgYSBjbGVhbi1yb29tIHJlaW1wbGVtZW50YXRpb24gYW5kIGVu ZGVkIHVwIGFzIGFuIGV4Y3VzZQ0KICB0byBwdXNoIE9DYW1sJ3MgY29ycmVjdG5lc3MgdG9vbGlu ZyBhcyBmYXIgYXMgSSBjb3VsZCBvbiBhIHJlYWwNCiAgcHJvamVjdDoNCg0KICDigKIgKkdvc3Bl bCogc3BlY2lmaWNhdGlvbnMgb24gdGhlIHB1cmUgY29yZSAoYCgqQCAuLi4gKiknIGluIHRoZQ0K ICAgICB+Lm1saX5zKQ0KICDigKIgKldoeTMgKyBaMyogZGVkdWN0aXZlIHByb29mcyBvZiB0aGUg a2V5IGRlcml2YXRpb24sIGxpdHRsZS1lbmRpYW4NCiAgICByZWFkcyBhbmQgYSBaaXAtU2xpcCBw YXRoLXNhZmV0eSBpbnZhcmlhbnQgKDIzLzIzIGdvYWxzIGRpc2NoYXJnZWQpDQogIOKAoiAqUUNo ZWNrKiBwcm9wZXJ0eSB0ZXN0cyAocm91bmQtdHJpcCAvIGludmFyaWFudHMpIGFsb25nc2lkZSB0 aGUgdW5pdA0KICAgICBzdWl0ZQ0KICDigKIgQ292ZXJhZ2UtZ3VpZGVkICphZmwtZnV6eiogb2Yg dGhlIHBhcnNlcnMgaW4gQ0kgKDAgY3Jhc2hlcykNCiAg4oCiICpiaXNlY3RfcHB4KiBjb3ZlcmFn ZSArIGEgc21hbGwgZGlyZWN0ZWQgbXV0YXRpb24tdGVzdGluZyBwYXNzDQogIOKAoiBTaGlwcyBh cyBhIHNpbmdsZSBzdGF0aWMgYmluYXJ5IHZpYSBgZHVuZSAtLXByb2ZpbGUgc3RhdGljJzsgdGhl DQogICAgb25seSBleHRlcm5hbCBkZXAgaXMgYGNhbWx6aXAnICh6bGliKSBmb3IgdGhlIE1aIGAu cGFrJyBwYXRoDQoNCiAgQnVpbGQvdGVzdCBydW5zIG9uIHRoZSBuYXRpdmUgV2luZG93cyBPQ2Ft bCBzd2l0Y2ggYXMgd2VsbCBhcyBMaW51eC4NCiAgTGljZW5zZWQgQXBhY2hlLTIuMC4NCg0KICBF eGFtcGxlIHJ1bjoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCICQgcnBnbS1kZWNyeXB0ICJN eUdhbWUiIG91dA0KICDilIIgc2Nhbm5lZD0xODE3IGRlY3J5cHRlZD0xNjg1IHBhc3N0aHJvdWdo PTEzMiBza2lwcGVkPTAgZmFpbGVkPTAgZm9ybWF0cz1bTVY9MTgxN10NCiAg4pSU4pSA4pSA4pSA 4pSADQoNCiAgUmVwbywgZG9jcyBhbmQgcHJlYnVpbHQgV2luZG93cy9MaW51eCBiaW5hcmllczoN Cg0KICA8aHR0cHM6Ly9naXRodWIuY29tL3JvbGFuZnJlZW1hbjYtcG5nL3JwZ20tZGVjcnlwdD4N Cg0KICBGZWVkYmFjayBvbiB0aGUgc3BlYy9wcm9vZiBzZXR1cCBlc3BlY2lhbGx5IHdlbGNvbWUg 4oCUIGl0J3MgbXkgZmlyc3QNCiAgc2VyaW91cyBnbyBhdCBHb3NwZWwgKyBXaHkzLCBzbyBJJ2Qg bG92ZSB0byBoZWFyIGhvdyBvdGhlcnMgc3RydWN0dXJlDQogIHRoYXQgb24gcmVhbCBjb2RlLg0K DQoNCm1lbmhpcmZvcm1hdCAwLjEuMA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2Ft bC5vcmcvdC9hbm4tbWVuaGlyZm9ybWF0LTAtMS0wLzE4MzIyLzE+DQoNCg0KRmVkZXJpY28gYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBIZWxsbywNCg0KICBJJ20gZ2xhZCB0byBhbm5vdW5jZSB0aGUgZmlyc3QgcmVs ZWFzZSBvZiBgbWVuaGlyZm9ybWF0JywgYSBjb21tYW5kDQogIGxpbmUgdG9vbCB0aGF0IGZvcm1h dHMgYW5kIGluZGVudHMgTWVuaGlyIGFuZCBvY2FtbGxleCBzb3VyY2UgY29kZS4gSXQNCiAgdXNl cyB0aGUgW29jYW1sZm9ybWF0IFJQQ10gdG8gcHJldHR5LXByaW50IHRoZSBPQ2FtbCBzZWN0aW9u cyBvZiB5b3VyDQogIGxleGVycyBhbmQgcGFyc2VyczsgaXQgYWxzbyB0cmllcyBpdHMgYmVzdCB0 byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwNCiAgbG9jYXRpb24gb2YgeW91ciBjb21tZW50cyAoc3Rp bGwgbmVlZHMgd29yayBpbiByZWdhcmQgdG8gdGhpcw0KICB0aG91Z2ghKS4NCg0KICBUaGlzIGlz IGEgc2F0ZWxsaXRlIHByb2plY3Qgb2YgbXkgb25nb2luZyBhbmQgY29uc2lkZXJhYmx5IGxhcmdl cg0KICBlZmZvcnQgdG8gYWRkIExTUCBzdXBwb3J0IHRvIHRoZXNlIHR3byBPQ2FtbCBkaWFsZWN0 cywNCiAgW2BtZW5oaXItbHNwJ10uIFRoZSBmb3JtYXR0aW5nIGZ1bmN0aW9uYWxpdHkgd2FzIG9y aWdpbmFsbHkgZW1iZWRkZWQNCiAgaW50byB0aGUgTFNQIHNlcnZlciB0byBoYW5kbGUgZG9jdW1l bnQgZm9ybWF0dGluZyByZXF1ZXN0cywgYW5kIEkNCiAgc3BsaXQgaXQgb3V0IGFzIGEgc3RhbmRh bG9uZSBhcHBsaWNhdGlvbiBhZnRlciBbdGhpcyBpc3N1ZV0uDQoNCiAgWW91IGNhbiB0cnkgaXQg b3V0IHdpdGggYG9wYW0gaW5zdGFsbCBtZW5oaXJmb3JtYXQnLiBUaGUgQ0xJIGlzIGhpZ2hseQ0K ICBpbnNwaXJlZCBieSBvY2FtbGZvcm1hdCdzIGFuZCB0YWtlcyB0aGUgZmlsZSB0byBmb3JtYXQg YXMgYXJndW1lbnQsDQogIGUuZy4gYG1lbmhpcmZvcm1hdCBjYWxjLm1seScuIEl0IGV4cG9zZXMg YSBzbWFsbCBjb25maWd1cmF0aW9uIGJ5DQogIHdoaWNoIHlvdXIgY2FuIHR3ZWFrIHRoZSBmb3Jt YXR0ZXIncyBiZWhhdmlvcjsgcmVhZCBvbiB0aGUgYXZhaWxhYmxlDQogIG9wdGlvbnMgd2l0aCBg bWVuaGlyZm9ybWF0IC0taGVscCcuDQoNCiAgWW91IG1heSBhbHNvIGludGVncmF0ZSBpdCBpbiB5 b3VyIGR1bmUgcHJvamVjdCBieSBzZXR0aW5nIHVwDQogIFtkaWFsZWN0c10gZm9yIE1lbmhpciBh bmQgb2NhbWxsZXg6DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAoZGlhbGVjdA0KICDilIIg IChuYW1lIG1lbmhpcikNCiAg4pSCICAoaW1wbGVtZW50YXRpb24NCiAg4pSCICAgKGV4dGVuc2lv biBtbHkpDQogIOKUgiAgIChmb3JtYXQNCiAg4pSCICAgIChydW4gbWVuaGlyZm9ybWF0ICV7aW5w dXQtZmlsZX0pKSkpDQogIOKUgiANCiAg4pSCIChkaWFsZWN0DQogIOKUgiAgKG5hbWUgb2NhbWxs ZXgpDQogIOKUgiAgKGltcGxlbWVudGF0aW9uDQogIOKUgiAgIChleHRlbnNpb24gbWxsKQ0KICDi lIIgICAoZm9ybWF0DQogIOKUgiAgICAocnVuIG1lbmhpcmZvcm1hdCAle2lucHV0LWZpbGV9KSkp KQ0KICDilJTilIDilIDilIDilIANCg0KICBUaGVuIHJ1bm5pbmcgYGR1bmUgYnVpbGQgQGZtdCcg d2lsbCBmb3JtYXQgeW91ciBwcm9qZWN0J3MgLm1sbCBhbmQNCiAgLm1seSBmaWxlcyBhbmQgZGlz cGxheSBhIGRpZmYuDQoNCiAgQXMgc29tZW9uZSB3aG8gY2FuJ3QgbGl2ZSB3aXRob3V0IGZvcm1h dC1vbi1zYXZlIGluIHRoZWlyIElERSwgSSB3YXMNCiAgcmVhbGx5IG1pc3NpbmcgYSBmb3JtYXR0 ZXIgZm9yIE1lbmhpciBhbmQgb2NhbWxsZXggZmlsZXMgaW4gdGhlIE9DYW1sDQogIGVjb3N5c3Rl bS4gSSBob3BlIGBtZW5oaXJmb3JtYXQnIGZpbGxzIHRoYXQgdm9pZC4NCg0KICBJJ20gaW50ZXJl c3RlZCBpbiBvcGluaW9ucyBhYm91dCB0aGUgcXVhbGl0eSBvZiB0aGUgb3V0cHV0IGFuZCBhbHNv IGluDQogIHN1Z2dlc3Rpb25zIGZvciBvdGhlciBjdXN0b21pemF0aW9uIHBvaW50cyBvZiB0aGUN CiAgY29uZmlndXJhdGlvbi4gUGxlYXNlIHNoYXJlIGJlbG93IG9yIHRocm91Z2ggYSBHaXRIdWIg aXNzdWUhDQoNCiAg4oCiIG9wYW0gcGFnZTogPGh0dHBzOi8vb2NhbWwub3JnL3AvbWVuaGlyZm9y bWF0L2xhdGVzdD4NCiAg4oCiIFNvdXJjZSBjb2RlOg0KICAgIDxodHRwczovL2dpdGh1Yi5jb20v ZGFscHMvbWVuaGlyLWxzcC90cmVlL21haW4vcHJldHR5cHJpbnQ+DQoNCiAgRW5qb3khDQoNCg0K W29jYW1sZm9ybWF0IFJQQ10gPGh0dHBzOi8vb2NhbWwub3JnL3Avb2NhbWxmb3JtYXQtcnBjLWxp Yi9sYXRlc3Q+DQoNCltgbWVuaGlyLWxzcCddIDxodHRwczovL2dpdGh1Yi5jb20vZGFscHMvbWVu aGlyLWxzcD4NCg0KW3RoaXMgaXNzdWVdIDxodHRwczovL2dpdGh1Yi5jb20vZGFscHMvbWVuaGly LWxzcC9pc3N1ZXMvMjU+DQoNCltkaWFsZWN0c10NCjxodHRwczovL2R1bmUucmVhZHRoZWRvY3Mu aW8vZW4vbGF0ZXN0L3JlZmVyZW5jZS9kdW5lLXByb2plY3QvZGlhbGVjdC5odG1sI2RpYWxlY3Q+ DQoNCg0KU29sbzUgMC4xMi4wDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAN Cg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1zb2xvNS0wLTEy LTAvMTgzMjAvMT4NCg0KDQpIYW5uZXMgTWVobmVydCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KDQogIFdlIGFyZSBkZWxpZ2h0ZWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2Ugb2YgW1NvbG81 IDAuMTIuMF0uIFRoaXMgaGFzDQogIHR3byBkaXN0aW5jdCBmZWF0dXJlczogYSBuZXcgaHZ0IFti YWNrZW5kIGZvciBEcmFnb25GbHlCU0QgbnZtbV0sDQogIHRoYW5rcyB0byBmaXJzdC10aW1lIGNv bnRyaWJ1dG9yIE1pY2hhZWwgTmV1bWFubiwgYW5kIFtzb2Z0IHBvd2VyLW9mZg0KICBvZiB2aXJ0 aW8gdW5pa2VybmVsc10gLSBhIFtsb25nLXN0YW5kaW5nIGZlYXR1cmUgcmVxdWVzdF0sIHdoaWNo IG1ha2VzDQogIHVzaW5nIHNvbG81IGUuZy4gb24gR29vZ2xlIGNvbXB1dGUgbXVjaCBzbW9vdGhl ciDigJMgdGhpcyB3YXMgaW5pdGlhbGx5DQogIHJlcXVlc3RlZCBieSBNaWNoYWVsIEJhY2FyZWxs YSwgaW5jbHVkaW5nIGRyYWZ0IGltcGxlbWVudGF0aW9ucywgYW5kDQogIFtub3cgaW1wbGVtZW50 ZWRdIGFuZCBtZXJnZWQgYnkgUm9tYWluIENhbGFzY2liZXR0YS4NCg0KICBPdGhlciBub3Rld29y dGh5IGZpeGVzIGluY2x1ZGUgdGhhdCBgY29uZmlndXJlLnNoJyBbbm93IGNoZWNrcyBmb3IgdGhl DQogIEMgY29tcGlsZXIgdmVyc2lvbl0gdG8gYmUgYXQgbGVhc3QgR0NDIGluIHZlcnNpb24gOSBv ciBjbGFuZyBpbg0KICB2ZXJzaW9uIDEwLiBUaGUgYHNvbG81LWh2dC1kZWJ1ZycgY3Jhc2hlZCBz aW5jZSB0b28gc3RyaWN0IHNlY2NvbXANCiAgcnVsZXMgd2VyZSBhcHBsaWVkIChzaW5jZSBzb2xv NSAwLjExLjApIC0gdGhhbmtzIHRvIEZlbGl4IFNvbGNoZXIgZm9yDQogIG9wZW5pbmcgdGhlIFtp c3N1ZV0sIGFuZCBhZ2FpbiBSb21haW4gQ2FsYXNjaWJldHRhIGZvciB0aGUgW2ZpeF0uDQoNCiAg QXdhaXRpbmcgb3BhbS1yZXBvc2l0b3J5IG1lcmdlIGF0DQogIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb3BhbS1yZXBvc2l0b3J5L3B1bGwvMzAxODI+DQoNCg0KW1NvbG81IDAuMTIuMF0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9Tb2xvNS9zb2xvNS9yZWxlYXNlcy90YWcvdjAuMTIuMD4NCg0KW2Jh Y2tlbmQgZm9yIERyYWdvbkZseUJTRCBudm1tXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9Tb2xvNS9z b2xvNS9wdWxsLzY0MD4NCg0KW3NvZnQgcG93ZXItb2ZmIG9mIHZpcnRpbyB1bmlrZXJuZWxzXQ0K PGh0dHBzOi8vZ2l0aHViLmNvbS9Tb2xvNS9zb2xvNS9wdWxsLzY0Nz4NCg0KW2xvbmctc3RhbmRp bmcgZmVhdHVyZSByZXF1ZXN0XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9Tb2xvNS9zb2xvNS9pc3N1 ZXMvNDk5Pg0KDQpbbm93IGltcGxlbWVudGVkXSA8aHR0cHM6Ly9naXRodWIuY29tL1NvbG81L3Nv bG81L3B1bGwvNjQ3Pg0KDQpbbm93IGNoZWNrcyBmb3IgdGhlIEMgY29tcGlsZXIgdmVyc2lvbl0N CjxodHRwczovL2dpdGh1Yi5jb20vU29sbzUvc29sbzUvcHVsbC82NDU+DQoNCltpc3N1ZV0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9Tb2xvNS9zb2xvNS9pc3N1ZXMvNjQzPg0KDQpbZml4XSA8aHR0cHM6 Ly9naXRodWIuY29tL1NvbG81L3NvbG81L3B1bGwvNjQ0Pg0KDQoNCkxhbmRtYXJrcyAxLjcNCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRw czovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWxhbmRtYXJrcy0xLTcvMTgzMTkvMT4NCg0KDQpO aWNvbGFzIE9qZWRhIEJhciBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQog IERlYXIgY29tbXVuaXR5LA0KDQogIFdlIGFyZSBwbGVhc2VkIHRvIGFubm91bmNlIGEgbmV3IHJl bGVhc2Ugb2YgL0xhbmRtYXJrcy8sIGEgc2ltcGxlDQogIHJ1bnRpbWUgcHJvZmlsZXIgZm9yIE9D YW1sLg0KDQogIDxodHRwczovL2dpdGh1Yi5jb20vTGV4aUZpL2xhbmRtYXJrcy9yZWxlYXNlcy90 YWcvdjEuNz4NCg0KICBUaGUgbWFpbiBub3ZlbHR5IGluIHRoaXMgcmVsZWFzZSBpcyB0aGUgcG9z c2liaWxpdHkgb2YgZGVmaW5pbmcgY3VzdG9tDQogIGJhY2tlbmRzIHRvIGdlbmVyYXRlIHJlcG9y dHMgdGhhdCBjYW4gYmUgY29uc3VtZWQgYnkgZXh0ZXJuYWwNCiAgdmlld2Vycy4gQW4gZXhhbXBs ZSBiYWNrZW5kIHRoYXQgcHJvZHVjZXMNCiAgPGh0dHBzOi8vd3d3LnNwZWVkc2NvcGUuYXBwLz4g cmVwb3J0cyBpcyBpbmNsdWRlZCBpbiBhIG5ldyBsaWJyYXJ5DQogIGBsYW5kbWFya3Mtc3BlZWRz Y29wZScuIEN1c3RvbSBiYWNrZW5kcyBjYW4gYmUgZGVmaW5lZCBpbiBleHRlcm5hbA0KICBsaWJy YXJpZXMgd2l0aG91dCBuZWVkaW5nIHRvIG1vZGlmeSBgbGFuZG1hcmtzJyBpdHNlbGYuIFRoaXMg c3VwcG9ydA0KICB3YXMgYWRkZWQgYnkgQG1qYW1ib24uDQoNCiAgSGFwcHkgcHJvZmlsaW5nIQ0K DQogIENoZWVycywgTmljb2xhcw0KDQoNCldoeSBPY3NpZ2VuIGlzIHN0YXlpbmcgb24gTHd0IChm b3Igbm93KQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC93aHktb2NzaWdlbi1pcy1zdGF5aW5nLW9uLWx3dC1mb3Itbm93LzE4MzE4LzE+DQoNCg0KVmlu Y2VudCBCYWxhdCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIE92ZXIgMjAyNSB3ZSBtaWdy YXRlZCB0aGUgd2hvbGUgT2NzaWdlbiBzdGFjayAob2NzaWdlbnNlcnZlciwgRWxpb20sDQogIG9j c2lnZW4tdG9vbGtpdCwgb2NzaWdlbi1zdGFydCkgZnJvbSBMd3QgdG8gRWlvLiBUaGUgbWlncmF0 aW9uDQogIGNvbXBpbGVzIGFuZCB0aGUgdGVzdCBzdWl0ZSBwYXNzZXMuIFdlIGhhdmUgbm9uZXRo ZWxlc3MgZGVjaWRlZCAqKm5vdA0KICB0byByZWxlYXNlIGl0IGFuZCB0byBzdGF5IG9uIEx3dCBm b3Igbm93KiosIGFuZCB3ZSB3cm90ZSB1cCB3aHkuDQoNCiAgVHdvIG9ic3RhY2xlcyBzdG9wcGVk IHVzOg0KDQogIOKAoiAqTG9zcyBvZiBmdW5jdGlvbiBjb2xvcmluZy4qIFVuZGVyIEx3dCwgYSBg XyBMd3QudCcgaW4gYSB0eXBlIHRlbGxzDQogICAgIHlvdSBhIGNhbGwgbWF5IHN1c3BlbmQgb3Ig ZG8gSS9PLiBJbiBhIG11bHRpLXRpZXIgZnJhbWV3b3JrIGxpa2UNCiAgICAgRWxpb20gdGhpcyBp cyBjcnVjaWFsOiB0aGUgKnNhbWUqIHNoYXJlZCBleHByZXNzaW9uIGNhbiBiZSBhIGxvY2FsDQog ICAgIGNhbGwgb24gdGhlIHNlcnZlciBhbmQgYSBuZXR3b3JrIHJvdW5kLXRyaXAgb24gdGhlIGNs aWVudC4gV2l0aG91dA0KICAgICBjb2xvcmluZywgbm90aGluZyBhdCB0aGUgY2FsbCBzaXRlIHRl bGxzIHlvdSB3aGVyZSB0byBwdXQgYQ0KICAgICBzcGlubmVyLCBhbmQgcmVhY3RpdmUgY29tYmlu YXRvcnMgKGBSZWFjdCcgLyBgbWFwX3MnKSBzaWxlbnRseSBsb3NlDQogICAgIHRoZSBndWFyYW50 ZWUgdGhhdCB0aGV5IGFyZSBwdXJlLg0KICDigKIgKkVpbydzIGhhbmRsZXIgbW9kZWwgdnMgYnJv d3NlciBldmVudHMuKiBPbiB0aGUgY2xpZW50LCBET00gZXZlbnQNCiAgICAgaGFuZGxlcnMgYXJl IGNhbGxlZCBkaXJlY3RseSBieSB0aGUgYnJvd3NlciB3aXRoIG5vIEVpbyBoYW5kbGVyIG9uDQog ICAgIHRoZSBzdGFjaywgc28gYW55IGBwZXJmb3JtJyBjcmFzaGVzLiBUaGUgdXN1YWwgd29ya2Fy b3VuZA0KICAgICAoYEVpb19qcy5zdGFydCcpIGRlZmVycyB0aGUgYm9keSB2aWEgYHNldFRpbWVv dXQoMCknLCB3aGljaCBydW5zDQogICAgIGFmdGVyIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBicmVh a3MgYHByZXZlbnREZWZhdWx0JyAvDQogICAgIGBzdG9wUHJvcGFnYXRpb24nLg0KDQogIFRoaXMg aXMgKm5vdCogYW4gYW50aS1FaW8gcG9zdC4gRWZmZWN0cyBhcmUgYSBtYWpvciBhY2hpZXZlbWVu dCBvZg0KICBPQ2FtbCA1IGFuZCB3ZSBhcmUgZ3JhdGVmdWwgdG8gdGhlIG11bHRpY29yZSB0ZWFt LiBXZSBhbHNvIHRoaW5rIHRoZQ0KICBtb25hZGljIHN0eWxlIGlzIGdlbnVpbmVseSBmaW5lICh3 aXRoIGBsZXQqJyBpdCBpcyBjb21mb3J0YWJsZSB0bw0KICB3cml0ZSksIGFuZCBgTHd0X2RpcmVj dCcgaXMgdGhlcmUgZm9yIHRob3NlIHdobyBkaXNsaWtlIG1vbmFkcy4NCg0KICBPdXIgYnJvYWRl ciB3b3JyeSBpcyBlY29zeXN0ZW0gdW5pdHk6IHZlcnkgbGFyZ2UgTHd0IGNvZGViYXNlcyBleGlz dCwNCiAgdW5kZXJmdW5kZWQgcHJvamVjdHMgY2Fubm90IGFmZm9yZCBzdWNoIGEgbWlncmF0aW9u LCBhbmQgYSBzcGxpdCB3b3VsZA0KICBodXJ0IGEgY29tbXVuaXR5IHRoYXQgaXMgYWxyZWFkeSBz bWFsbC4gVG8gaGVscCwgd2UgcmVsZWFzZWQNCiAgW2BjaWFvLWx3dCddIChMd3QtdG8tRWlvIG1p Z3JhdGlvbiB0b29scyksIGZ1bmRlZCBieSBOTG5ldCB0aHJvdWdoIE5HSQ0KICBaZXJvIENvcmUg YW5kIFRhcmlkZXMuIFdlIHdvdWxkIGxvdmUgdGhlIGVmZmVjdHMgY29tbXVuaXR5J3MgdmlldyBv bg0KICBkaXJlY3Rpb25zIHRoYXQgY291bGQgdW5ibG9jayB1cywgaW5jbHVkaW5nIGltcHJvdmlu ZyBMd3QgaXRzZWxmDQogIChpb191cmluZywgZWZmZWN0cywgbXVsdGljb3JlKS4NCg0KICBGdWxs IHdyaXRlLXVwOg0KICA8aHR0cHM6Ly9vY3NpZ2VuLm9yZy9ibG9nL3Bvc3RzL3doeS1vY3NpZ2Vu LXN0YXlzLW9uLWx3dC1mb3Itbm93Lmh0bWw+DQoNCiAgRmVlZGJhY2ssIGlkZWFzIGFuZCBjb25z dHJ1Y3RpdmUgZGlzYWdyZWVtZW50IHZlcnkgd2VsY29tZS4NCg0KDQpbYGNpYW8tbHd0J10gPGh0 dHBzOi8vZ2l0aHViLmNvbS90YXJpZGVzL2NpYW8tbHd0Pg0KDQoNCkR1bmUgMy4yNA0K4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2Ft bC5vcmcvdC9hbm4tZHVuZS0zLTI0LzE4MzE2LzE+DQoNCg0KU2hvbiBhbm5vdW5jZWQNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoZSBEdW5lIHRlYW0g aXMgcGxlYXNlZCB0byBhbm5vdW5jZSBbdGhlIHJlbGVhc2Ugb2YgZHVuZSAzLjI0LjBdLg0KDQog IEhpZ2hsaWdodHMgaW5jbHVkZSB0aGUgZm9sbG93aW5nDQoNCiAg4oCiIER1bmUgcGFja2FnZSBt YW5hZ2VtZW50IG5vdyB1c2VzIHRoZSByZWxvY2F0YWJsZSBjb21waWxlciBieQ0KICAgIGRlZmF1 bHQsIGZvciBhbGwgc3VwcG9ydGVkIGNvbXBpbGVyIHZlcnNpb25zLiBUaGlzIGJyaW5ncyBhIG1h c3NpdmUNCiAgICBzcGVlZHVwIHRvIHdvcmtzcGFjZSBzZXR1cCBpbiB0aGUgbWFueSBjYXNlcyB3 aGVyZSBidWlsdCBjb21waWxlcg0KICAgIHZlcnNpb25zIGNhbiBiZSByZXVzZWQuIChbb2NhbWwv ZHVuZSMxNDM1N10sIFtAQWxpenRlcl0pDQoNCiAg4oCiIERpcmVjdG9yeSB0YXJnZXRzIGFyZSBu b3cgZ2VuZXJhbGx5IGF2YWlsYWJsZSAoW29jYW1sL2R1bmUjMTQ1NzldKSwNCiAgICBhbGxvd2lu ZyB0b29scyB0byBwcm9kdWNlIGVudGlyZSBkaXJlY3RvcnkgdHJlZXMgYXMgdGFyZ2V0cy4gU2Vl IHRoZQ0KICAgIFtkb2N1bWVudGF0aW9uIG9uIGRpcmVjdG9yeSB0YXJnZXRzXSBmb3IgZGV0YWls cy4NCg0KICDigKIgUGF0aCBoYW5kbGluZyBoYXMgYmVlbiByZWZpbmVkLCBpbXByb3ZpbmcgdGhl IGNvbnNpc3RlbmN5IG9mIHBhdGhzDQogICAgYWNyb3NzIHBsYXRmb3JtcyAoW29jYW1sL2R1bmUj MTQyNzhdIGFuZCBbb2NhbWwvZHVuZSMxNDI3OF0pIGFuZA0KICAgIHVzaW5nIGEgbW9yZSBjb25z aXN0ZW50IGFuZCBkaXNjaXBsaW5lZCBsb2NhdGlvbiBmb3IgYCV7YmluOk5BTUV9Jw0KICAgIHZh cmlhYmxlIGV4cGFuc2lvbnMgKFtvY2FtbC9kdW5lIzE0NDMyXSkuDQoNCiAg4oCiIFBhdGgtdmFs dWVkIHBlcmNlbnQgZm9ybXMgKGAle2JpbjouLi59JywgYCV7ZGVwOi4uLn0nLA0KICAgIGAle3Bh dGg6Li4ufScsIGFuZCBmcmllbmRzKSBub3cgZXhwYW5kIHNhbWUtZGlyZWN0b3J5IHBhdGhzIHdp dGggYQ0KICAgIGxlYWRpbmcgYC4vJywgc28gdGhhdCBzaGVsbHMgbGlrZSBgYmFzaCcgaW4gYChi YXNoIC4uLiknIGFuZA0KICAgIGAoc3lzdGVtIC4uLiknIGFjdGlvbnMgZXhlY3V0ZSB0aGVtIGRp cmVjdGx5IGluc3RlYWQgb2YgbG9va2luZyB0aGVtDQogICAgdXAgaW4gYFBBVEgnIChbb2NhbWwv ZHVuZSMxNTE1Nl0pLiBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZvcg0KICAgIGNvbmZpZ3Vy YXRpb25zIHRoYXQgd2VyZSBoYW5kbGluZyBwYXRocyBuYWl2ZWx5LCBhbmQgbmVnbGVjdGVkIHRv DQogICAgbm9ybWFsaXplIHRoZSByZXByZXNlbnRhdGlvbiBiZWZvcmUgdXNpbmcgaXQgdGVzdCBm aXh0dXJlcyBvciBmb3INCiAgICBjb25zdHJ1Y3Rpbmcgb3RoZXIgc3RyaW5ncy4NCg0KICDigKIg VGhlIGRlcHJlY2F0ZWQgYGxhbmcgY29xJyBoYXMgYmVlbiByZW1vdmVkLCBhcyBzY2hlZHVsZWQs IHN1cGVyc2VkZWQNCiAgICBieSBgbGFuZyByb2NxJy4gU2VlIFtvY2FtbC9kdW5lIzEyNzg4XSBm b3IgZGV0YWlscy4NCg0KICBTZWUgW3RoZSBmdWxsIGNoYW5nZWxvZ10gZm9yIGFsbCBuZXcgZmVh dHVyZXMgYW5kIGZpeGVzLCBhbmQgZm9yDQogIGF0dHJpYnV0aW9uIHRvIHRoZSBjb250cmlidXRv cnMgd2hvIG1hZGUgaXQgYWxsIHBvc3NpYmxlLiBUaGFuayB5b3UsDQogIGNvbnRyaWJ1dG9ycyEN Cg0KICBJZiB5b3UgZW5jb3VudGVyIGEgcHJvYmxlbSB3aXRoIHRoaXMgcmVsZWFzZSwgcGxlYXNl IHJlcG9ydCBpdCBpbiBbb3VyDQogIGlzc3VlIHRyYWNrZXJdLg0KDQoNClt0aGUgcmVsZWFzZSBv ZiBkdW5lIDMuMjQuMF0NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvZHVuZS9yZWxlYXNlcy90 YWcvMy4yNC4wPg0KDQpbb2NhbWwvZHVuZSMxNDM1N10gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2Ft bC9kdW5lL3B1bGwvMTQzNTc+DQoNCltAQWxpenRlcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9BbGl6 dGVyPg0KDQpbb2NhbWwvZHVuZSMxNDU3OV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9kdW5l L3B1bGwvMTQ1Nzk+DQoNCltkb2N1bWVudGF0aW9uIG9uIGRpcmVjdG9yeSB0YXJnZXRzXQ0KPGh0 dHBzOi8vZHVuZS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvcmVmZXJlbmNlL2R1bmUvcnVsZS5o dG1sI2RpcmVjdG9yeS10YXJnZXRzPg0KDQpbb2NhbWwvZHVuZSMxNDI3OF0gPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9kdW5lL3B1bGwvMTQyNzg+DQoNCltvY2FtbC9kdW5lIzE0NDMyXSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL2R1bmUvcHVsbC8xNDQzMj4NCg0KW29jYW1sL2R1bmUjMTUx NTZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvZHVuZS9wdWxsLzE1MTU2Pg0KDQpbb2NhbWwv ZHVuZSMxMjc4OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9kdW5lL2lzc3Vlcy8xMjc4OD4N Cg0KW3RoZSBmdWxsIGNoYW5nZWxvZ10gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9kdW5lL3Jl bGVhc2VzL3RhZy8zLjI0LjA+DQoNCltvdXIgaXNzdWUgdHJhY2tlcl0gPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY2FtbC9kdW5lL2lzc3Vlcz4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDi lZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBt ZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQg W3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAg SWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1h eSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoN Cg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVl Lm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24v Pg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1l Lm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIv c3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0 aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= 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 June 30 to July 07, 2= 026.

opam-minver 0.2.0 - automatically determine minimum dependency= versions

onetimerobot announced

I have published opam-minver 0.2.0 (previous versions were not released to = the public). What it does is use a binary search to find the minimum passin= g versions of a project's dependencies listed in its opam file and optional= ly writes them out to the opam file in-place. I wrote this because I was wo= rking on another project (not yet published) and got to the point of listin= g all the dependencies, and realizing I had no idea what versions it was co= mpatible with. This tool finds that out automatically.

It's pretty well polished at this point, and it has a cmdliner interface, s= tores its state in a json file so sessions can be resumed if need be, and i= t also finds the minimum compiler versions and handles split OCaml compiler= bounds if, for example, a project doesn't work specifically with early OCa= ml 5 versions. This could be used not only for new projects, but also to re= lax version bounds on any project where they haven't been determined precis= ely.

Homepage and readme is here: https://github.com/luminous-moose/opam-minver

Zanuda – OCaml linter experiment

Continuing this thread, Kakadu announced

Zanuda 2.1.0 is merged into opam-repository

  • OCaml 5.5 support
  • Lints could be disabled via [@@@zanuda "-name"]
  • Lints represented as ocamlfind packages could be loaded at runtime and = defined outside zanuda codebase. This modularity for now is experimental= .

rpgm-decrypt =E2=80=94 a formally-verified RPG Maker asset dec= ryptor in OCaml

LulLaS announced

Hi everyone))) :slightly_smiling_face:=20

I'd like to share rpgm-decrypt, a small command-line tool that decry= pts and extracts RPG Maker asset archives (XP / VX / VX Ace via .rgssad / .rgss2a / .rgss3a, and MV / MZ via the XOR-encrypted assets and .pak archives).

It started as a clean-room reimplementation and ended up as an excuse to pu= sh OCaml's correctness tooling as far as I could on a real project:

  • Gospel specifications on the pure core ((*@ ... *) = in the ~.mli~s)
  • Why3 + Z3 deductive proofs of the key derivation, little-endian = reads and a Zip-Slip path-safety invariant (23/23 goals discharged)
  • QCheck property tests (round-trip / invariants) alongside the un= it suite
  • Coverage-guided afl-fuzz of the parsers in CI (0 crashes)
  • bisect_ppx coverage + a small directed mutation-testing pass
  • Ships as a single static binary via dune --profile static;= the only external dep is camlzip (zlib) for the MZ .pak path

Build/test runs on the native Windows OCaml switch as well as Linux. Licensed Apache-2.0.

Example run:

$ rpgm-decrypt "MyGame" out
scanned=3D1817 decrypted=3D1685 passthrough=3D132 skipped=3D0 failed=3D0 fo=
rmats=3D[MV=3D1817]

Repo, docs and prebuilt Windows/Linux binaries:

https://githu= b.com/rolanfreeman6-png/rpgm-decrypt

Feedback on the spec/proof setup especially welcome =E2=80=94 it's my first= serious go at Gospel + Why3, so I'd love to hear how others structure that on real code.

menhirformat 0.1.0

Federico announced

Hello,

I'm glad to announce the first release of menhirformat, a comm= and line tool that formats and indents Menhir and ocamllex source code. It = uses the ocamlfo= rmat RPC to pretty-print the OCaml sections of your lexers and parsers;= it also tries its best to preserve the original location of your comments = (still needs work in regard to this though!).

This is a satellite project of my ongoing and considerably larger effort to= add LSP support to these two OCaml dialects, menhir-lsp. The formatting functionalit= y was originally embedded into the LSP server to handle document formatting= requests, and I split it out as a standalone application after this issue.

You can try it out with opam install menhirformat. The CLI is = highly inspired by ocamlformat's and takes the file to format as argument, = e.g. menhirformat calc.mly. It exposes a small configuration b= y which your can tweak the formatter's behavior; read on the available opti= ons with menhirformat --help.

You may also integrate it in your dune project by setting up dialects for Menhir and ocamllex:

(dialect
 (name menhir)
 (implementation
  (extension mly)
  (format
   (run menhirformat %{input-file}))))

(dialect
 (name ocamllex)
 (implementation
  (extension mll)
  (format
   (run menhirformat %{input-file}))))

Then running dune build @fmt will format your project's .mll a= nd .mly files and display a diff.

As someone who can't live without format-on-save in their IDE, I was really= missing a formatter for Menhir and ocamllex files in the OCaml ecosystem. = I hope menhirformat fills that void.

I'm interested in opinions about the quality of the output and also in sugg= estions for other customization points of the configuration. Please share b= elow or through a GitHub issue!

Enjoy!

Solo5 0.12.0

Hannes Mehnert announced

We are delighted to announce the release of Solo5 0.12.0. This has two distinct fe= atures: a new hvt backe= nd for DragonFlyBSD nvmm, thanks to first-time contributor Michael Neum= ann, and soft power-off= of virtio unikernels - a long-standing feature request, which makes using solo5 e.g. on= Google compute much smoother – this was initially requested by Micha= el Bacarella, including draft implementations, and now implemented and merged by Romain Calasc= ibetta.

Other noteworthy fixes include that configure.sh now checks for the C compiler versio= n to be at least GCC in version 9 or clang in version 10. The sol= o5-hvt-debug crashed since too strict seccomp rules were applied (si= nce solo5 0.11.0) - thanks to Felix Solcher for opening the issue, and again Romain Calascib= etta for the fix.

Awaiting opam-repository merge at https://github.com/ocaml/opam-repository/pull/30182<= /a>

Landmarks 1.7

Nicolas Ojeda Bar announced

Dear community,

We are pleased to announce a new release of Landmarks, a simple runt= ime profiler for OCaml.=20

https://g= ithub.com/LexiFi/landmarks/releases/tag/v1.7

The main novelty in this release is the possibility of defining custom back= ends to generate reports that can be consumed by external viewers. An examp= le backend that produces https://ww= w.speedscope.app/ reports is included in a new library landmarks-= speedscope. Custom backends can be defined in external libraries wit= hout needing to modify landmarks itself. This support was adde= d by @mjambon.

Happy profiling!

Cheers, Nicolas

Why Ocsigen is staying on Lwt (for now)

Vincent Balat announced

Over 2025 we migrated the whole Ocsigen stack (ocsigenserver, Eliom, ocsige= n-toolkit, ocsigen-start) from Lwt to Eio. The migration compiles and the t= est suite passes. We have nonetheless decided not to release it and t= o stay on Lwt for now, and we wrote up why.

Two obstacles stopped us:

  • Loss of function coloring. Under Lwt, a _ Lwt.t in = a type tells you a call may suspend or do I/O. In a multi-tier framework li= ke Eliom this is crucial: the same shared expression can be a local = call on the server and a network round-trip on the client. Without coloring= , nothing at the call site tells you where to put a spinner, and reactive c= ombinators (React / map_s) silently lose the guar= antee that they are pure.
  • Eio's handler model vs browser events. On the client, DOM event = handlers are called directly by the browser with no Eio handler on the stac= k, so any perform crashes. The usual workaround (Eio_js.= start) defers the body via setTimeout(0), which runs af= ter event propagation and breaks preventDefault / stopPr= opagation.

This is not an anti-Eio post. Effects are a major achievement of OCa= ml 5 and we are grateful to the multicore team. We also think the monadic s= tyle is genuinely fine (with let* it is comfortable to write),= and Lwt_direct is there for those who dislike monads.

Our broader worry is ecosystem unity: very large Lwt codebases exist, under= funded projects cannot afford such a migration, and a split would hurt a co= mmunity that is already small. To help, we released ciao-lwt (Lwt-to-Eio migration to= ols), funded by NLnet through NGI Zero Core and Tarides. We would love the = effects community's view on directions that could unblock us, including imp= roving Lwt itself (io_uring, effects, multicore).

Full write-up: https://ocsigen.org/blog/posts/why-ocsigen-stays-on-lw= t-for-now.html

Feedback, ideas and constructive disagreement very welcome.

Dune 3.24

Shon announced

The Dune team is pleased to announce the release of dune 3.24.0.

Highlights include the following

  • Dune package management now uses the relocatable compiler by default, f= or all supported compiler versions. This brings a massive speedup to worksp= ace setup in the many cases where built compiler versions can be reused. (<= a href=3D"https://github.com/ocaml/dune/pull/14357">ocaml/dune#14357, <= a href=3D"https://github.com/Alizter">@Alizter)
  • Directory targets are now generally available (ocaml/dune#14579), allowing tools to produ= ce entire directory trees as targets. See the documentati= on on directory targets for details.
  • Path handling has been refined, improving the consistency of paths acro= ss platforms (ocaml/du= ne#14278 and ocaml= /dune#14278) and using a more consistent and disciplined location for <= code>%{bin:NAME} variable expansions (ocaml/dune#14432).
  • Path-valued percent forms (%{bin:...}, %{dep:...}, %{path:...}, and friends) now expand same-directory path= s with a leading ./, so that shells like bash in = (bash ...) and (system ...) actions execute them = directly instead of looking them up in PATH (ocaml/dune#15156). This is a breaki= ng change for configurations that were handling paths naively, and neglecte= d to normalize the representation before using it test fixtures or for cons= tructing other strings.
  • The deprecated lang coq has been removed, as scheduled, su= perseded by lang rocq. See ocaml/dune#12788 for details.

See the full = changelog for all new features and fixes, and for attribution to the co= ntributors who made it all possible. Thank you, contributors!

If you encounter a problem with this release, please report it in our issue tracker.

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/BsSVW56ZmGBA0KO07S5ccFAmpM/xwbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5cdwJQgAob2AhSOJb6+bUXJkyxJGbcl2h97t9HC64M7kGMeR M5s893/tlaztXGHO94b1h8KFY9w6O0oRvDEI//CDcsd/JzjPdA2i3VfwqzmRfek6 vLqgYGgrgLPb5p6EBS5x4RRVGT4UvILQYVICMUwcI2CWwQFe2cpypuAklzrWdrMU 6h0N1aHM4zISXbHYAM0QNFXql3MTQ+64X1+a/eseM4OO2VwN0MfO3eWwYST69JFP mkYfrTWdyXq0sa3A7Mfjo36mMoPom/yJl+0SJwKHnG+wVVzLetAhVloIXFWzza5h 5qpevXD6K59OVer51D1tlsaUP65q0jk5mJYZ2Z728XmllA== =Ijgt -----END PGP SIGNATURE----- --===-=-=--