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=k7k4A/cG; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=CqJpD4UP; 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]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id D3AA7400C1 for ; Tue, 29 Jul 2025 09:36:32 +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=oeRw93cSp+PSiOzCboUXaZT2mpurCDhCFQv6Dxeo5Hg=; b=k7k4A/cGCdaBq2q5++n4X9GF1VtoSUJw1nuU4C/NSVPqxSajPhRJ76Ad OYWtj7ptxScQyGc8uYKj7Pl2X3W46HcIUxfCgjwobvk5N1D+ISd6LHCXX dFX5MUMCaPlDHU6ahPJIZsLXWtnk3VLCB+2ZQUODsCqGJSjai+ZGyzl0G 8=; X-CSE-ConnectionGUID: x8p1P1XKTTq6oLn9WNis4A== X-CSE-MsgGUID: d/3Pm38pREeMSpj519QhyQ== Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4: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@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.16,348,1744063200"; d="scan'208,217";a="233464715" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 29 Jul 2025 11:36:31 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 63C84E0CD5; Tue, 29 Jul 2025 11:36:31 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 7DDBAE0171 for ; Tue, 29 Jul 2025 11:36:29 +0200 (CEST) X-CSE-ConnectionGUID: nHSVLMmeQZ29FoLxiJSt/Q== X-CSE-MsgGUID: kdafnZYgQPK8X5i3MuBbFQ== IronPort-SDR: 6888961c_qMUBRvTG8IxPLOSrh/9s4D66SPTaHRddPUgYwbbkgAk7oMO f6v6C0VKiEV1pVTnrMIxAbdM1xQEWa4JyNTIqmw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0GaAgBdlYhojyIeaIFaFoQHWygZAWAGWjMHCElhgzg8g?= =?us-ascii?q?0+FLIh2gRaQN4hLgjCCegMYFiMVAQMBDS4BGwQBAgQBAQMBAgGCDIJ0AhaMA?= =?us-ascii?q?wIfBgEENBMBAgQBAQEBAwIDAQEBAQEBAQEBDQEBBQEBAQIBAQIEBgECEAEBA?= =?us-ascii?q?QEBATkFSYV7DYJFUXFhBAMGNwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQIIBAECQE4OCQQGEwEBKAoGGCMDEAQBBgMCBA0BN?= =?us-ascii?q?QMBEwESGoJoAYIhAksDBAEMBpoVm0t6fzOBAYIMAQEGgQg+AwsCBQEOCSbaC?= =?us-ascii?q?4EaSgmBSYVtgkoaASpIawKESIQ8Jw+BVUSBFYJyB2+BUG8LFwEBAQEYgRAUA?= =?us-ascii?q?QFNCYMlgmmCJoECFB2BQII+gjOBKkOCHSYCJoVEggEBA4ZKgUQiAyYzLAFVE?= =?us-ascii?q?xcLBwVbgQgDKjQxbjIdgSeFGIQoK0+FEIEZg1MRE20PBoEVg2pAAwttPTcUG?= =?us-ascii?q?5MlFykZglkCDj4+PgQPAQcRAxAaBgIkElwZGysBHgsNkn4JERcqA3SxYDQHh?= =?us-ascii?q?B+BXgYMiQiBJpYFhASBV4s8hwKLC4dHIphkIoI2hycKgRwJgW9rlWAIMYUgg?= =?us-ascii?q?X8jgVwzGjBDgmcJRhwPj1UBCYJCQX2BJoE7OTu5c0E1AgEBOAIHAQoBAQMJh?= =?us-ascii?q?UUdAQGLO4FLAQE?= IronPort-PHdr: A9a23:I9k++BZQY4Buc+doNjbm5GX/LTGr34qcDmcuAnoPtbtCf+yZ8oj4O wSHvLMx1wSPBd6Quq4a2qL/iOPJZy8p2d65qncMcZhBBVcuqP49uEgNJvDAImDAaMDQUiohA c5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/I Ru4oAnLqsUbj4RuJ6I+xxbIpnZDZvhby35vKV+PkBnw4du98oR++CpKofIh8MBAUaT+f6smS LFTESorPWMo6sD1rBfPVQSB6GMTXWkPjBdGDBXL4An1UZntvCT6sPF92DSBMs3tUb80QzWi4 Lx1RxLulSwKKiQ28GDTisx3kaJbvBesrAFxzoLIfI2YMud1caTAc9MHXmpBRtheWDBdAo2ya IsPCvAOPeder4Lgo1cDoh+zCQyqCejyyDFHm2X20LU63eo/DA/I0g8uEN0Sv3nPttr5KL0fX PqpwKXUzzjOae5d1zfn6IjPdxAsue2BXbZqfsrX1EIhCh/KjlWVqYzkIzOVyvkGvm+B4OpkT +2vjXQrqxptrTivw8csi5XJhp4Ox1Dc8iV5xIY0JcGmR0FnYd6kFppQtziHN4RoWM8iRHtou Ckjx7AApJW0czQExo49yB7Dd/yIbZKI4hT7WeieLzl2hG9odr28ihi99UWt1/PwWtS13VtUr ydIkcXBu3AJ2hHd9MSJReVx80O/1TuNywze6fxIL0AwmKTbN5IsxKM7mJQUsUTGBCD2mUP2g beOdko65uio6vjnbav+pp+bMo90jx/xPr4omsOhHeQ0Kg8OUHSB9uS50L3v50r5QK9FjvEuk 6nZtovaJdgBqa69Bw9ZyJ0j6xanAzep0dQYgXkHLE9edx6dk4fpPFTOLOj3Dfe+n1SskCpry OvcMr3gBZXBNmTMn63lfblj7U5T1RA8zcpF65JRF74NOPPzWknrtNzZFBA1KQK0w/z/BNV80 IMeRXiPAqiEP6PPrVCI+uMvI+6KZIMPvTbyNuAp5/D0gn8jnV8deqeo0YEKZ3+mAPRqO0KZb mb2jdcEFWcGpBAyTOvwiF2NSTJTe2y9X7g95j4mFo2mFp3PSZyqgLyExCu6HppWZn1aClCRC njnaZ+IVOsLaCKXOsNhlSALWqKkS48lzRGurgj6x6B7IerT/y0Vs4/o2ttt5+DLiB0+6zh5A 96A322RQGx4hG0FSyMs0K1xrkFx0lSO3Ktij/BFF9Fe5ulFXwMnOZLG0uB3BM3+VwTcddmTU lmmWM+pATQpQ9Ix3dAOZ0F9Fs2njhHMwiamGacVl7uPBJ007qLTwWT+J8Z7y3bHzakhkkcpT tFINW28ia5z7wnTB4jXnEWFj6umaLoQ0SrX+Gue0WaDs1tUXQBsXanfU30SaVPardHj6UPDS 7+uB64nMgxEycOaN6VEdsDngUleSfj5I9TeeWG+ln+uCRiN3r6MdI3qe2Ed3SXBFkcLjwAT/ XCHNQgnGyeuvXjSDDt0FVLge07j6+1+p2m9TkMu1AGFc01h17+0+h4JmfyRUOgc3rUZuCcnt zp7Ak2908jTC9ePqAttZqJcYcky4Ftfz2LWqxR9PoC8L6BlnlMRbx54v0bq1xluDoVAkNMqr G8xwQppKaOY1UtBeCmC0ZDxPL3XMGjy8wq1Z67YwFHSyNCW9bwX5/Qit1rjpB2pFlYl83h/z tVZy3Sc6YvNDAQRS5z8SkY5+QRiq7HAfCY9+YDa22d0PKmxvT7OxsglBPMiyhakf9ZfLL2LG xPyE80cBsiuMfEqlEazYhIDJuBS+7Y4MN6ld/uH3a6mJP5ukj2ogmpZ/I5wzkSC+zJhRe7Nx ZkF2e2X0xOfWTnllFmvvdj7mZtcZTEcBmex0zTpCpNMaKFqZoYLEWmuLNW3xtpgg57tXGZV+ kS/Cl0bxcH6MSaVOhb5wgsanRATvnqPnTS+iTp5j2dt5qGW2SiLx+X5aDIGPHRKTS9slwTCO 4+x2vkeVU7gVAMpkRq5+Q6uzqxSouJkJGnWQFtUVzDxK3B+X6CwsLubfsMJ74kn53YEGN+ga EyXH+au6yAR1DnuSjcPrNhaXzSju5Gj2gd/lHrYNnF46nzQZcB3wx7bot3aX/9YmDQcF2Fjk TeCIF+6MpGy+MmM0Y/Zu7W3U2unEIZYcSzq0Z+orCy/9HFnCh25numul5vgCwdpmTTj2YxSX D7T5A35fpGt0q27Nex9eUw9P2XHs59zAZtMx9ET0YkX3WkGi56V+3sejGq1Ns9UjKv6ZXxLX jULxt/J/CDv31BlJX+SgYelRjOa2MQyL8KibDYu0zkmp9tPFL/S7LFAmn5tpUGkqAvKffVnt jINkL0273oLn+wCuAws1ziQRLcIEiG0JATKkBKFp5C7paRTPiO0dKSokVB5lpanBa2DpQdVX DD4fI0jFGl+9Jc3NlWEy3D15oz+HbuYJdsOqh2ZlQvBhOlJOdowkPQNny9uJWP6uzUs1ec6i RVk2ZzyspKALi1h+6ewAxgQMTOQBYtb8zXki+BFlcaT3pyzNo1mHiQXUZDoS/OxDT9Usu7od k6PHDA6tnaHCO/HBwbMjSUu53nLEp2tKzSWPCxAl4QkHUHBYhcHxltID1BY1tYjGwunxdLsa hJ87zEVvBvjrwdUj/hvPF/5W3veowGhbnE1ToKeJVxY9FInhQ+dPMqA4+Z0Bywd8IemqVnHE VagP1FBFns7DxanUkjkOqiy6NLA9emBG+f4KOHBNLyKoOoYTPyIwJOzzqNs+CuKPciUeHw+H 7s8wEUJDhUbU4zJ3i4CTSAajXeHZsqSolGn8S1yr9yj2OzsXBPz6ICPDbpLLNgp/Aq5y/TmV abYlGNyLjBW0YkJzHnDxe0E3VIcvCppciGkDbUKsSOloLv4oqZMFFZbbipyMJEN9KcgxkxXP sWdjNrp17l+h/pzClFfVFWnlNv7LcANJmi8MhvACiPpfPy9HwaTlsjse5HpE54FlOJQpgG9s jadElb+M3KEjTa8XhSmN6dXhyGePQBCkIu6bxBmBHOlSY72LBqhP7oVxXU6zKY1iXXDKWMHe WEmIgUU9uHWtnse2ak3EncJ9nd/KOiYhyuVp/LVLJobq7oOYGw8lu5X5mg716oA6ShFQPJvn y6B5tVqolygjqyO0m8+CksI824XwtnT+x4+asC7vtFaVH3J/QwA9zCVAhUO/Z5+D8H3/rpXw Z7Jnb7yLzFL95TV+9EdDo7aMpHiUjJpPBz3FTrTFAZAQySsMDSVvHZmyKSb7Wen+8IZ/4Drn IsSR7RbUl0sC/5cDV5qSdUGKZExRTgklL+HkOYC4me4pxTKAsAGrtbATP3YUpCNYH6JyKJJY RcF2+ayFr4obtjywFZQPwNZyZzNH1vMUNtNpCx4cwJyp19CpXF6R2t1wEnlbwKx/FcZEuOyl RMtzA4icaIq7jimsDJVbhLa4SA3lkc2g9DshzucJSXwIKmHVoZTEyPotkI1P8CzU0NvYAa1h 0AhKCbcSucbke57bW4ywly529MHCbtGQKZDehNV2fyHe6BizwFHsiv+jQxG/beXUMEz0lJyL dj39zQbh0ogbcZpd/WKdewQlgQW3frI5XLNtKh5gw4GexRcqSXLIndO5hZOb+F5b2mp5rI+s 1TawmkfIWRUBfN4/ftnqxFvZejfn3C7iNshYgjyNvTBffnB4zGSyZeEGgFphBJUm0QXr+ctj 8txLBbLDwhqxb+VXXzlLOL6IBpOJ4pX/XnXJ2OVtPnVhIhyNMO7H/zpSumHsOAVhFilFUAnB dZE4sMEF5iqmEbWSKWvZKYC0gko7R/3KU+tCeQQPgqMlCYbrsq/yp5uwIQbISsSSWlwKiS44 L/LqxRi2aDSGo5uPjFBBs1fajo/Q6jY02ZBsm5FDSWr3+5R0wWE4zLm52zRADT6c9t/daKUa BdrW5m9/TQy9bTziEaCq8+PYTiiaZI54pmUtbB/xd7PEf5fQLhjvl2JnoBZQybvSGvTCZuvI JO2bYAwbNvyA3L8U1qlijtzQd2iWbTlZqWOnwzsQp5Z9YeB2zV2f/SHLWlLEgxqlbRZx/dkY gkSf5cwYRjprhkzcaulL1KR1tyoBX2mKT5XU+V3x+KnYbda1GwpMv/8z2EvBMJfraH/4QsWS ZcGgwuLj+6kfJVbWDPvF2Z1fhWW4zI+k3l9O+0yxOYm3R6OtkMTeWPuFqQheClPuNcyAkmXK HN9Bz8jRlOSuoHE5xalw7EY+yYO18YRy+BOt2Ly+4POeD/5ErL+so3b6mBzCLpu6700K4HoJ dGK8Y/TjiCKBoeFqRWLCWazX79TntwaSMq5aPxYwCc9PsgXpYdK6UwwT9ozYbtVB/t1zlhPQ SJjCT8OwCQZUYKZwTFEhf2zieOyfvi4epM/NhcJq9NH3stbVDR5MHp2mQ== IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:1E51S6gnCsLychdyE+mvAQssh3BQXucji2hC6mlwRA09TyX4rb HMoB1/73XJYVkqNk3I9ersBEDiexPhHPxOgLX5VI3KNGLbUQCTQ72Kg7GP/xTQXwXAssRd2a 1jf6UWMqyTMXFKyeDg7k2dG9YkqeP3lJxAaN2uqktQcQ== X-Talos-CUID: =?us-ascii?q?9a23=3A0yHG0mnSNkX1fWV8QoLSwz/2Y4XXOXv990n0Bkq?= =?us-ascii?q?1MFQzGZOSbU+R2ph41PM7zg=3D=3D?= X-Talos-MUID: =?us-ascii?q?9a23=3AWnO4sw7lshyVIhQA65wO2zZmxoxr762gDnI8nqw?= =?us-ascii?q?+mJm0aC0rHiq3hhqOF9o=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.16,348,1744063200"; d="scan'208,217";a="233464680" X-MGA-submission: =?us-ascii?q?MDFrL8UvKcaP39yc9FRnWNVD4ZfQ7NLXnJQfKQ?= =?us-ascii?q?Z3n6Or98m31Q/j5yltHSA7rSxvOyeDBgb2m8PsXZxbNGxJAynZrrsfUq?= =?us-ascii?q?0VlW0sAg1Mp6QcBIiGIcyCz58V5bneXiBM5mf7otNU2htMaQKuOzWtW0?= =?us-ascii?q?VZ6kbqzlNttbLXHhUvqKFYPA=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2025 11:36:28 +0200 Received: from TM.local (88-176-91-141.subs.proxad.net [88.176.91.141]) (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 2A440564E9A; Tue, 29 Jul 2025 11:36:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1753781787; bh=D3Om6AWgnav7iJZ8Qd+2byS/cGy7hPg3fnHRX0edjz8=; h=From:To:Subject:Date:Message-ID; b=CqJpD4UP/6Y9FbINVv1704NIhKh2jsfSh4IgJU4op+5bZu1qwsge2QAyjUh80WFWW wXHBoShp9RxmzaIVeo71jiOu6VcMhl1G64dvDWeyi6PkhY7Y2p8+7DxGvJENS1XEnF tLRLuw5WgV+QW5+GFvHzOk/eDwbYswowJtDKZExE= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 29 Jul 2025 11:36:26 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jul 29 11:36:27 2025 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.392631, queueID=92C9F564EA3 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: 19356 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgSnVseSAyMiB0byAyOSwNCjIwMjUuDQoNClRhYmxlIG9mIENvbnRlbnRzDQrilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0Kb3BhbSAyLjQu MQ0KbmV3IHRvb2xzIHRvIGtlZXAgeW91ciBwcm9qZWN0cyBjbGVhbiAoYWZ0ZXIgQUksIG9yIGp1 c3QgYWZ0ZXIgeW91cnNlbGYpDQpGaXJzdCBiZXRhIHJlbGVhc2UgZm9yIE9DYW1sIDUuNC4wDQpF bmNvZGluZyBTQVQgaW4gT0NhbWwgR0FEVHMNCk90aGVyIE9DYW1sIE5ld3MNCk9sZCBDV04NCg0K DQpvcGFtIDIuNC4xDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZl OiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1vcGFtLTItNC0xLzE3MDAyLzE+DQoN Cg0KS2F0ZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgA0KDQogIEhpIGV2ZXJ5b25lLA0KDQogIEZvbGxvd2luZyB1cCB0aGUgcmVncmVzc2lvbiBb cmVwb3J0ZWQgYSBjb3VwbGUgb2YgZGF5cyBhZ29dIGFmZmVjdGluZw0KICBzb21lIHVzZXJzIG9m IGBwaW4tZGVwZW5kcycsIHdlIGFyZSByZWxlYXNpbmcgMi40LjEuDQoNCiAgWW91IGNhbiByZWFk IG91ciBbYmxvZyBwb3N0XSBmb3IgcmVsZXZhbnQgbGlua3MgYW5kIGRldGFpbHMuDQoNCg0KW3Jl cG9ydGVkIGEgY291cGxlIG9mIGRheXMgYWdvXQ0KPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9hbm4tb3BhbS0yLTQtMC1pcy1vdXQvMTY5ODkvMz4NCg0KW2Jsb2cgcG9zdF0gPGh0dHBzOi8v b3BhbS5vY2FtbC5vcmcvYmxvZy9vcGFtLTItNC0xLz4NCg0KVHJ5IGl0IQ0K4pWM4pWM4pWM4pWM 4pWM4pWM4pWMDQoNCiAgVGhlIHVwZ3JhZGUgaW5zdHJ1Y3Rpb25zIGFyZSB1bmNoYW5nZWQ6DQoN CiAgRm9yIFVuaXggc3lzdGVtcw0KICDilIzilIDilIDilIDilIANCiAg4pSCIGJhc2ggLWMgInNo IDwoY3VybCAtZnNTTCBodHRwczovL29wYW0ub2NhbWwub3JnL2luc3RhbGwuc2gpIC0tdmVyc2lv biAyLjQuMSINCiAg4pSU4pSA4pSA4pSA4pSADQogIG9yIGZyb20gUG93ZXJTaGVsbCBmb3IgV2lu ZG93cyBzeXN0ZW1zDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgSW52b2tlLUV4cHJlc3Npb24g IiYgeyAkKEludm9rZS1SZXN0TWV0aG9kIGh0dHBzOi8vb3BhbS5vY2FtbC5vcmcvaW5zdGFsbC5w czEpIH0gLVZlcnNpb24gMi40LjEiDQogIOKUlOKUgOKUgOKUgOKUgA0KICBQbGVhc2UgcmVwb3J0 IGFueSBpc3N1ZXMgdG8gdGhlIFtidWctdHJhY2tlcl0uDQoNCiAgSGFwcHkgaGFja2luZywgPD4g PD4gVGhlIG9wYW0gdGVhbSA8PiA8PiA6Y2FtZWw6DQoNCg0KW2J1Zy10cmFja2VyXSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29wYW0vaXNzdWVzPg0KDQoNCm5ldyB0b29scyB0byBrZWVwIHlv dXIgcHJvamVjdHMgY2xlYW4gKGFmdGVyIEFJLCBvciBqdXN0IGFmdGVyIHlvdXJzZWxmKQ0K4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tbmV3LXRvb2xzLXRvLWtlZXAteW91 ci1wcm9qZWN0cy1jbGVhbi1hZnRlci1haS1vci1qdXN0LWFmdGVyLXlvdXJzZWxmLzE3MDA0LzE+ DQoNCg0KVGhvbWFzIEdhemFnbmFpcmUgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIANCg0KICBIaSBhbGwsDQoNCiAgSeKAmXZlIGJlZW4gZXhwZXJpbWVudGluZyB3aXRoIEFJIGNv ZGUgYXNzaXN0YW50cyBsYXRlbHkuIFRoZXnigJlyZQ0KICBzdXJwcmlzaW5nbHkgZ29vZCBhdCBn ZW5lcmF0aW5nIG5ldyBjb2RlIGJ1dCBpdCdzIG5vdCB2ZXJ5IGdvb2QgYXQNCiAgcmVtZW1iZXJp bmcgdGhpbmdzOiBpdCdzIGxpa2UgaGF2aW5nIGEgc3RlYWR5IHN0cmVhbSBvZiBnb29kIGludGVy bnMNCiAgc3BlbmRpbmcgYSBmZXcgbW9udGhzIG9uIGEgcHJvamVjdCB0byBleHBhbmQgaXQgaW4g b25lIGRpcmVjdGlvbiBhbmQNCiAgdGhlbiBqdXN0IGRpc2FwcGVhcmluZy4gVGhleSBwcm9kdWNl IGEgbG90IG9mIGNvZGUgcXVpY2tseSwgYnV0IHRoYXQNCiAgYWxzbyBtZWFucyB0aGV5IGxlYXZl IGEgbG90IGJlaGluZDogdW51c2VkIGRlZmluaXRpb25zLCBpbmNvbnNpc3RlbnQNCiAgc3R5bGUs IGFuZCBoYWxmLWZpbmlzaGVkIHJlZmFjdG9yaW5ncy4NCg0KICBTaW5jZSBJIGNvdWxkbuKAmXQg a2VlcCB1cCB3aXRoIHJldmlld2luZyBjb2RlIGF0IHRoZSBzcGVlZCB0aGVzZSBBSQ0KICBhc3Np c3RhbnRzIGdlbmVyYXRlIGl0LCBJIGVuZGVkIHVwIHdyaXRpbmcgKHdpdGggdGhlaXIgaGVscCkg YSBjb3VwbGUNCiAgb2YgdG9vbHMgdG8gY2xlYW4gdGhpbmdzIHVwLg0KDQogIOKAoiBbYHBydW5l J106IHJlbW92ZXMgdG9wLWxldmVsIGRlZmluaXRpb25zICh2YWx1ZXMsIHR5cGVzLA0KICAgIGNv bnN0cnVjdG9ycywgZXRjLikgdGhhdCBhcmUgZXhwb3NlZCBpbiBgLm1saScgZmlsZXMgYnV0IHVu dXNlZA0KICAgIGVsc2V3aGVyZSBpbiB0aGUgY29kZWJhc2UuIEl0IHJlbGllcyBvbiBgbWVybGlu IG9jY3VycmVuY2VzJyB0byBmaW5kDQogICAgdW51c2VkIGlkZW50aWZpZXJzIGFuZCBwYXJzZXMg Y29tcGlsZXIgd2FybmluZ3MgdG8gY2xlYW4gdXAgYW55DQogICAgYnJlYWthZ2UgKHNlZSBbd2Fy bmluZy5tbGldIGZvciB0aGUgZnVsbCBsaXN0IG9mIGhhbmRsZWQgY2FzZXMpLg0KDQogIOKAoiBb YG1lcmxpbnQnXTogcnVucyBhIHNldCBvZiBzbWFsbCBzdGF0aWMgY2hlY2tzIHVzaW5nIE1lcmxp biwNCiAgICBgcHB4bGliJywgYW5kIHNvbWUgYmFzaWMgRHVuZSBmaWxlIHBhcnNpbmcuIEl0IGxv b2tzIGZvciB0aGluZ3MgbGlrZQ0KICAgIGNvZGUgY29tcGxleGl0eSwgZG9jdW1lbnRhdGlvbiBz dHlsZSwgdGVzdCBvcmdhbmlzYXRpb24sIGV0Yy4gVGhpcw0KICAgIGlzIGFsbCB2ZXJ5IHNwZWNp ZmljIHRvIG15IG93biBzdHlsZSBvZiB3cml0aW5nIE9DYW1sIGNvZGUgYnV0IGNhbg0KICAgIGJl IG1hZGUgY29uZmlndXJhYmxlIChhIGJpdCkuIFNlZSBbaGVyZV0gZm9yIHRoZSBmdWxsIGxpc3Qg b2YgcnVsZXMNCiAgICAoc3VnZ2VzdGlvbnMgd2VsY29tZSB0byBhZGQvY2hhbmdlIHNvbWUgb2Yg dGhlbSkuDQoNCiAgSSBvcmlnaW5hbGx5IHdyb3RlIHRoZXNlIHRvIGRlYWwgd2l0aCBBSS1nZW5l cmF0ZWQgY29kZSwgYnV0IHRoZXnigJl2ZQ0KICBiZWVuIHVzZWZ1bCBvbiBtb3JlIGNvbnZlbnRp b25hbCBPQ2FtbCBwcm9qZWN0cyB0b28sIGVzcGVjaWFsbHkgb2xkZXINCiAgb25lcyBvciBvbmVz IHdpdGggbWFueSBjb250cmlidXRvcnMgb3IgdGhlIG9uZXMgdGhhdCBJIHdyb3RlIGEgbG9uZw0K ICB0aW1lIGFnby4NCg0KICBCb3RoIGFyZSBzdGlsbCBldm9sdmluZyBidXQgdGhleeKAmXZlIG1h ZGUgbXkgd29ya2Zsb3cgYSBiaXQgc21vb3RoZXINCiAgYWxyZWFkeS4gRmVlZGJhY2sgYW5kIHN1 Z2dlc3Rpb25zIHdlbGNvbWUuIEknbSBzdGlsbCB1bmRlY2lkZWQgaWYgSQ0KICBzaG91bGQgcHVi bGlzaCB0aG9zZSB0byBgb3BhbScgb3Igbm90Lg0KDQogIFRob21hcw0KDQoNCltgcHJ1bmUnXSA8 aHR0cHM6Ly9naXRodWIuY29tL3NhbW9odC9wcnVuZT4NCg0KW3dhcm5pbmcubWxpXQ0KPGh0dHBz Oi8vZ2l0aHViLmNvbS9zYW1vaHQvcHJ1bmUvYmxvYi9tYWluL2xpYi93YXJuaW5nLm1saT4NCg0K W2BtZXJsaW50J10gPGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1vaHQvbWVybGludD4NCg0KW2hlcmVd IDxodHRwczovL3NhbW9odC5naXRodWIuaW8vbWVybGludC8+DQoNCg0KRmlyc3QgYmV0YSByZWxl YXNlIGZvciBPQ2FtbCA1LjQuMA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9m aXJzdC1iZXRhLXJlbGVhc2UtZm9yLW9jYW1sLTUtNC0wLzE3MDA5LzE+DQoNCg0Kb2N0YWNocm9u IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSADQoNCiAgVHdvIG1vbnRocyBhZnRlciB0aGUgcmVsZWFzZSBvZiB0aGUgZmly c3QgYWxwaGEgZm9yIE9DYW1sIDUuNC4wLCB0aGUNCiAgcmVsZWFzZSBvZiBPQ2FtbCA1LjQuMCBp cyBkcmF3aW5nIG5lYXIuDQoNCiAgVGhlIGludGVybmFsIEFQSSBvZiB0aGUgY29tcGlsZXIgbGli cmFyaWVzIGhhcyBiZWVuIGZyb3plbiwgYW5kIG1vc3QNCiAgY29yZSBkZXZlbG9wZXIgdG9vbHMg c3VwcG9ydCAob3Igd2lsbCBzdXBwb3J0IHNvb24pIHRoZSBuZXcgdmVyc2lvbiBvZg0KICB0aGUg Y29tcGlsZXIuDQoNCiAgV2UgaGF2ZSB0aHVzIHJlbGVhc2VkIGEgZmlyc3QgYmV0YSB2ZXJzaW9u IG9mIE9DYW1sIDUuNC4wIHRvIGhlbHAgeW91DQogIHVwZGF0ZSB5b3VyIHNvZnR3YXJlcyBhbmQg bGlicmFyaWVzIGFoZWFkIG9mIHRoZSByZWxlYXNlIChzZWUgYmVsb3cNCiAgZm9yIHRoZSBpbnN0 YWxsYXRpb24gaW5zdHJ1Y3Rpb25zKSBbXjFdLg0KDQogIENvbXBhcmVkIHRvIHRoZSBmaXJzdCBh bHBoYSByZWxlYXNlLCB0aGlzIGJldGEgcmVsZWFzZSBicmluZ3MgdHdvDQogIG5vdGFibGUgY2hh bmdlcy4gRmlyc3QsIHRoaXMgYmV0YSBwYXJ0aWFsbHkgcmV2ZXJ0cyB0aGUgY2hhbmdlcyBvZg0K ICBzeW1ib2wgbmFtZXMgaW4gZXhlY3V0YWJsZSAoaW4gb3JkZXIgdG8ga2VlcCBjdXJyZW50IHZl cnNpb24gb2YgYHBlcmYnDQogIHdvcmtpbmcgd2l0aCBPQ2FtbCBleGVjdXRhYmxlKS4gU2Vjb25k LCB0aGlzIGJldGEgZml4ZXMgYSBzaWduaWZpY2FudA0KICBwZXJmb3JtYW5jZSBpc3N1ZSBvbiBB cHBsZSBTaWxpY29uIG1hY09TLg0KDQogIEJleW9uZCB0aGVzZSB0d28gY2hhbmdlcywgdGhpcyBm aXJzdCBiZXRhIHJlbGVhc2UgY29udGFpbnMgYSBkb3plbiBvZg0KICBzbWFsbCBidWcgZml4ZXMg KGZyb20gdGhlIHJ1bnRpbWUgdG8gdGhlIGVycm9yIG1lc3NhZ2VzKSB3aGljaCBpcw0KICB1c3Vh bCBmb3IgdGhlIHN0YWdlIG9mIHRoZSByZWxlYXNlLiBXZSBhcmUgZXhwZWN0aW5nIHRoZSByZWxl YXNlDQogIGNhbmRpZGF0ZSB0byBmb2xsb3cgdGhpcyBiZXRhIHJlbGVhc2Ugc29vbiBpbiB0aGUg YmVnaW5uaW5nIG9mIEF1Z3VzdC4NCg0KICBUaGUgcHJvZ3Jlc3NlcyBvbiBzdGFiaWxpc2luZyB0 aGUgZWNvc3lzdGVtIGFyZSB0cmFja2VkIG9uIHRoZSBbb3BhbQ0KICByZWFkaW5lc3MgZm9yIDUu NC4wIG1ldGEtaXNzdWVdLg0KDQogIFRoZSBmdWxsIHJlbGVhc2UgaXMgZXhwZWN0ZWQgaW4gdGhl IG1pZGRsZSBvZiBBdWd1c3QsIHNlZSB0aGUgW25ldw0KICBwcm9zcGVjdGl2ZSBjYWxlbmRhcl0g Zm9yIG1vcmUgaW5mb3JtYXRpb24uDQoNCiAgSWYgeW91IGZpbmQgYW55IGJ1Z3MsIHBsZWFzZSBy ZXBvcnQgdGhlbSBvbiBbT0NhbWwncyBpc3N1ZSB0cmFja2VyXS4NCg0KICBJZiB5b3UgYXJlIGlu dGVyZXN0ZWQgaW4gZnVsbCBsaXN0IG9mIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMgb2YgdGhlDQog IG5ldyBPQ2FtbCB2ZXJzaW9uLCB0aGUgdXBkYXRlZCBjaGFuZ2UgbG9nIGZvciBPQ2FtbCA1LjQu MCBpcyBhdmFpbGFibGUNCiAgW29uIEdpdEh1Yl0uDQoNCiAgSGFwcHkgaGFja2luZywgRmxvcmlh biBBbmdlbGV0dGkgZm9yIHRoZSBPQ2FtbCB0ZWFtDQoNCg0KW29wYW0gcmVhZGluZXNzIGZvciA1 LjQuMCBtZXRhLWlzc3VlXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtLXJlcG9zaXRv cnkvaXNzdWVzLzI3OTE2Pg0KDQpbbmV3IHByb3NwZWN0aXZlIGNhbGVuZGFyXQ0KPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iL3RydW5rL3JlbGVhc2UtaW5mby9jYWxlbmRhci5t ZD4NCg0KW09DYW1sJ3MgaXNzdWUgdHJhY2tlcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9v Y2FtbC9pc3N1ZXM+DQoNCltvbiBHaXRIdWJdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2Nh bWwvYmxvYi81LjQvQ2hhbmdlcz4NCg0KSW5zdGFsbGF0aW9uIEluc3RydWN0aW9ucw0K4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWMDQoNCiAgVGhlIGJhc2UgY29tcGlsZXIgY2FuIGJlIGluc3RhbGxlZCBhcyBh biBvcGFtIHN3aXRjaCB3aXRoIHRoZQ0KICBmb2xsb3dpbmcgY29tbWFuZHMgb24gb3BhbSAyLjEg YW5kIGxhdGVyOg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3BhbSB1cGRhdGUNCiAg4pSC IG9wYW0gc3dpdGNoIGNyZWF0ZSA1LjQuMH5iZXRhMQ0KICDilJTilIDilIDilIDilIANCg0KICBU aGUgc291cmNlIGNvZGUgZm9yIHRoZSBiZXRhIGlzIGFsc28gYXZhaWxhYmxlIGF0IHRoZXNlIGFk ZHJlc3NlczoNCg0KICDigKIgW0dpdEh1Yl0NCiAg4oCiIFtPQ2FtbCBhcmNoaXZlcyBhdCBJbnJp YV0NCg0KDQpbR2l0SHViXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2FyY2hpdmUv NS40LjAtYmV0YTEudGFyLmd6Pg0KDQpbT0NhbWwgYXJjaGl2ZXMgYXQgSW5yaWFdDQo8aHR0cHM6 Ly9jYW1sLmlucmlhLmZyL3B1Yi9kaXN0cmliL29jYW1sLTUuNC9vY2FtbC01LjQuMH5iZXRhMS50 YXIuZ3o+DQoNCuKXiiBGaW5lLVR1bmVkIENvbXBpbGVyIENvbmZpZ3VyYXRpb24NCg0KICBJZiB5 b3Ugd2FudCB0byB0d2VhayB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgY29tcGlsZXIsIHlvdSBj YW4gc3dpdGNoDQogIHRvIHRoZSBvcHRpb24gdmFyaWFudCB3aXRoOg0KDQogIOKUjOKUgOKUgOKU gOKUgA0KICDilIIgb3BhbSB1cGRhdGUNCiAg4pSCIG9wYW0gc3dpdGNoIGNyZWF0ZSA8c3dpdGNo X25hbWU+IG9jYW1sLXZhcmlhbnRzLjUuNC4wfmJldGExK29wdGlvbnMgPG9wdGlvbl9saXN0Pg0K ICDilJTilIDilIDilIDilIANCg0KICB3aGVyZSBgb3B0aW9uX2xpc3QnIGlzIGEgc3BhY2Ugc2Vw YXJhdGVkIGxpc3Qgb2YgYG9jYW1sLW9wdGlvbi0qJw0KICBwYWNrYWdlcy4gRm9yIGluc3RhbmNl LCBmb3IgYSBmbGFtYmRhIGFuZCBuby1mbGF0LWZsb2F0LWFycmF5IHN3aXRjaDoNCg0KICDilIzi lIDilIDilIDilIANCiAg4pSCIG9wYW0gc3dpdGNoIGNyZWF0ZSA1LjQuMH5iZXRhMStmbGFtYmRh K25mZmEgb2NhbWwtdmFyaWFudHMuNS40LjB+YmV0YTErb3B0aW9ucyBvY2FtbC1vcHRpb24tZmxh bWJkYSBvY2FtbC1vcHRpb24tbm8tZmxhdC1mbG9hdC1hcnJheQ0KICDilJTilIDilIDilIDilIAN Cg0KICBBbGwgYXZhaWxhYmxlIG9wdGlvbnMgY2FuIGJlIGxpc3RlZCB3aXRoIGBvcGFtIHNlYXJj aCBvY2FtbC1vcHRpb24nLg0KDQoNCkNoYW5nZXMgc2luY2UgdGhlIGZpcnN0IGFscGhhDQrilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0K4peKIENvZGUgZ2VuZXJhdGlvbiBmaXhlcw0K DQogIOKAoiAoKmJyZWFraW5nIGNoYW5nZSopIFsjMTMwNTBdLCBbIzE0MTA0XSwgK1sjMTQxNDNd OiBVc2UgJyQnIGluc3RlYWQNCiAgICBvZiAnLicgdG8gc2VwYXJhdGUgbW9kdWxlIG5hbWVzIGlu IHN5bWJvbCBuYW1lcyBvbiBtYWNPUyBhbmQgV2luZG93cw0KICAgIChpbmNsdWRpbmcgdGhlIEN5 Z3dpbiBiYWNrZW5kKS4gIFRoaXMgY2hhbmdlcyBtYW5nbGluZyBvZiBPQ2FtbA0KICAgIGlkZW50 aWZpZXJzIG9uIHRob3NlIG9wZXJhdGluZyBzeXN0ZW1zIGZyb20gYGNhbWxNb2R1bGUubmFtZV9O Tk4nIHRvDQogICAgYGNhbWxNb2R1bGUkbmFtZV9OTk4nLiBBZGRpdGlvbmFsbHkgaXQgY2hhbmdl cyB0aGUgZW5jb2Rpbmcgb2YNCiAgICBzcGVjaWFsIGNoYXJhY3RlcnMgZnJvbSAkeHggKHR3byBo ZXggZGlnaXRzKSB0byAkJHh4ICh0d28gZG9sbGFyDQogICAgc2lnbnMgZm9sbG93ZWQgYnkgdHdv IGhleCBkaWdpdHMpLiAgKFRpbSBNY0dpbGNocmlzdCwgd2l0aA0KICAgIGNvbnRyaWJ1dGlvbnMg ZnJvbSBYYXZpZXIgTGVyb3ksIHJldmlld2VkIGJ5IFhhdmllciBMZXJveSwgTWlvZA0KICAgIFZh bGxhdCwgR2FicmllbCBTY2hlcmVyLCBOaWNrIEJhcm5lcyBhbmQgSHVnbyBIZXV6YXJkKQ0KDQog IOKAoiBbIzE0MDg4XSwgWyMxNDA5MV06IGZpeCBub24tZGV0ZXJtaW5pc3RpYyBjb2RlIGdlbmVy YXRpb24gaW4NCiAgICBtYXRjaGluZy5tbCAoYmFja3BvcnQgb2YgcmVzY3JpcHQtbGFuZy9yZXNj cmlwdFsjNzU1N10pIChDaHJpc3RpYW5vDQogICAgQ2FsZ2FubywgcmV2aWV3IGJ5IEdhYnJpZWwg U2NoZXJlciBhbmQgVmluY2VudCBMYXZpcm9uKQ0KDQoNCiAgWyMxMzA1MF0gPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTMwNTA+DQoNCiAgWyMxNDEwNF0gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQxMDQ+DQoNCiAgWyMxNDE0M10gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQxNDM+DQoNCiAgWyMxNDA4OF0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQwODg+DQoNCiAgWyMxNDA5MV0g PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQwOTE+DQoNCiAgWyM3NTU3 XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy83NTU3Pg0KDQoNCuKXiiBQ ZXJmb3JtYW5jZSBmaXgNCg0KICDigKIgWyMxMzI2Ml0sIFsjMTQwNzRdOiBmaXggcGVyZm9ybWFu Y2UgaXNzdWUgb24gQXBwbGUgU2lsaWNvbiBtYWNPUyBieQ0KICAgIGVtaXR0aW5nIGBzdGxyJyBp bnN0ZWFkIG9mIGBkbWIgaXNobGQ7IHN0cicuICAoS0MgU2l2YXJhbWFrcmlzaG5hbiwNCiAgICBy ZXBvcnQgYnkgRnJhbsOnb2lzIFBvdHRpZXIsIGFuYWx5c2lzIGJ5IEZyw6lkw6lyaWMgQm91ciwg WGF2aWVyIExlcm95LA0KICAgIE1pb2QgVmFsbGF0LCBHYWJyaWVsIFNjaGVyZXIgYW5kIFN0ZXBo ZW4gRG9sYW4sIHJldmlldyBieSBNaW9kDQogICAgVmFsbGF0LCBWaW5jZW50IExhdmlyb24gYW5k IFhhdmllciBMZXJveSkNCg0KDQogIFsjMTMyNjJdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwv b2NhbWwvaXNzdWVzLzEzMjYyPg0KDQogIFsjMTQwNzRdIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvb2NhbWwvaXNzdWVzLzE0MDc0Pg0KDQoNCuKXiiBTdGFuZGFyZCBsaWJyYXJ5IGZpeDoNCg0K ICDigKIgKCpicmVha2luZyBjaGFuZ2UqKSBbIzE0MTI0XTogRG8gbm90IHJhaXNlIEludmFsaWRf YXJndW1lbnQgb24NCiAgICBuZWdhdGl2ZSBMaXN0Lntkcm9wLHRha2V9LiAgKERhbmllbCBCw7xu emxpLCByZXZpZXcgYnkgR2FicmllbA0KICAgIFNjaGVyZXIsIE5pY29sw6FzIE9qZWRhIELDpHIp DQoNCg0KICBbIzE0MTI0XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8x NDEyND4NCg0KDQril4ogUnVudGltZSBmaXgNCg0KICDigKIgWyMxNDA1N106IERvbid0IHVwZGF0 ZSBtZW1wcm9mIHRvbyBlYXJseSBhdCB0aGUgZW5kIG9mIGEgbWlub3IgR0MuDQogICAgKE5pY2sg QmFybmVzLCByZXZpZXcgYnkgRGFtaWVuIERvbGlnZXopLg0KDQogIOKAoiBbIzEzNTg2XSwgWyMx NDA5M106IEZpeCBjbG9zaW5nIGFuIG91dF9jaGFubmVsIGR1cmluZyBmbHVzaCAoU3RlcGhlbg0K ICAgIERvbGFuLCByZXBvcnQgYnkgSmFuIE1pZHRnYWFyZCwgaW52ZXN0aWdhdGlvbiBieSBOaWNr IFJvYmVydHMsDQogICAgcmV2aWV3IGJ5IEFudG9uaW4gRMOpY2ltbyBhbmQgTWlvZCBWYWxsYXQp DQoNCg0KICBbIzE0MDU3XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8x NDA1Nz4NCg0KICBbIzEzNTg2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vl cy8xMzU4Nj4NCg0KICBbIzE0MDkzXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lz c3Vlcy8xNDA5Mz4NCg0KDQril4ogRXJyb3IgbWVzc2FnZSBmaXhlcw0KDQogIOKAoiBbIzEzOTU2 XSBGaXggYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gWyMxMzMwOF0gdHJpZ2dlcmluZyB3cm9u Zw0KICAgIHVudXNlZCB3YXJuaW5ncy4gIChVbHlzc2UgR8OpcmFyZCwgcmV2aWV3IGJ5IEZsb3Jp YW4gQW5nZWxldHRpKQ0KDQogIOKAoiBbIzE0MDcwXTogYWxzbyBwb2ludCB0byBsYWJlbCBtaXNt YXRjaGVzIGluIGVycm9yIG1lc3NhZ2VzIGZvcg0KICAgIGxhYmVsbGVkIHR1cGxlcyAoRmxvcmlh biBBbmdlbGV0dGksIHJldmlldyBieSBHYWJyaWVsIFNjaGVyZXIpDQoNCiAg4oCiIFsjMTQxMzVd OiBGaXggYSByYXJlIGludGVybmFsIHR5cGVjaGVja2VyIGVycm9yIHdoZW4gY29tYmluaW5nDQog ICAgcmVjdXJzaXZlIG1vZHVsZXMsIHBvbHltb3JwaGljIGZpZWxkcyBvciBtZXRob2RzLCBhbmQg Y29uc3RyYWluZWQNCiAgICB0eXBlIHBhcmFtZXRlcnMuICAoRmxvcmlhbiBBbmdlbGV0dGksIHJl dmlldyBieSBHYWJyaWVsIFNjaGVyZXIpDQoNCg0KICBbIzEzOTU2XSA8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sL29jYW1sL2lzc3Vlcy8xMzk1Nj4NCg0KICBbIzEzMzA4XSA8aHR0cHM6Ly9naXRo dWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xMzMwOD4NCg0KICBbIzE0MDcwXSA8aHR0cHM6Ly9n aXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xNDA3MD4NCg0KICBbIzE0MTM1XSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xNDEzNT4NCg0KDQril4ogQ29tcGlsZXJs aWJzIGZpeGVzDQoNCiAg4oCiIFsjMTQxMDVdOiBGaXggYSBsb29wIGluIFBwcmludGFzdCB0aGF0 IGNvdWxkIHJlc3VsdCBpbiBhIGhhbmcgd2hlbg0KICAgIHByaW50aW5nIGNvbnN0cnVjdG9yIGAo OjopJyBpbiBpc29sYXRpb24uICAoVWx5c3NlIEfDqXJhcmQsIHJldmlldyBieQ0KICAgIE5pY29s w6FzIE9qZWRhIELDpHIgYW5kIEZsb3JpYW4gQW5nZWxldHRpKQ0KDQogIOKAoiBbIzE0MTA4XTog dG9wbGV2ZWwsIGZpeCBhIHR5cG8gaW4gZGlyZWN0aXZlIHR5cGUgbWlzbWF0Y2ggKEZsb3JpYW4N CiAgICBBbmdlbGV0dGksIHJldmlldyBieSBHYWJyaWVsIFNjaGVyZXIpDQoNCiAg4oCiIFsjMTQx MDFdLCBbIzE0MTM5XTogZGVmaW5lIGF0b21pYyBoZWxwZXIgdHlwZXMgaW5zaWRlIGBjYW1sL21p c2MuaCcNCiAgICB0byBpbXByb3ZlIGhlYWRlciBjb21wYXRpYmlsaXR5IHdpdGggQysrIChGbG9y aWFuIEFuZ2VsZXR0aSwgcmVwb3J0DQogICAgYnkgS2F0ZSBEZXBsYWl4LCByZXZpZXcgYnkgR2Fi cmllbCBTY2hlcmVyKQ0KDQoNCiAgWyMxNDEwNV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9v Y2FtbC9pc3N1ZXMvMTQxMDU+DQoNCiAgWyMxNDEwOF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2Ft bC9vY2FtbC9pc3N1ZXMvMTQxMDg+DQoNCiAgWyMxNDEwMV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC9vY2FtbC9pc3N1ZXMvMTQxMDE+DQoNCiAgWyMxNDEzOV0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQxMzk+DQoNCg0K4peKIE9DYW1sZG9jIGZpeA0KDQogIOKA oiBbIzEzODk2XSwgWyMxNDA5OF06IG9jYW1sZG9jLCBkbyBub3Qgd3JhcCBtb2R1bGUgZGVzY3Jp cHRpb24gaW4gYQ0KICAgIHBhcmFncmFwaCB0YWcgaW5zaWRlIHRoZSB0YWJsZSBvZiBtb2R1bGVz IChGbG9yaWFuIEFuZ2VsZXR0aSwgcmVwb3J0DQogICAgYnkgSm9obiBXaGl0aW5ndG9uLCByZXZp ZXcgYnkgR2FicmllbCBTY2hlcmVyKQ0KDQogIFteMV06TW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd2hvbGUgcmVsZWFzZSBwcm9jZXNzIGlzIG5vdyBhdmFpbGFibGUNCiAgaW4gdGhlIFtjb21w aWxlciByZXBvc2l0b3J5XQ0KDQoNCiAgWyMxMzg5Nl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2Ft bC9vY2FtbC9pc3N1ZXMvMTM4OTY+DQoNCiAgWyMxNDA5OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC9vY2FtbC9pc3N1ZXMvMTQwOTg+DQoNCiAgW2NvbXBpbGVyIHJlcG9zaXRvcnldDQogIDxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi90cnVuay9yZWxlYXNlLWluZm8vaW50 cm9kdWN0aW9uLm1kPg0KDQoNCkVuY29kaW5nIFNBVCBpbiBPQ2FtbCBHQURUcw0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5v cmcvdC9lbmNvZGluZy1zYXQtaW4tb2NhbWwtZ2FkdHMvMTcwMjAvMT4NCg0KDQpOYXRoYW4gRmFy bG93IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSSBoYWQgc29tZSBmdW4gYW5kIHdyb3Rl IGEgcG9zdCBhYm91dCBhIFNBVCAtPiBHQURUIGVuY29kaW5nLiBIb3BlIHlvdQ0KICBlbmpveSEN Cg0KICA8aHR0cHM6Ly9mYXJsb3cuZGV2LzIwMjUvMDcvMjcvZW5jb2Rpbmctc2F0LWluLW9jYW1s LWdhZHRzPg0KDQoNCk90aGVyIE9DYW1sIE5ld3MNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQpGcm9tIHRoZSBvY2FtbC5vcmcgYmxvZw0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSADQoNCiAgSGVyZSBhcmUgbGlua3MgZnJvbSBtYW55IE9DYW1sIGJsb2dzIGFnZ3JlZ2F0 ZWQgYXQgW3RoZSBvY2FtbC5vcmcNCiAgYmxvZ10uDQoNCiAg4oCiIFtBZGQgWW91ciBPd24gUmVj aXBlcyB0byB0aGUgT0NhbWwgQ29va2Jvb2shXQ0KICDigKIgW1RoZSBTYWdhIG9mIE11bHRpY29y ZSBPQ2FtbF0NCiAg4oCiIFtvcGFtIDIuNCByZWxlYXNlXQ0KDQoNClt0aGUgb2NhbWwub3JnIGJs b2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4NCg0KW0FkZCBZb3VyIE93biBSZWNpcGVzIHRv IHRoZSBPQ2FtbCBDb29rYm9vayFdDQo8aHR0cHM6Ly90YXJpZGVzLmNvbS9ibG9nLzIwMjUtMDct MjUtYWRkLXlvdXItb3duLXJlY2lwZXMtdG8tdGhlLW9jYW1sLWNvb2tib29rPg0KDQpbVGhlIFNh Z2Egb2YgTXVsdGljb3JlIE9DYW1sXQ0KPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoL1hH R1NQcGsxSUIwP3ZlcnNpb249Mz4NCg0KW29wYW0gMi40IHJlbGVhc2VdDQo8aHR0cHM6Ly9vY2Ft bHByby5jb20vYmxvZy8yMDI1XzA3XzIzX29wYW1fMl80X3JlbGVhc2U+DQoNCg0KT2xkIENXTg0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5 b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9y IGdvIHRha2UgYSBsb29rIGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUN CiAgYXJjaGl2ZXNdLg0KDQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3 ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vic2NyaWJlDQogIHRvIHRoZSBbY2FtbC1saXN0XS4NCg0K ICBbQWxhbiBTY2htaXR0XQ0KDQoNCltzZW5kIG1lIGEgbWVzc2FnZV0gPG1haWx0bzphbGFuLnNj aG1pdHRAcG9seXRlY2huaXF1ZS5vcmc+DQoNClt0aGUgYXJjaGl2ZV0gPGh0dHBzOi8vYWxhbi5w ZXRpdGVwb21tZS5uZXQvY3duLz4NCg0KW1JTUyBmZWVkIG9mIHRoZSBhcmNoaXZlc10gPGh0dHBz Oi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duL2N3bi5yc3M+DQoNCltjYW1sLWxpc3RdIDxodHRw czovL3N5bXBhLmlucmlhLmZyL3N5bXBhL2luZm8vY2FtbC1saXN0Pg0KDQpbQWxhbiBTY2htaXR0 XSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC8+DQoNCg== --=-=-= 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 July 22 to 29, 2025.

