From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=Jk9URAPO; 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=JShYe5K7; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 0E143B80123 for ; Tue, 7 May 2024 08:30:29 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=MLxvwsvqicG+TPdR3Q/GqUNH5BBDBOxsg50BKoyth0Y=; b=Jk9URAPO41WjWP75sdTBRvb++s/vHSQLLBbdbEGWxmCcBuqtAzpIoDZ7 TI3zNr5YxG0QkLq+Hu5F+G/LkuBFsL+cu5fZhpM3WQ9/I0EK+x7jv52u+ aWMb54ISZF8M2QsMBDle5/wb1dWJu6wypBxB8M0qXZXhh8V0zj3Acn6C5 A=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.07,260,1708383600"; d="scan'208,217";a="164792632" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 07 May 2024 09:30:27 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id B0E89E0CD2; Tue, 7 May 2024 09:30:26 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 572F2E0035 for ; Tue, 7 May 2024 09:30:24 +0200 (CEST) IronPort-SDR: 6639d88e_3RoWMtI4nvOSPF/5Ym0NkcDsJwy/mPV5JyJnJnkUuhXgrgK DI7o0ACazM2xxTfpTj5m65biiICGID9ZEkcVX+Q== X-IPAS-Result: =?us-ascii?q?A0G2AQA91zlmlyIeaIFaFoJCgUFbKBkBYlczBwhIhFaDT?= =?us-ascii?q?44ZgRaQMIpxgWqBEQMYFiMUAQMBDS4BDgQBAgQBAQMBAgGEOUYCFogaAh8GA?= =?us-ascii?q?QQzBg4BAgQBAQEBAwIDAQEBAQEBCAEBBQEBAQIBAQIEBgECEAEBAQEBAQEBN?= =?us-ascii?q?wUQNYV0DYJKLiNrXgYBCAE2AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQIMAQcHIiwBIxoCAwYKEwEBJhIYIwMJCwEGAwIED?= =?us-ascii?q?QE1FwEJCRkBAYINWAGCZAMFDAaXNZs6eoEygQGCDAEBBoEIPgIBCwICAw8uA?= =?us-ascii?q?doEgWIJgUiIFBoBJEhpAoQlCYQ3Jw+BVUSBFTWBBm1KB2+CShcBAQEBXDslA?= =?us-ascii?q?QFNCQmDHIJphhImgWwBhVFWFQ+CXCdBgRc6MV0BEoEKWVsTgiIRgTBsBAEIC?= =?us-ascii?q?AoNCmgqW1kPWgF5gUCFNoFLSzMyAVUTFws+CRYCFgMbFAQwDwkLJgMqBjYCE?= =?us-ascii?q?gwGBgZZIBYJBCMDCAQDRAMgcREDBBoECwd1gUSBbQQTRAOBOIcnglODPYIgh?= =?us-ascii?q?CBLhHaBeA5ih14dQAMLbT01FBsooUQENQIrgkUOPgEBMBsOCSYFARMIDgEBI?= =?us-ascii?q?AI2BRYeDxQZDQUFBBUWDBMYLZJEJQMEshY0B4QWgVsGDIh9gSSVa4QFgVaLK?= =?us-ascii?q?JkxIphAIII0hx2BJQmBbB5LlUIEBIVJgXskgSsBHQwHMxowQw0aggwBMwlGH?= =?us-ascii?q?A9XkUNBKRc9gSYKgWs7gkGVfUE1AgEBNwIHAQoBAQMJhWIBAYM+gSoeAQE?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:NNlfO6/Ouw2clKT3V1Vuk+DlI+orL9Y04lQ7vn2ZKCYlEfBw8v rFoB1173HJYVoqNU3I+urhBEDjexLhHPdOiOF7AV7IZmbbUQWTQL1K3M/L/HnLGiH19OJRvJ 0QEZRWOZnXFlY/qc775WCDYrIdKTS8gcWVuds= X-Talos-CUID: 9a23:oRDPc2NBqaa9Yu5DUxhuqWU6AcIfKmSC0jT8PE2kNF5wcejA X-Talos-MUID: 9a23:TCuwawojfwzWHCTidwIezzY8BsZFwIuwM1wQvpNd/JmjFwx+HzjI2Q== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.07,260,1708383600"; d="scan'208,217";a="86530631" X-MGA-submission: =?us-ascii?q?MDGCAkdM0g6KhxuJmoD5A1AhJeitAgSEC4zd4V?= =?us-ascii?q?PED1knHwNJFeluOtkhmQZXakyVeJ1JDmp4Joh1atpifu+2V2a5O+U4ng?= =?us-ascii?q?RPeVcVkYOmiGQ1x+KZe2KDr8gi1aA/UBJZlfMx8Nie+e/7jE3JVQkMQn?= =?us-ascii?q?B+jX3xHAAGFZtns4K5GQf1gQ=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 May 2024 09:30:23 +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 AC0DD564695; Tue, 7 May 2024 09:30:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1715067020; bh=nrvI6qPMhBO/JSPEhx0D4ow++rvXs9J46DByaT6Mwlw=; h=From:To:Subject:Date:Message-ID; b=JShYe5K7rt6ROlQSx0J5t02ek5r/Nnn9suTCDcs/TC/riDm1Ik4as0HN6ttqJsnsN jrg5f/EBy/KMBPEntZfkynSMl6ik0RdX/qT5kByPf5ddXwZo3J8nCzLn7Nb9UPwvgD zYm7qzF/2LM4mPqTx3TPcvWWARUmxfaNRaPJW8Ps= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 07 May 2024 09:30:19 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue May 7 09:30:21 2024 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.462156, queueID=11235564697 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: 19123 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 ZWsgb2YgQXByaWwgMzAgdG8gTWF5DQowNywgMjAyNC4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpEZXBs b3lpbmcgT2NzaWdlbiBhcHBsaWNhdGlvbnMNCk9DYW1sIGxpbnRpbmcgdG9vbHMgYW5kIHRlY2hu aXF1ZXMNCmR1bmUgMy4xNQ0KYml0Z2VuZXJhdG9ycyB2MC4xLjANCmNoZWNrZWRfb2ludCB2MC4x LjANCkxpcXVpZHNvYXAgMi4yLjUgaXMgb3V0IQ0KT0NhbWwgNS4yLjAgLSBGaXJzdCBSZWxlYXNl IENhbmRpZGF0ZQ0KQW5ub3VuY2luZyBEQkNhbWwsIFNpbG8sIFNlcmRlIFBvc3RncmVzIGFuZCBh IG5ldyBkcml2ZXIgZm9yIHBvc3RncmVzDQpQcmV0dHkgUHJpbnRpbmcgaW4gT0NhbWw6IEZvcm1h dCBQcmltZXINClNlbmQgdXMgVGFsayBhbmQgV29ya3Nob3AgUHJvcG9zYWxzIGZvciBGdW4gT0Nh bWwgMjAyNCBpbiBCZXJsaW4sIFNlcHRlbWJlciAxNisxNw0KT0NhbWwgV29ya3Nob3AgMjAyNCBh dCBJQ0ZQIOKAkyBhbm5vdW5jZW1lbnQgYW5kIGNhbGwgZm9yIHByb3Bvc2Fscw0KT3RoZXIgT0Nh bWwgTmV3cw0KT2xkIENXTg0KDQoNCkRlcGxveWluZyBPY3NpZ2VuIGFwcGxpY2F0aW9ucw0K4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8v ZGlzY3Vzcy5vY2FtbC5vcmcvdC9kZXBsb3lpbmctb2NzaWdlbi1hcHBsaWNhdGlvbnMvMTQ1NzIv MT4NCg0KDQpIYW5zIE9sZSBSYWZhZWxzZW4gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIANCg0KICBJIGhhdmUgd3JpdHRlbiBhIHNob3J0IHRleHQgb24gaG93IE9jc2lnZW4g YXBwbGljYXRpb25zIG1pZ2h0IGJlDQogIHBhY2tlZCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCB0 byBvdGhlciBub2RlcywgdGhhdCBkb24ndCBoYXZlIHlvdXINCiAgZGV2ZWxvcG1lbnQgZW52aXJv bm1lbnQgaW5zdGFsbGVkLg0KDQogIFtEZXBsb3lpbmcgT2NzaWdlbl0NCg0KICBJZiB5b3UgaGFw cGVuIHRvIGhhdmUgYSBiZXR0ZXIgd2F5LCBvciBzb2x1dGlvbnMgdG8gcGFydHMgdGhhdCBJIGhh dmUNCiAgbm90IGJlZW4gYWJsZSB0byBzb2x2ZSwgcGxlYXNlIGxldCBtZSBrbm93Lg0KDQoNCltE ZXBsb3lpbmcgT2NzaWdlbl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5zb2xlL2RlcGxveWluZ19v Y3NpZ2VuPg0KDQoNCk9DYW1sIGxpbnRpbmcgdG9vbHMgYW5kIHRlY2huaXF1ZXMNCuKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxo dHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYmxvZy1vY2FtbC1saW50aW5nLXRvb2xzLWFuZC10 ZWNobmlxdWVzLzE0NTc0LzE+DQoNCg0KU2ltbW8gU2FhbiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFJl Y2VudGx5LCBJIHN0YXJ0ZWQgd29uZGVyaW5nIGFib3V0IGxpbnRpbmcgdG9vbHMgZm9yIE9DYW1s LCBzbyBJIHdlbnQNCiAgbG9va2luZy4gVGhpcyBlbmRlZCB1cCBiZWluZyBhIHF1aXRlIGV4dGVu c2l2ZSBzdXJ2ZXkuICBUaGVyZWZvcmUsIEkNCiAgZGVjaWRlZCB0byBwdWJsaXNoIG15IGZpbmRp bmdzIGluIGEgYmxvZyBwb3N0OiBbT0NhbWwgbGludGluZyB0b29scw0KICBhbmQgdGVjaG5pcXVl c10uDQoNCiAgSW4gcGFydGljdWxhciwgSSBmb2N1c2VkIG9uIGxpbnRpbmcgd2l0aCBkdW5lIGFu ZCBQcHhsaWIgYmVjYXVzZQ0KICB0aGVyZSdzIG1hbnkgdmFyaWF0aW9ucyBvdXQgdGhlcmUuIElu IHRoZSBwb3N0IEkgZGVzY3JpYmUgdGhlDQogIHRlY2huaWNhbCBjaG9pY2VzIHRoYXQgZ28gaW50 byBzdWNoIGxpbnRlcnMgYW5kIHByb3ZpZGUgYW4gb3ZlcnZpZXcgb2YNCiAgdGhvc2UgdGhhdCB3 b3JrIGFuZCBob3cgd2VsbC4gSW4gdGhlIHByb2Nlc3Mgb2YgZXhwZXJpbWVudGluZywgSSB0cmll ZA0KICB0aGVtIG91dCBteXNlbGYgYW5kIHB1Ymxpc2hlZCB0aGVtIGFzIGRlbW9zIG9uIEdpdEh1 YjoNCiAgW3NpbTY0Mi9kdW5lLWxpbnQtZGVtb10uDQoNCiAgRmVlbCBmcmVlIHRvIGxldCBtZSBr bm93IGlmIEkgbWlzc2VkIGFueSB0b29scyBvdXQgdGhlcmUgb3IgeW91IGhhdmUNCiAgYW55IHF1 ZXN0aW9ucy9jb21tZW50cy4gVGhlcmUgaXNuJ3QgbXVjaCBpbmZvcm1hdGlvbiBhYm91dCB0aGlz IG91dA0KICB0aGVyZSAoYW5kIGV4aXN0aW5nIHRvb2wgZG9lcyBpdCBzbGlnaHRseSBkaWZmZXJl bnRseSksIHNvIEkgaG9wZSB0aGlzDQogIG92ZXJ2aWV3IGJlbmVmaXRzIG90aGVycyBhcyB3ZWxs Lg0KDQoNCltPQ2FtbCBsaW50aW5nIHRvb2xzIGFuZCB0ZWNobmlxdWVzXQ0KPGh0dHBzOi8vc2lt NjQyLmV1L2Jsb2cvMjAyNC8wNS8wMS9vY2FtbC1saW50aW5nPg0KDQpbc2ltNjQyL2R1bmUtbGlu dC1kZW1vXSA8aHR0cHM6Ly9naXRodWIuY29tL3NpbTY0Mi9kdW5lLWxpbnQtZGVtbz4NCg0KDQpk dW5lIDMuMTUNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRw czovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWR1bmUtMy0xNS8xNDQzOC8yPg0KDQoNCkV0aWVu bmUgTWlsbG9uIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2UndmUgcmVsZWFzZWQg My4xNS4xIGFuZCAzLjE1LjIuIFRoZSBsYXR0ZXIgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudA0K ICBmb3IgQ29xIHVzZXJzIHNpbmNlIGl0IGZpeGVzIGEgcmVncmVzc2lvbiBpbiBpbmNyZW1lbnRh bCBjb21waWxhdGlvbg0KICBpbnRyb2R1Y2VkIGluIDMuMTMuMC4NCg0KICBIZXJlJ3MgdGhlIGNv bWJpbmVkIGNoYW5nZWxvZzoNCg0KDQpGaXhlZA0K4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCiIEZp eCBvdmVyZmxvdyBpbiBzZW5kZmlsZSBzdHVicyAoY29weSBvZiBsYXJnZSBmaWxlcyBjb3VsZCBm YWlsIG9yDQogICAgZW5kIHdpdGggdHJ1bmNhdGVkIGZpbGVzKSAoIzEwMzMzLCBAdG9ueWZldHRl cykNCiAg4oCiIEZpeCBjcmFzaCB3aGVuIGEgcnVsZSB3aXRoIGEgZGlyZWN0b3J5IHRhcmdldCBp cyBkaXNhYmxlZCB3aXRoDQogICAgYGVuYWJsZWRfaWZgICgjMTAzODIsIGZpeGVzICMxMDMxMCwg QGdyaWRidWdzKQ0KICDigKIgbWVsYW5nZTogcmVtb3ZlIGFsbCByZXN0cmljdGlvbnMgYXJvdW5k IHZpcnR1YWwgbGlicmFyaWVzIGluDQogICAgTWVsYW5nZS4gVGhleSBtYXkgYmUgdXNlZCBhcyBv dGhlcndpc2UgaW4gbGlicmFyaWVzIGFuZA0KICAgIGV4ZWN1dGFibGVzLiAoIzEwNDEyLCBAYW5t b250ZWlybykNCiAg4oCiIHNwYXduOiBmaXggY29tcGF0aWJpbGl0eSB3aXRoIFJIRUw3ICgjMTA0 MjgsIEBlbWlsbG9uKQ0KICDigKIgSWYgbm8gZGlyZWN0b3J5IHRhcmdldHMgYXJlIGRlZmluZWQs IHRoZW4gZG8gbm90IGV2YWx1YXRlDQogICAgYGVuYWJsZWRfaWZgICgjMTA0NDIsIEByZ3JpbmJl cmcpDQogIOKAoiBGaXggYSBidWcgd2hlcmUgQ29xIHByb2plY3RzIHdlcmUgYmVpbmcgcmVidWls dCBmcm9tIHNjcmF0Y2ggZWFjaA0KICAgIHRpbWUgdGhlIGRlcGVuZGVuY3kgZ3JhcGggY2hhbmdl ZC4gKCMxMDQ0NiwgZml4ZXMgIzEwMTQ5LCBAYWxpenRlcikNCg0KDQpiaXRnZW5lcmF0b3JzIHYw LjEuMA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9h bm4tYml0Z2VuZXJhdG9ycy12MC0xLTAvMTQ1NzcvMT4NCg0KDQp6b2o2MTMgYW5ub3VuY2VkDQri lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaSBl dmVyeW9uZS4gSSdkIGxpa2UgdG8gYW5ub3VuY2UgdGhlIGZpcnN0IHJlbGVhc2Ugb2YNCiAgW2Jp dGdlbmVyYXRvcnNdLiBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBhbiBPQ2FtbCBwb3J0IG9mIE51 bVB5J3MNCiAgYml0Z2VuZXJhdG9yIGludGVyZmFjZSBmb3Igd29ya2luZyB3aXRoIFBzdWVkby1y YW5kb20gbnVtYmVycyAoc2VlOg0KICA8aHR0cHM6Ly9udW1weS5vcmcvZG9jL3N0YWJsZS9yZWZl cmVuY2UvcmFuZG9tL2JpdF9nZW5lcmF0b3JzL2luZGV4Lmh0bWw+KS4NCg0KICDigKIgVGhpcyBs aWJyYXJ5IGltcGxlbWVudHMgc2V2ZXJhbCBQUk5HcyB0aGF0IGFyZSBleHBvc2VkIHRocm91Z2gg dGhpcw0KICAgIGNvbW1vbiBpbnRlcmZhY2UuIEl0IGFsc28gaW1wbGVtZW50cyBhbiBgU2VlZFNl cXVlbmNlJyBtb2R1bGUgZm9yDQogICAgc2VlZGluZyBQUk5HcyB1c2luZyBoaWdoIHF1YWxpdHkg aW5pdGlhbCBzdGF0ZXMgYmFzZWQgb24gdGhlIGlkZWFzDQogICAgZGlzY3Vzc2VkIFtoZXJlXS4N CiAg4oCiIE1vcmV2ZXIsIHRoZSBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgaGVscCBl YXNpbHkgZ2VuZXJhdGUNCiAgICBpbmRlcGVuZGVudCBhbmQgbm9uLW92ZXJsYXBwaW5nIGluc3Rh bmNlcyBvZiBhIFBSTkcgZm9yIHVzZSBpbg0KICAgIHBhcmFsbGVsIGNvbXB1dGF0aW9uIGluIGEg L3JlcHJvZHVjaWJsZS8gbWFubmVyLg0KICDigKIgSW1wbGVtZW50ZWQgUFJORydzIGluY2x1ZGUg W1BDRzY0XSwgW1NGQzY0XSwgW1BoaWxveDR4NjRdLA0KICAgIFtYb3NoaXJvMjU2KipdIGFuZCBb Q2hhQ2hhXS4gQWxsIG9mIHdoaWNoIHBhc3Mgc3RyaW5nZW50IHN0YXRpc3RpY2FsDQogICAgcmFu ZG9tbmVzcyB0ZXN0cyBsaWtlIFByYWN0UmFuZCBhbmQgVGVzdHUwMS4NCiAg4oCiIFRoZSBBUEkg ZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgW2hlcmVdDQogIOKAoiBUaGUgc291cmNlIGNvZGUg aXMgaG9zdGVkIG9uIGdpdGh1YjoNCiAgICA8aHR0cHM6Ly9naXRodWIuY29tL3pvajYxMy9iaXRn ZW5lcmF0b3JzPg0KICDigKIgVGhlIFJFQURNRSBmaWxlIGNvbnRhaW5zIGV4YW1wbGVzIG9mIGhv dyB0aGUgbGlicmFyeSBjYW4gYmUgdXNlZC4NCg0KICBUaGlzIGlzIG15IGZpcnN0IE9jYW1sIHBy b2plY3QgYW5kIHRoZXJlZm9yZSBJIHdvdWxkIGhpZ2hseSBhcHByZWNpYXRlDQogIGZlZWRiYWNr IGZyb20gZXhwZXJpZW5jZWQgdXNlcnMgcmVnYXJkaW5nIGl0J3MgdXNlZnVsbmVzcyBhbmQgcG9z c2libHkNCiAgaG93IGl0IGNvdWxkIGJlIGltcHJvdmVkIChlLmcuIHVzYWJpbGl0eSBhbmQgcGVy Zm9ybWFuY2UpLiBJIHRyaWVkIHRvDQogIGtlZXAgdGhlIGltcGxlbWVudGF0aW9uIGFzIGZ1bmN0 aW9uYWwgYXMgcG9zc2libGUsIHRob3VnaCBub3QgdmVyeQ0KICBzdXJlIGlmIHRoYXQncyB0aGUg YmVzdCBhcHByb2FjaCBoZXJlLg0KDQoNCltiaXRnZW5lcmF0b3JzXSA8aHR0cHM6Ly9naXRodWIu Y29tL3pvajYxMy9iaXRnZW5lcmF0b3JzPg0KDQpbaGVyZV0NCjxodHRwczovL3d3dy5wY2ctcmFu ZG9tLm9yZy9wb3N0cy9kZXZlbG9waW5nLWEtc2VlZF9zZXEtYWx0ZXJuYXRpdmUuaHRtbD4NCg0K W1BDRzY0XSA8aHR0cHM6Ly93d3cuY3MuaG1jLmVkdS90ci9obWMtY3MtMjAxNC0wOTA1LnBkZj4N Cg0KW1NGQzY0XSA8aHR0cHM6Ly9wcmFjcmFuZC5zb3VyY2Vmb3JnZS5uZXQvUk5HX2VuZ2luZXMu dHh0Pg0KDQpbUGhpbG94NHg2NF0gPGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVu dC82MTE0NDI0Lz4NCg0KW1hvc2hpcm8yNTYqKl0gPGh0dHBzOi8vcHJuZy5kaS51bmltaS5pdC8+ DQoNCltDaGFDaGFdIDxodHRwczovL2NyLnlwLnRvL2NoYWNoYS9jaGFjaGEtMjAwODAxMjgucGRm Pg0KDQpbaGVyZV0NCjxodHRwczovL3pvajYxMy5naXRodWIuaW8vYml0Z2VuZXJhdG9ycy9iaXRn ZW5lcmF0b3JzL0JpdGdlbi9pbmRleC5odG1sPg0KDQoNCmNoZWNrZWRfb2ludCB2MC4xLjANCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0K DQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWNoZWNrZWQtb2lu dC12MC0xLTAvMTQ1ODAvMT4NCg0KDQpTaW1hIEtpbnNhcnQgYW5ub3VuY2VkDQrilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBJJ2QgbGlrZSB0byBhbm5vdW5jZSBhIG5ldyBsaWJyYXJ5OiBbYGNoZWNrZWRfb2ludCdd LiBJdCBpbXBsZW1lbnRzDQogIGNoZWNrZWQgYXJpdGhtZXRpYyBmb3IgYm90aCBzaWduZWQgYW5k IHVuc2lnbmVkIGludGVnZXJzIG9mIDgsIDE2LCAzMiwNCiAgNjQsIGFuZCAxMjggYml0cy4gVW5s aWtlIGBzdGRpbnQnIG9yIGBvY2FtbC1pbnRlZ2VycycsIHJvdXRpbmVzIGluDQogIHRoaXMgbGli cmFyeSBlaXRoZXIgcmV0dXJuIGFuIG9wdGlvbiBvciByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBh DQogIHJlc3VsdCBvZiBhbiBhcml0aG1ldGljIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmVwcmVzZW50 ZWQgaW4gYSBkZXNpcmVkDQogIGludGVnZXIgdHlwZS4gSW4gYWRkaXRpb24sIGl0IGNvbnRhaW5z IGFic3RyYWN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nDQogIGFyYml0cmFyeSBpbnRlZ2VycyBhbmQg aW50ZWdlciB0eXBlcyBpbiBhIGdlbmVyaWMgYW5kIHR5cGUtc2FmZQ0KICBtYW5uZXIsIHdoaWNo IEkgZmluZCBxdWl0ZSB1c2VmdWwgZm9yIGNvbXBpbGVyL2ludGVycHJldGVyDQogIGltcGxlbWVu dGF0aW9ucy4NCg0KICBVc2FnZSBleGFtcGxlOg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIg b3BlbiBDaGVja2VkX29pbnQNCiAg4pSCIA0KICDilIIgbGV0ICgpID0NCiAg4pSCICAgbGV0IHgg PSBVOC5vZl9pbnRfZXhuIDUwIGluDQogIOKUgiAgIGxldCB5ID0gVTgub2ZfaW50X2V4biA3MCBp bg0KICDilIIgICBhc3NlcnQgKFU4LmVxdWFsIChVOC5hZGRfZXhuIHggeSkgKFU4Lm9mX2ludF9l eG4gMTIwKSk7DQogIOKUgiAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgKFU4Lm11bCB4IHkpKQ0K ICDilJTilIDilIDilIDilIANCg0KICBGZWVsIGZyZWUgdG8gYXNrIGFueSBxdWVzdGlvbnMgaW4g dGhlIGNvbW1lbnRzLg0KDQoNCltgY2hlY2tlZF9vaW50J10gPGh0dHBzOi8vZ2l0aHViLmNvbS9I aXJyb2xvdC9jaGVja2VkX29pbnQ+DQoNCg0KTGlxdWlkc29hcCAyLjIuNSBpcyBvdXQhDQrilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90 L2Fubi1saXF1aWRzb2FwLTItMi01LWlzLW91dC8xNDU4Mi8xPg0KDQoNClJvbWFpbiBCZWF1eGlz IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgTGlxdWlkc29hcCBgMi4yLjUnIGhhcyBv dXQhIEZ1bGwgcmVsZWFzZSBkZXRhaWxzIGFyZSBoZXJlOg0KICA8aHR0cHM6Ly9naXRodWIuY29t L3Nhdm9uZXQvbGlxdWlkc29hcC9yZWxlYXNlcy90YWcvdjIuMi41Pg0KDQogIExpcXVpZHNvYXAg aXMgYSBzdGF0aWNhbGx5IHR5cGVkIHNjcmlwdGluZyBnZW5lcmFsLXB1cnBvc2UgbGFuZ3VhZ2UN CiAgd2l0aCBkZWRpY2F0ZWQgb3BlcmF0b3JzIGFuZCBiYWNrZW5kIGZvciBhbGwgdGhpbmcgbWVk aWEsIHN0cmVhbWluZywNCiAgZmlsZSBnZW5lcmF0aW9uLCBhdXRvbWF0aW9uLCBIVFRQIGJhY2tl bmQgYW5kIG1vcmUuDQoNCiAgVGhpcyBpcyBob3BlZnVsbHkgdGhlICpsYXN0KiByZWxlYXNlIG9m IHRoZSBgMi4yLngnIHJlbGVhc2UgY3ljbGUNCiAgYmVmb3JlIHdlIGtpY2sgb2ZmIHRoZSBuZXcg YDIuMy54JyByZWxlYXNlIGN5Y2xlLiBXZSd2ZSBnb3QgYSBjb3VwbGUNCiAgZmVhdHVyZSB0byBi cmluZyB0aGVyZSBhbmQgdGhlbiBpdCdsbCBiZSByZWFkeSBmb3IgbW9yZSB0ZXN0aW5nLg0KDQog IExpcXVpZHNvYXAgYDIuMi41JyBoYXMgc29tZSBnb29kIGJ1Z2ZpeGVzIGFuZCBzb21lIG1pbm9y IGNoYW5nZXMgYnV0DQogIGl0cyBtb3N0IGV4Y2l0aW5nIGZlYXR1cmUgaXMgdGhlICphdXRvY3Vl KiAuIEl0IHdhcyBkZXZlbG9wZWQgaW4gY2xvc2UNCiAgY29sbGFib3JhdGlvbiB3aXRoIHNldmVy YWwgdXNlcnMuIFRoZSBmZWF0dXJlIGlzIGFuIG9wdC1pbiBjcm9zc2ZhZGUNCiAgZXh0ZW5zaW9u IHRoYXQgY29tcHV0ZXMgdGhlIC9wZXJmZWN0LyBjcm9zc2ZhZGUgdHJhbnNpdGlvbnMgZm9yIHlv dXINCiAgdHJhY2tzLg0KDQogIE92ZXIgdGhlIHllYXJzLCBpdCdzIGJlZW4gdmVyeSBpbnRlcmVz dGluZyB0byBtYWludGFpbiBhbiBhcHBsaWNhdGlvbg0KICBhbmQgbGFuZ3VhZ2UgdGhhdCBpcyBu b3cgcHJldHR5IGxhcmdlIGFuZCBjb21wbGV4IHVzaW5nIHRoZSBPQ2FtbA0KICBjb21waWxlciBh bmQgZWNvc3lzdGVtLiBJdCdzIGFtYXppbmcgdG8gc2VlIGhvdyBlYXN5IGl0IGlzIG5vdyB0bw0K ICBidWlsZCBpbnRlZ3JhdGUgbmV3IHBhY2thZ2VzLiBJdCBhbHNvIGJyaW5ncyBpbiBzb21lIGlu dGVyZXN0aW5nLA0KICByZWFsLWxpZmUgY2hhbGxlbmdlcyBzdWNoIGFzIHNvbWUgdmVyeSBzcGVj aWZpYyBbbWVtb3J5IGlzc3Vlc10uDQoNCiAgTmV4dCwgd2Ugd291bGQgbGlrZSB0byB3b3JrIG9u IG9wdGltaXppbmcgdGhlIGxhbmd1YWdlIGJ5IGludHJvZHVjaW5nDQogIG1vZHVsZXMsIHRvIHJl ZHVjZSB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIG1lbW9yeSBmb290cHJpbnQsIGFuZCB0byB1c2UN CiAgdGhlIG5ldyBPQ2FtbCBwYXJhbGxlbGlzbSB0byBmdWxseSBsZXZlcmFnZSBDUFUgYW5kIG1l bW9yeSB1c2FnZSB3aGVuDQogIHN0cmVhbWluZyBsYXJnZSBhbW91bnQgb2YgZGF0YSBzdWNoIGFz IHZpZGVvIHN0cmVhbXMuDQoNCg0KW21lbW9yeSBpc3N1ZXNdIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb2NhbWwvaXNzdWVzLzEzMTIzPg0KDQoNCk9DYW1sIDUuMi4wIC0gRmlyc3QgUmVsZWFz ZSBDYW5kaWRhdGUNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv b2NhbWwtNS0yLTAtZmlyc3QtcmVsZWFzZS1jYW5kaWRhdGUvMTQ1ODQvMT4NCg0KDQpvY3RhY2hy b24gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBUaGUgcmVsZWFzZSBvZiBPQ2FtbCA1LjIuMCBpcyBpbW1pbmVu dC4gIEFzIGEgZmluYWwgc3RlcCwgd2UgYXJlDQogIHB1Ymxpc2hpbmcgYSByZWxlYXNlIGNhbmRp ZGF0ZSB0byBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXINCiAgYmVmb3JlIHRoZSBy ZWxlYXNlIGluIHRoZSB1cGNvbWluZyB3ZWVrKHMpLg0KDQogIElmIHlvdSBmaW5kIGFueSBidWdz LCBwbGVhc2UgcmVwb3J0IHRoZW0gb24gW09DYW1sJ3MgaXNzdWUgdHJhY2tlcl0uDQoNCiAgQ29t cGFyZWQgdG8gdGhlIHNlY29uZCBiZXRhLCB0aGlzIHJlbGVhc2UgY29udGFpbnMgb25lIHNtYWxs DQogIGNvbXBpbGVyLWxpYnMgcHJpbnRlciBmaXggYW5kIG9uZSBjb25maWd1cmF0aW9uIHR3ZWFr Lg0KDQogIFRoZSBmdWxsIGNoYW5nZSBsb2cgZm9yIE9DYW1sIDUuMi4wIGlzIGF2YWlsYWJsZSBb b24gR2l0SHViXS4gIEEgc2hvcnQNCiAgc3VtbWFyeSBvZiB0aGUgY2hhbmdlcyBzaW5jZSB0aGUg c2Vjb25kIGJldGEgcmVsZWFzZSBpcyBhbHNvIGF2YWlsYWJsZQ0KICBiZWxvdy4NCg0KDQpbT0Nh bWwncyBpc3N1ZSB0cmFja2VyXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vl cz4NCg0KW29uIEdpdEh1Yl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9ibG9iLzUu Mi9DaGFuZ2VzPg0KDQpJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zDQrilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYwNCg0KICBUaGUgYmFzZSBjb21waWxlciBjYW4gYmUgaW5zdGFsbGVkIGFzIGFuIG9wYW0gc3dp dGNoIHdpdGggdGhlDQogIGZvbGxvd2luZyBjb21tYW5kcyBvbiBvcGFtIDIuMSBhbmQgbGF0ZXI6 DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3BhbSB1cGRhdGUNCiAg4pSCIG9wYW0gc3dpdGNo IGNyZWF0ZSA1LjIuMH5yYzENCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgVGhlIHNvdXJjZSBjb2Rl IGZvciB0aGUgcmVsZWFzZSBjYW5kaWRhdGUgaXMgYWxzbyBkaXJlY3RseSBhdmFpbGFibGUNCiAg b246DQoNCiAg4oCiIFtHaXRIdWJdDQogIOKAoiBbT0NhbWwgYXJjaGl2ZXMgYXQgSW5yaWFdDQoN Cg0KW0dpdEh1Yl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9hcmNoaXZlLzUuMi4w LXJjMS50YXIuZ3o+DQoNCltPQ2FtbCBhcmNoaXZlcyBhdCBJbnJpYV0NCjxodHRwczovL2NhbWwu aW5yaWEuZnIvcHViL2Rpc3RyaWIvb2NhbWwtNS4yL29jYW1sLTUuMi4wfnJjMS50YXIuZ3o+DQoN Cg0KRmluZS1UdW5lZCBDb21waWxlciBDb25maWd1cmF0aW9uDQrilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYwNCg0KICBJZiB5b3Ugd2FudCB0byB0d2VhayB0aGUgY29u ZmlndXJhdGlvbiBvZiB0aGUgY29tcGlsZXIsIHlvdSBjYW4gc3dpdGNoDQogIHRvIHRoZSBvcHRp b24gdmFyaWFudCB3aXRoOg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gdXBkYXRlDQog IOKUgiBvcGFtIHN3aXRjaCBjcmVhdGUgPHN3aXRjaF9uYW1lPiBvY2FtbC12YXJpYW50cy41LjIu MH5yYzErb3B0aW9ucyA8b3B0aW9uX2xpc3Q+DQogIOKUlOKUgOKUgOKUgOKUgA0KICB3aGVyZSBg PG9wdGlvbl9saXN0PicgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBgb2NhbWwtb3B0aW9u LSonDQogIHBhY2thZ2VzLiBGb3IgaW5zdGFuY2UsIGZvciBhIGBmbGFtYmRhJyBhbmQgYG5vLWZs YXQtZmxvYXQtYXJyYXknDQogIHN3aXRjaDoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBvcGFt IHN3aXRjaCBjcmVhdGUgNS4yLjB+cmMxK2ZsYW1iZGErbmZmYSBvY2FtbC12YXJpYW50cy41LjIu MH5yYzErb3B0aW9ucyBvY2FtbC1vcHRpb24tZmxhbWJkYSBvY2FtbC1vcHRpb24tbm8tZmxhdC1m bG9hdC1hcnJheQ0KICDilJTilIDilIDilIDilIANCg0KICBBbGwgYXZhaWxhYmxlIG9wdGlvbnMg Y2FuIGJlIGxpc3RlZCB3aXRoIGBvcGFtIHNlYXJjaCBvY2FtbC1vcHRpb24nLg0KDQoNCkNoYW5n ZXMgc2luY2UgdGhlIHNlY29uZCBiZXRhDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwN Cg0KICDigKIgWyMxMzEzMF06IE1pbm9yIGZpeGVzIHRvIGBwcHJpbnRhc3QnIGZvciByYXcgaWRl bnRpZmllcnMgYW5kIGxvY2FsDQogICAgbW9kdWxlIG9wZW4gc3ludGF4IGZvciB0eXBlcy4gKENo ZXQgTXVydGh5LCByZXZpZXcgYnkgR2FicmllbA0KICAgIFNjaGVyZXIpDQogIOKAoiBbIzEzMTAw XSBGaXggZGV0ZWN0aW9uIG9mIGB6c3RkJyB3aGVuIGNvbXBpbGluZyB3aXRoIGBtdXNsLWdjYycN CiAgICAoRGF2aWQgQWxsc29wcCwgcmV2aWV3IGJ5IFNhbXVlbCBIeW0pDQoNCg0KWyMxMzEzMF0g PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTMxMzA+DQoNClsjMTMxMDBd IDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzEzMTAwPg0KDQoNCkFubm91 bmNpbmcgREJDYW1sLCBTaWxvLCBTZXJkZSBQb3N0Z3JlcyBhbmQgYSBuZXcgZHJpdmVyIGZvciBw b3N0Z3Jlcw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2 ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm5vdW5jaW5nLWRiY2FtbC1zaWxv LXNlcmRlLXBvc3RncmVzLWFuZC1hLW5ldy1kcml2ZXItZm9yLXBvc3RncmVzLzE0NTg1LzE+DQoN Cg0KRW1pbCBQcml2ZXIgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICA8aHR0cHM6Ly9wcml2ZXIuZGV2 L2Jsb2cvZGJjYW1sL2RiY2FtbC1wcm9qZWN0Lz4NCg0KDQpQcmV0dHkgUHJpbnRpbmcgaW4gT0Nh bWw6IEZvcm1hdCBQcmltZXINCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mu b2NhbWwub3JnL3QvYmxvZy1wcmV0dHktcHJpbnRpbmctaW4tb2NhbWwtZm9ybWF0LXByaW1lci8x NDU5OS8xPg0KDQoNClZsYWRpbWlyIEtlbGVzaGV2IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSADQoNCiAgSGkgZm9sa3MsIEkgd3JvdGUgYW5vdGhlciArbW9uYWQrIEZvcm1hdCB0 dXRvcmlhbC4NCg0KICA8aHR0cHM6Ly9rZWxlc2hldi5jb20vcHJldHR5LXByaW50aW5nLWluLW9j YW1sLWEtZm9ybWF0LXByaW1lcj4NCg0KICBIZXJlJ3Mgc29tZSBvZiBsYXlvdXRzIHRoYXQgYXJl IGNvdmVyZWQ6DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBbW10sDQogIOKUgiAgWyJvbmUi LCAidHdvIiwgInRocmVlIl0sDQogIOKUgiAgWyJvbmUiLA0KICDilIIgICAidHdvIiwNCiAg4pSC ICAgInRocmVlIiwNCiAg4pSCICAgImZvdXIiLA0KICDilIIgICAiZml2ZSIsDQogIOKUgiAgICJz aXgiLA0KICDilIIgICAic2V2ZW4iLA0KICDilIIgICAiZWlnaHQiLA0KICDilIIgICAibmluZSIs DQogIOKUgiAgICJ0ZW4iXV0NCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAg4pSM4pSA4pSA4pSA4pSA DQogIOKUgiBbDQogIOKUgiAgIFtdLA0KICDilIIgICBbIm9uZSIsICJ0d28iLCAidGhyZWUiXSwN CiAg4pSCICAgWw0KICDilIIgICAgICJvbmUiLA0KICDilIIgICAgICJ0d28iLA0KICDilIIgICAg ICJ0aHJlZSIsDQogIOKUgiAgICAgImZvdXIiLA0KICDilIIgICAgICJmaXZlIiwNCiAg4pSCICAg ICAic2l4IiwNCiAg4pSCICAgICAic2V2ZW4iLA0KICDilIIgICAgICJlaWdodCIsDQogIOKUgiAg ICAgIm5pbmUiLA0KICDilIIgICAgICJ0ZW4iLA0KICDilIIgICBdDQogIOKUgiBdDQogIOKUlOKU gOKUgOKUgOKUgA0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgWyBbXQ0KICDilIIgLCBbICJv bmUiLCAidHdvIiwgInRocmVlIiBdDQogIOKUgiAsIFsgIm9uZSINCiAg4pSCICAgLCAidHdvIg0K ICDilIIgICAsICJ0aHJlZSINCiAg4pSCICAgLCAiZm91ciINCiAg4pSCICAgLCAiZml2ZSINCiAg 4pSCICAgLCAic2l4Ig0KICDilIIgICAsICJzZXZlbiINCiAg4pSCICAgLCAiZWlnaHQiDQogIOKU giAgICwgIm5pbmUiDQogIOKUgiAgICwgInRlbiINCiAg4pSCICAgXQ0KICDilIIgXQ0KICDilJTi lIDilIDilIDilIANCg0KICBJIHRyaWVkIHRvIHNoYXJlIHNvbWUgb2YgbXkgZXhwZXJpZW5jZSB1 c2luZyBGb3JtYXQuIEFzIGEgYm9udXPigJRKU09ODQogIHByZXR0eSBwcmludGVyLg0KDQoNClNl bmQgdXMgVGFsayBhbmQgV29ya3Nob3AgUHJvcG9zYWxzIGZvciBGdW4gT0NhbWwgMjAyNCBpbiBC ZXJsaW4sIFNlcHRlbWJlciAxNisxNw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAg PGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9zZW5kLXVzLXRhbGstYW5kLXdvcmtzaG9wLXBy b3Bvc2Fscy1mb3ItZnVuLW9jYW1sLTIwMjQtaW4tYmVybGluLXNlcHRlbWJlci0xNi0xNy8xNDYw My8xPg0KDQoNClNhYmluZSBTY2htYWx0eiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K DQogICpGdW4gT0NhbWwgMjAyNCogaXMgYSAqMiBkYXlzIG9wZW4gc291cmNlIGhhY2tpbmcgZXZl bnQqIGRlZGljYXRlZCB0bw0KICAgT0NhbWwgZW50aHVzaWFzdHMgYW5kIHByb2Zlc3Npb25hbHMu IFdlIGZvY3VzIG9uIHRoZSBpbXBhY3QgYW5kDQogICBwb3RlbnRpYWwgb2YgT0NhbWwgZm9yIHNv bHZpbmcgcmVhbC13b3JsZCBwcm9ibGVtcyBhbmQgZ2V0IHRvZ2V0aGVyDQogICBpbiBCZXJsaW4g Zm9yIGEgY29uZmVyZW5jZS9oYWNrYXRob24gb3ZlciB0d28gZGF5czoNCiAg4oCiIERheSAxIChN b25kYXksIFNlcHRlbWJlciAxNik6IHRhbGtzICh3aGljaCBhcmUgbGl2ZS1zdHJlYW1lZCkgYW5k DQogICAgc29jaWFsaXppbmcvaGFja2luZy4NCiAg4oCiIERheSAyIChUdWVzZGF5LCBTZXB0ZW1i ZXIgMTcpOiBXb3Jrc2hvcHMgYW5kIGhhY2tpbmcuDQoNCiAgVG9waWNzIHdlJ3JlIGludGVyZXN0 ZWQgaW46DQogIOKAoiBob3cgeW91IHVzZSBPQ2FtbCBpbiB5b3VyIGJ1c2luZXNzIC8gaW4geW91 ciBwcm9qZWN0cw0KICDigKIgT0NhbWwgbGlicmFyaWVzLCBmcmFtZXdvcmtzLCBhbmQgb3RoZXIg T3BlbiBTb3VyY2UgcHJvamVjdHMgYnVpbHQgb24NCiAgICBPQ2FtbA0KICDigKIgaGFuZHMtb24g ZGVtb25zdHJhdGlvbnMgdGhhdCBlbmNvdXJhZ2UgcGVvcGxlIHRvIHRyeSB0aGluZ3Mgb24gdGhl DQogICAgc2Vjb25kIGRheSBvZiB0aGUgZXZlbnQgb3IgYXQgaG9tZQ0KICDigKIgc2VlaW5nIGFj dHVhbCBjb2RlIGFuZCByZWFzb25pbmcgYmVoaW5kIGRlc2lnbiBkZWNpc2lvbnMNCiAg4oCiIGV4 cGVyaWVuY2UgcmVwb3J0cw0KDQogIEZvciBtb3JlIGRldGFpbHMsIGNoZWNrIG91dCB0aGUgd2Vi c2l0ZSBhbmQgdGhlIENGUCBsaW5rZWQgZnJvbSB0aGVyZToNCg0KICA8aHR0cHM6Ly9mdW4tb2Nh bWwuY29tPg0KDQogIFJlZ2lzdHJhdGlvbiBmb3IgYXR0ZW5kZWVzIHdpbGwgYmUgYW5ub3VuY2Vk IGxhdGVyIHRoaXMgd2VlayBpbg0KICBhZHZhbmNlLCBidXQgaXMgbm90IG9wZW4geWV0Lg0KDQog IFRoYW5rcyEgOnNwYXJrbGVzOiA6b3JhbmdlX2hlYXJ0OiA6Y2FtZWw6DQoNCg0KT0NhbWwgV29y a3Nob3AgMjAyNCBhdCBJQ0ZQIOKAkyBhbm5vdW5jZW1lbnQgYW5kIGNhbGwgZm9yIHByb3Bvc2Fs cw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9vY2FtbC13b3Jrc2hvcC0yMDI0LWF0LWljZnAtYW5ub3VuY2VtZW50 LWFuZC1jYWxsLWZvci1wcm9wb3NhbHMvMTQzNzEvNT4NCg0KDQpTb25qYSBIZWluemUgY29udGlu dWVkIHRoaXMgdGhyZWFkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBBcyBtZW50aW9uZWQgYWJvdmUsIHRoZSBzdWJtaXNzaW9uIGRlYWRsaW5lIGZv ciB0aGUgT0NhbWwgV29ya3Nob3AgYXQNCiAgSUNGUCBpcyBnZXR0aW5nIGNsb3Nlci4NCg0KICBB cyBhIG5ldyBub3RlOiBBIGZldyB3ZWVrcyBhZnRlciB0aGUgT0NhbWwgV29ya3Nob3AgYXQgSUNG UCwgdGhlcmUnbGwNCiAgYmUgdGhlIG5ldyBpbml0aWF0aXZlIFtGdW4gT0NhbWxdIGluIEJlcmxp bi4gSXQncyBzdXBlciBleGNpdGluZyB0bw0KICBoYXZlIHRocmVlIE9DYW1sLXJlbGF0ZWQgd29y a3Nob3BzIChmaXJzdCB0aGUgTUwgV29ya3Nob3AgYW5kIHRoZQ0KICBPQ2FtbCBXb3Jrc2hvcCBh dCBJQ0ZQLCBhbmQgdGhlbiBGdW4gT0NhbWwpIG92ZXIgdGhlIGNvdXJzZSBvZiBhIGZldw0KICB3 ZWVrcywgYW5kIHdlJ3JlIGFsc28gdmVyeSBtdWNoIGxvb2tpbmcgZm9yd2FyZCB0byBGdW4gT0Nh bWwhDQoNCiAgV2UndmUgYWxyZWFkeSBtZW50aW9uZWQgdGhhdCB3aGVuIHJlYWRpbmcgdGhlIHN1 Ym1pc3Npb25zLCBhcyBldmVyeQ0KICB5ZWFyLCB3ZSdsbCBjb2xsYWJvcmF0ZSBjbG9zZWx5IHdp dGggdGhlIG9yZ2FuaXplcnMgb2YgdGhlIE1MIHdvcmtzaG9wDQogIGF0IElDRlAsIHdoaWNoIGlu dGVyc2VjdHMgd2l0aCB0aGUgT0NhbWwgV29ya3Nob3Agb24gdGFsa3Mgd2l0aCBhDQogIHN0cm9u ZyB0aGVvcmV0aWNhbCBhbmQgcmVzZWFyY2gtb3JpZW50ZWQgZm9jdXMuIFdlJ2xsIGFsc28gY29s bGFib3JhdGUNCiAgd2l0aCB0aGUgb3JnYW5pemVycyBvZiBGdW4gT0NhbWwgdGhpcyB5ZWFyLCB3 aGljaCBtaWdodCBpbnRlcnNlY3Qgb24NCiAgdGFsa3Mgd2l0aCBhIHN0cm9uZyBwcmFjdGljYWwg Zm9jdXMuIFdpdGggY29sbGFib3JhdGlvbiwgd2UgbWFpbmx5DQogIG1lYW4gcG90ZW50aWFsbHkg dHJhbnNmZXJyaW5nIHN1Ym1pc3Npb25zIGZyb20gb25lIHdvcmtzaG9wIHRvIGFub3RoZXINCiAg YWZ0ZXIgY2hlY2tpbmcgaW4gd2l0aCB0aGUgYXV0aG9ycyAoc2lkZS1ub3RlOiBpZiB5b3Ugd2Fu dCB5b3VyDQogIHByZXNlbnRhdGlvbiB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIGEgcG90 ZW50aWFsIHRyYW5zZmVyLCB5b3UNCiAgbmVlZCB0byByZXNwZWN0IHRoZSBlYXJsaWVyIG9mIHRo ZSB0d28gc3VibWlzc2lvbiBkZWFkbGluZXMpLg0KDQogIEJlc3QsIGFuZCBsb29raW5nIGZvcndh cmQgdG8gdGhpcyBleGNpdGluZyB5ZWFyIG9mIE9DYW1sIHdvcmtzaG9wcywNCiAgQEFybWFlbCBh bmQgQHBpdGFnDQoNCg0KW0Z1biBPQ2FtbF0NCjxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv c2VuZC11cy10YWxrLWFuZC13b3Jrc2hvcC1wcm9wb3NhbHMtZm9yLWZ1bi1vY2FtbC0yMDI0LWlu LWJlcmxpbi1zZXB0ZW1iZXItMTYtMTcvMTQ2MDM+DQoNCg0KT3RoZXIgT0NhbWwgTmV3cw0K4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCkZyb20gdGhl IG9jYW1sLm9yZyBibG9nDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIZXJlIGFyZSBsaW5rcyBmcm9tIG1h bnkgT0NhbWwgYmxvZ3MgYWdncmVnYXRlZCBhdCBbdGhlIG9jYW1sLm9yZw0KICBibG9nXS4NCg0K ICDigKIgW1dlIEhvc3QgT3VyIEZpcnN0IE9DYW1sIFJldHJlYXQgaW4gSW5kaWEhXQ0KDQoNClt0 aGUgb2NhbWwub3JnIGJsb2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4NCg0KW1dlIEhvc3Qg T3VyIEZpcnN0IE9DYW1sIFJldHJlYXQgaW4gSW5kaWEhXQ0KPGh0dHBzOi8vdGFyaWRlcy5jb20v YmxvZy8yMDI0LTA1LTAxLXdlLWhvc3Qtb3VyLWZpcnN0LW9jYW1sLXJldHJlYXQtaW4taW5kaWE+ DQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0 byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0K ICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtS U1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVj ZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vic2NyaWJlDQogIHRvIHRoZSBb Y2FtbC1saXN0XS4NCg0KICBbQWxhbiBTY2htaXR0XQ0KDQoNCltzZW5kIG1lIGEgbWVzc2FnZV0g PG1haWx0bzphbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5vcmc+DQoNClt0aGUgYXJjaGl2ZV0g PGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duLz4NCg0KW1JTUyBmZWVkIG9mIHRoZSBh cmNoaXZlc10gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duL2N3bi5yc3M+DQoNCltj YW1sLWxpc3RdIDxodHRwczovL3N5bXBhLmlucmlhLmZyL3N5bXBhL2luZm8vY2FtbC1saXN0Pg0K DQpbQWxhbiBTY2htaXR0XSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC8+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 April 30 to May 07, 2= 024.