opam 2.4.1

Kate announced

Hi everyone,

Following up the regression reported a couple of days ago affecting some use= rs of pin-depends, we are releasing 2.4.1.

You can read our blog p= ost for relevant links and details.

Try it!

The upgrade instructions are unchanged:

For Unix systems

bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.=
4.1"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/insta=
ll.ps1) } -Version 2.4.1"

Please report any issues to the bug-tracker.

Happy hacking, <> <> The opam team <> <> :camel:

new tools to keep your projects clean (after AI, or just after= yourself)

Thomas Gazagnaire announced

Hi all,

I=E2=80=99ve been experimenting with AI code assistants lately. They=E2=80= =99re surprisingly good at generating new code but it's not very good at re= membering things: it's like having a steady stream of good interns spending= a few months on a project to expand it in one direction and then just disa= ppearing. They produce a lot of code quickly, but that also means they leav= e a lot behind: unused definitions, inconsistent style, and half-finished r= efactorings.

Since I couldn=E2=80=99t keep up with reviewing code at the speed these AI = assistants generate it, I ended up writing (with their help) a couple of to= ols to clean things up.

  • prune: rem= oves top-level definitions (values, types, constructors, etc.) that are exp= osed in .mli files but unused elsewhere in the codebase. It re= lies on merlin occurrences to find unused identifiers and pars= es compiler warnings to clean up any breakage (see warning.mli for the full = list of handled cases).
  • merlint:= runs a set of small static checks using Merlin, ppxlib, and s= ome basic Dune file parsing. It looks for things like code complexity, docu= mentation style, test organisation, etc. This is all very specific to my ow= n style of writing OCaml code but can be made configurable (a bit). See here for the full list of ru= les (suggestions welcome to add/change some of them).

I originally wrote these to deal with AI-generated code, but they=E2=80=99v= e been useful on more conventional OCaml projects too, especially older one= s or ones with many contributors or the ones that I wrote a long time ago.

Both are still evolving but they=E2=80=99ve made my workflow a bit smoother= already. Feedback and suggestions welcome. I'm still undecided if I should= publish those to opam or not.

Thomas

First beta release for OCaml 5.4.0

octachron announced

Two months after the release of the first alpha for OCaml 5.4.0, the releas= e of OCaml 5.4.0 is drawing near.

The internal API of the compiler libraries has been frozen, and most core d= eveloper tools support (or will support soon) the new version of the compil= er.

We have thus released a first beta version of OCaml 5.4.0 to help you updat= e your softwares and libraries ahead of the release (see below for the inst= allation instructions) [^1].

Compared to the first alpha release, this beta release brings two notable c= hanges. First, this beta partially reverts the changes of symbol names in e= xecutable (in order to keep current version of perf working wi= th OCaml executable). Second, this beta fixes a significant performance iss= ue on Apple Silicon macOS.

Beyond these two changes, this first beta release contains a dozen of=20 small bug fixes (from the runtime to the error messages) which is usual for the stage of the release. We are expecting the release candidate to follow= =20 this beta release soon in the beginning of August.