Deploying Ocsigen applications

Hans Ole Rafaelsen announced

I have written a short text on how Ocsigen applications might be packed in = order to be deployed to other nodes, that don't have your development environment installed.

Deploying Ocsigen<= /a>

If you happen to have a better way, or solutions to parts that I have not b= een able to solve, please let me know.

OCaml linting tools and techniques

Simmo Saan announced

Recently, I started wondering about linting tools for OCaml, so I went look= ing. This ended up being a quite extensive survey. Therefore, I decided to publish my findings in a blog post: OCaml linting tools and techniques.

In particular, I focused on linting with dune and Ppxlib because there's ma= ny variations out there. In the post I describe the technical choices that go into such linters and provide an overview of thos= e that work and how well. In the process of experimenting, I tried them out myself and published them as demos on GitHub: sim642/dune-lint-demo.

Feel free to let me know if I missed any tools out there or you have any qu= estions/comments. There isn't much information about this out there (and existing tool does it slightly differently), so I hope this = overview benefits others as well.

dune 3.15

Etienne Millon announced

We've released 3.15.1 and 3.15.2. The latter is particularly important for = Coq users since it fixes a regression in incremental compilation introduced in 3.13.0.

Here's the combined changelog:

Fixed

  • Fix overflow in sendfile stubs (copy of large files could fail or end w= ith truncated files) (#10333, @tonyfettes)
  • Fix crash when a rule with a directory target is disabled with `enabled= _if` (#10382, fixes #10310, @gridbugs)
  • melange: remove all restrictions around virtual libraries in Melange. T= hey may be used as otherwise in libraries and executables. (#10412, @anmont= eiro)
  • spawn: fix compatibility with RHEL7 (#10428, @emillon)
  • If no directory targets are defined, then do not evaluate `enabled_if` = (#10442, @rgrinberg)
  • Fix a bug where Coq projects were being rebuilt from scratch each time = the dependency graph changed. (#10446, fixes #10149, @alizter)

bitgenerators v0.1.0

zoj613 announced

Hi everyone. I'd like to announce the first release of bitgenerators. This library implements = an OCaml port of NumPy's bitgenerator interface for working with Psuedo-ran= dom numbers (see: https://numpy.org/doc/stable/reference/random/bi= t_generators/index.html).=20

  • This library implements several PRNGs that are exposed through this com= mon interface. It also implements an SeedSequence module for s= eeding PRNGs using high quality initial states based on the ideas discussed= here.
  • Morever, the module provides functions that help easily generate indepe= ndent and non-overlapping instances of a PRNG for use in parallel computati= on in a reproducible manner.
  • Implemented PRNG's include PCG64, SFC64, Philox4x64, Xoshiro256** and ChaCha. A= ll of which pass stringent statistical randomness tests like PractRand and = Testu01.
  • The API documentation can be found here
  • The source code is hosted on github: https://github.com/zoj613/bitgenerators
  • The README file contains examples of how the library can be used.

This is my first Ocaml project and therefore I would highly appreciate feed= back from experienced users regarding it's usefulness and possibly how it c= ould be improved (e.g. usability and performance). I tried to keep the impl= ementation as functional as possible, though not very sure if that's the be= st approach here.

checked_oint v0.1.0

Sima Kinsart announced

I'd like to announce a new library: checked_oint. It implements checked arithmet= ic for both signed and unsigned integers of 8, 16, 32, 64, and 128 bits. Un= like stdint or ocaml-integers, routines in this l= ibrary either return an option or raise an exception when a result of an ar= ithmetic operation cannot be represented in a desired integer type. In addi= tion, it contains abstractions for manipulating arbitrary integers and inte= ger types in a generic and type-safe manner, which I find quite useful for = compiler/interpreter implementations.

Usage example:

open Checked_oint

let () =3D
  let x =3D U8.of_int_exn 50 in
  let y =3D U8.of_int_exn 70 in
  assert (U8.equal (U=
8.add_exn x y) (U8.of_int_exn=
 120));
  assert (Option.is_none (U8.mul x y))

Feel free to ask any questions in the comments.

Liquidsoap 2.2.5 is out!

Romain Beauxis announced

Liquidsoap 2.2.5 has out! Full release details are here: https://gi= thub.com/savonet/liquidsoap/releases/tag/v2.2.5

Liquidsoap is a statically typed scripting general-purpose language with de= dicated operators and backend for all thing media, streaming, file generati= on, automation, HTTP backend and more.

This is hopefully the last release of the 2.2.x release= cycle before we kick off the new 2.3.x release cycle. We've g= ot a couple feature to bring there and then it'll be ready for more testing.

Liquidsoap 2.2.5 has some good bugfixes and some minor changes= but its most exciting feature is the autocue . It was developed in = close collaboration with several users. The feature is an opt-in crossfade = extension that computes the perfect crossfade transitions for your t= racks.

Over the years, it's been very interesting to maintain an application and l= anguage that is now pretty large and complex using the OCaml compiler and e= cosystem. It's amazing to see how easy it is now to build integrate new pac= kages. It also brings in some interesting, real-life challenges such as som= e very specific mem= ory issues.

Next, we would like to work on optimizing the language by introducing modul= es, to reduce the standard library's memory footprint, and to use the new O= Caml parallelism to fully leverage CPU and memory usage when streaming larg= e amount of data such as video streams.

OCaml 5.2.0 - First Release Candidate

octachron announced

The release of OCaml 5.2.0 is imminent. As a final step, we are publishing a release candidate to check that everyt= hing is in order before the release in the upcoming week(s).

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

Compared to the second beta, this release contains one small compiler-libs = printer fix and one configuration tweak.

The full change log for OCaml 5.2.0 is available on GitHub.=20 A short summary of the changes since the second beta release is also availa= ble below.

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.2.0~rc1

The source code for the release candidate is also directly available on:

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.2.0~rc1+options <=
;option_list>

where <option_list> is a space-separated list of o= caml-option-* packages. For instance, for a flambda and= no-flat-float-array switch:

opam switch create 5.2.0~rc1+flambda+nffa ocam=
l-variants.5.2.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-floa=
t-array

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

Changes since the second beta

  • #13130: Min= or fixes to pprintast for raw identifiers and local module ope= n syntax for types. (Chet Murthy, review by Gabriel Scherer)
  • #13100 Fix = detection of zstd when compiling with musl-gcc (D= avid Allsopp, review by Samuel Hym)

Announcing DBCaml, Silo, Serde Postgres and a new driver for p= ostgres

Pretty Printing in OCaml: Format Primer

Vladimir Keleshev announced

Hi folks, I wrote another monad Format tutorial.

h= ttps://keleshev.com/pretty-printing-in-ocaml-a-format-primer

Here's some of layouts that are covered:

[[],
 ["one", "two", "three"],
 ["one",
  "two",
  "three",
  "four",
  "five",
  "six",
  "seven",
  "eight",
  "nine",
  "ten"]]
[
  [],
  ["one", "two", "three"],
  [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
    "ten",
  ]
]
[ []
, [ "one", "two", "three" ]
, [ "one"
  , "two"
  , "three"
  , "four"
  , "five"
  , "six"
  , "seven"
  , "eight"
  , "nine"
  , "ten"
  ]
]

I tried to share some of my experience using Format. As a bonus=E2=80=94JSO= N pretty printer.

Send us Talk and Workshop Proposals for Fun OCaml 2024 in Ber= lin, September 16+17

Sabine Schmaltz announced

Fun OCaml 2024 is a 2 days open source hacking event dedicate= d to OCaml enthusiasts and professionals. We focus on the impact and potent= ial of OCaml for solving real-world problems and get together in Berlin for= a conference/hackathon over two days:

  • Day 1 (Monday, September 16): talks (which are live-streamed) and socia= lizing/hacking.
  • Day 2 (Tuesday, September 17): Workshops and hacking.

Topics we're interested in:

  • how you use OCaml in your business / in your projects
  • OCaml libraries, frameworks, and other Open Source projects built on OC= aml
  • hands-on demonstrations that encourage people to try things on the seco= nd day of the event or at home
  • seeing actual code and reasoning behind design decisions
  • experience reports

For more details, check out the website and the CFP linked from there:

https://fun-ocaml.com

Registration for attendees will be announced later this week in advance, bu= t is not open yet.

Thanks! :sparkles: :orange_heart: :camel:

OCaml Workshop 2024 at ICFP – announcement and call fo= r proposals

Sonja Heinze continued this thread

As mentioned above, the submission deadline for the OCaml Workshop at ICFP = is getting closer.

As a new note: A few weeks after the OCaml Workshop at ICFP, there'll be th= e new initiative Fun OC= aml in Berlin. It's super exciting to have three OCaml-related workshop= s (first the ML Workshop and the OCaml Workshop at ICFP, and then Fun OCaml= ) over the course of a few weeks, and we're also very much looking forward = to Fun OCaml!

We've already mentioned that when reading the submissions, as every year, w= e'll collaborate closely with the organizers of the ML workshop at ICFP, wh= ich intersects with the OCaml Workshop on talks with a strong theoretical a= nd research-oriented focus. We'll also collaborate with the organizers of F= un OCaml this year, which might intersect on talks with a strong practical = focus. With collaboration, we mainly mean potentially transferring submissi= ons from one workshop to another after checking in with the authors (side-n= ote: if you want your presentation to be taken into account for a potential= transfer, you need to respect the earlier of the two submission deadlines).

Best, and looking forward to this exciting year of OCaml workshops, @Armael and @pitag

Other OCaml News

From the ocaml.org blog

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

Old CWN

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

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

--=-=-=--