The progresses on stabilising the ecosystem are tracked on the opam readiness for 5.= 4.0 meta-issue.

The full release is expected in the middle of August, see the new prosp= ective calendar for more information.

If you find any bugs, please report them on OCaml's issue tracker.

If you are interested in full list of features and bug fixes of the new OCa= ml version, the updated change log for OCaml 5.4.0 is available on GitHub.

Happy hacking, Florian Angeletti for the OCaml team

Installation Instructions

The base compiler can be installed as an opam switch with the following com= mands on opam 2.1 and later:

opam update
opam switch create 5.4.0~beta1

The source code for the beta is also available at these addresses:

  • Fine-Tuned Compiler Configuration

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

    opam update
    opam switch create <switch_name> ocaml-variants.5.4.0~beta1+options &=
    lt;option_list>
    

    where option_list is a space separated list of ocaml-opt= ion-* packages. For instance, for a flambda and no-flat-float-array = switch:

    opam switch create 5.4.0~beta1+flambda+nffa ocaml-variants.5.4.0~beta1+opti=
    ons ocaml-option-flambda ocaml-option-no-flat-float-array
    

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

Changes since the first alpha

  • Code generation fixes
    • (breaking change) #13050, #14104, +#14= 143: Use '$' instead of '.' to separate module names in symbol names on macOS and Windows (including the Cygwin backend). This changes mangling of OCaml identifiers on those operating systems from camlModule.name_NNN to camlModule$name_NNN. Addi= tionally it changes the encoding of special characters from $xx (two hex digits) to $$xx (two dollar signs followed by two hex digits). (Tim McGilchrist, with contributions from Xavier Leroy, reviewed by Xavier Leroy, Miod Vallat, Gabriel Scherer, Nick Barnes and Hugo Heuzard)
    • #14088, #14091: fix non-de= terministic code generation in matching.ml (backport of rescript-lang/rescript#7557) (Christiano Calgano, review by Gabriel Scherer and Vincent Laviron)
  • Performance fix
    • #13262, #14074: fix perfor= mance issue on Apple Silicon macOS by emitting stlr instead of dmb ishld; str. (KC Sivaramakrishnan, report by Fran=C3=A7ois Pottier, analysis by Fr=C3=A9= d=C3=A9ric Bour, Xavier Leroy, Miod Vallat, Gabriel Scherer and Stephen Dolan, review by Miod Vallat, Vincent Laviron and Xavier Leroy)
  • Standard library fix:
    • (breaking change) #14124: Do not raise Invalid_argument on negative List.{drop,= take}. (Daniel B=C3=BCnzli, review by Gabriel Scherer, Nicol=C3=A1s Ojeda B=C3=A4r= )
  • Runtime fix
    • #14057: Don= 't update memprof too early at the end of a minor GC. (Nick Barnes, review by Damien Doligez).
    • #13586, #14093: Fix closin= g an out_channel during flush (Stephen Dolan, report by Jan Midtgaard, investigation by Nick Roberts, review by Antonin D=C3=A9cimo and Miod Vallat)
  • Error message fixes
    • #13956 Fix = a regression introduced in #13308 triggering wrong unused warnings. (Ulysse G=C3=A9rard, review by Florian Angeletti)
    • #14070: als= o point to label mismatches in error messages for labelled tuples (Florian Angeletti, review by Gabriel Scherer)
    • #14135: Fix= a rare internal typechecker error when combining recursive modules, polymorphic fields or methods, and constrained type parameters. (Florian Angeletti, review by Gabriel Scherer)
  • Compilerlibs fixes
    • #14105: Fix= a loop in Pprintast that could result in a hang when printing constructor (::) in isolation. (Ulysse G=C3=A9rard, review by Nicol=C3=A1s Ojeda B=C3=A4r and Florian Ange= letti)
    • #14108: top= level, fix a typo in directive type mismatch (Florian Angeletti, review by Gabriel Scherer)
    • #14101, #14139: define ato= mic helper types inside caml/misc.h to improve header compatibility with C++ (Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)
  • OCamldoc fix
    • #13896, #14098: ocamldoc, = do not wrap module description in a paragraph tag inside the table of modules (Florian Angeletti, report by John Whitington, review by Gabriel Scherer)

    [^1]:More information about the whole release process is now available in the compiler repository

Other OCaml News

From the ocaml.org blog

Old CWN

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

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

--=-=-=--