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=C+Y6ZirM; 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 BE2EE400A3 for ; Tue, 23 Dec 2025 11:01:08 +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=Nqyhu1mDxOTMdkMCGZhweMqrDx7mZA9LjtDqmCIiat4=; b=C+Y6ZirMJ/Of30gjgSXrS1U6uDjBHTbgW/mcLw1zkQzOqki2dExZIsG0 n39/hDiJarCTFIATXDf07w0xL3Jd2VmBDAsDPYgHVSNcPdTO8iN56sr8+ UHM1tcQEmYdNDLmb9FTECXj06MXQh+KPFs3V6anP9fCmcRwaMjaFceu40 o=; X-CSE-ConnectionGUID: x7o7zC6PQnORSQiZ+plgHA== X-CSE-MsgGUID: 15ADCRkCT26l/KGt2GVr2g== 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 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@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.21,170,1763420400"; d="scan'208,217";a="255707278" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 23 Dec 2025 12:01:06 +0100 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 28AAA827ED; Tue, 23 Dec 2025 12:01:06 +0100 (CET) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 990A7827CE for ; Tue, 23 Dec 2025 12:00:49 +0100 (CET) X-CSE-ConnectionGUID: JKCu7dn2RbivrITTh35uNQ== X-CSE-MsgGUID: a8RaD1fFSGablp+f8chyEQ== IronPort-SDR: 694a7660_R+06Rpt6235tW5sFLBPhb48XI9zdD2xT59JAgZ1gEetc7d4 8FuSh4nhq0l/R1gRBGMPG1BeZSEyhb2Ce9SYBMw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0HfBQBEdUppdyIeaIFaFggBAQsSDIISgTtbKBoBZgZfM?= =?us-ascii?q?wcISQSEVINPCI4dgRaQN4p7gWmBQiMSAwEDAQ0uARUKAQIEAQEDAQIBggyCd?= =?us-ascii?q?AIWjFMCHwYBBDQTAQIEAQEBAQMCAwEBAQEBAQEBAQ0BAQUBAQECAQECBAYBA?= =?us-ascii?q?hABQ0mGTw1JARABgWpRcYElAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAgQHAQEIgRYBAgYKEwEBJhIYIwMQBAEGAwIEDQE1F?= =?us-ascii?q?wEJCRQBAQMBgmmCIAICTwMEAQwGlAqaegVOeoEygQE7gVEBAQaBCD4CAQsCA?= =?us-ascii?q?gMBDgklAdoPgRpMCUSBCYVugkobASpJawEChEkJhDQnD4FVRIEVgigSOAdvg?= =?us-ascii?q?koXAQEBARiBEQEKBQICAQ4MDyQJgyWCaYImehQdhXoGglMbA4cIBoFIZCaHH?= =?us-ascii?q?YFEIgMmMywBVRMXCwcFXoEIAyovLW4yHYEjPhdzgRSDSR9oDgaBEYNPiQ8Pi?= =?us-ascii?q?WR0AwttPTcUG5UKQxkpJYE/ASUOVQkLIhUeCg0DCQgHBwIbBy4IBQsTCgwHA?= =?us-ascii?q?gMDLQQJBQUEBBEjEgsCCQItkloQFQMqd45ljhiTWR1tNAeEH4FeBgyJCIEmj?= =?us-ascii?q?h6HaYQEgVeLPJlUIphkIolegSYJglqVYBMNAQ2FKoF/IzwwPwEBARgBAgwHM?= =?us-ascii?q?xowIiENB4IfAQEyCQo8HA9XjUqBNAEDBYJDQX2DGjuBPL5xQjUCAQE4AgcBC?= =?us-ascii?q?gEBAwmFRR0BAYMyiFYPFwcFgUsBAQ?= IronPort-PHdr: A9a23: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 jH6cBtvUA5FwOJHikYjKLd2MrQd+InQvW3RHX4= IronPort-Data: A9a23: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 lTZiYyJrI9XhKIx/Qtdl6ZpJSwk IronPort-HdrOrdr: A9a23:QYzXzKyaPFqJd4NfdoUTKrPwE71zdoMgy1knxilNoH1uA66lfq WV9pkmPHDP6Qr5NEtNpTniAtjifZq/z/5ICOAqVN/IYOCMggWVxe9ZgrfK8nnJJGnV9+JW16 tsGpIObeHYPBxdlsi/xAG5Fr8bsb66GU2T9IPj80s= X-Talos-CUID: =?us-ascii?q?9a23=3AtVR5PGiB1EInZ3/bPhpjtrSvEDJuUF720SjcJRW?= =?us-ascii?q?CA2d3UpypdV/Lpb5Cqp87?= X-Talos-MUID: 9a23:fLcv+AZYiJwS5+BTvm/WjR07OulTzK2kDFhOn8UNu9ipDHkl X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.21,170,1763420400"; d="scan'208,217";a="255707109" X-MGA-submission: =?us-ascii?q?MDF4AK//ugR0TXgjghuqVrCEPbLL2pp/aRaNUq?= =?us-ascii?q?Kp1sE4qeZf2+DuH26XjRD9jbF8rpry4cGAjzcLxalJyrLq4wrJNOWhA1?= =?us-ascii?q?xzSYzkN8T4BJWN29+fel7uh3WRQaH1Fef+uxR+c4VCW0xYRe/eCsLYU0?= =?us-ascii?q?HmQ8iemUkMh2EqBS67+NqB2w=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; 23 Dec 2025 12:00:48 +0100 Received: from TM.local (unknown [82.66.240.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 90C371A381; Tue, 23 Dec 2025 12:00:47 +0100 (CET) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 23 Dec 2025 12:00:45 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Dec 23 12:00:47 2025 +0100 (CET)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.500000, queueID=AF3911A38A 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: 19417 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 ZWsgb2YgRGVjZW1iZXIgMTYgdG8gMjMsDQoyMDI1Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCkNhbXAs IHRoZSBDYW1sIEFtcA0KQWhyZWZzIEdyYW50IFByb2dyYW0gZm9yIE9DYW1sDQpDYWxsIGZvciBD b250cmlidXRpb25zOiBDYW1sIGluIHRoZSBDYXBpdGFsIChGZWIgMjYpDQpEcmVhbSDigJMgbG9v a2luZyBmb3IgbWFpbnRhaW5lcnMgdG8gdGFrZSBvd25lcnNoaXANClFDaGVjayAwLjkwOiBUaGUg R3JlYXQgUmVuYW1pbmcNCk90aGVyIE9DYW1sIE5ld3MNCk9sZCBDV04NCg0KDQpDYW1wLCB0aGUg Q2FtbCBBbXANCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2luYm94LmNpLmRldi9jYW1sLWxpc3Qv Qjc4NTI4MjUtMzM1RS00RjNGLTg3QzAtN0QxMEYxNDA5MERBQG1waS1zd3Mub3JnLz4NCg0KDQpB bmRyZWFzIFJvc3NiZXJnIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGFw cHkgdG8gc2hhcmUg4oCcQ2FtcOKAnSwgdGhlIENhbWwgQW1wIOKAlCBhbiBvbGQtc2Nob29sIG11 c2ljIHBsYXllcg0KICBoZWF2aWx5IGluc3BpcmVkIGJ5IGdvb2Qgb2xkIFdpbmFtcCwgd2l0aCBh IGZvY3VzIG9uIGRlY2VudCBtdXNpYw0KICBsaWJyYXJ5IGFuZCBwbGF5bGlzdCBoYW5kbGluZy4N Cg0KICBJIHdhcyBmZWQgdXAgd2l0aCBXaW5hbXAgYmVpbmcgZGVhZCBhbmQgbGFja2luZyBmZWF0 dXJlcyBJIHdhbnRlZCwgc28NCiAgSSB3ZW50IGludG8gZnVsbC1vbiBuZXJkIG1vZGUgYW5kIGlt cGxlbWVudGVkIG15IG93biBvcGluaW9uYXRlZA0KICByZXBsYWNlbWVudCwgYWxsIGluIE9DYW1s IHVzaW5nIHRoZSBSYXlsaWIgbGlicmFyeToNCg0KICA8aHR0cHM6Ly9tcGktc3dzLm9yZy9+cm9z c2JlcmcvY2FtcC8+DQoNCiAgSWYgeW91IGhhdmUgbm90IHlldCBiZWVuIHN1Y2tlZCBpbiBieSB0 aGUgc3RyZWFtaW5nIGNhcnRlbHMsIHlvdSBtaWdodA0KICBmaW5kIGl0IHVzZWZ1bC4NCg0KICDi gKIgUnVucyBvbiBXaW5kb3dzLCBNYWMsIGFuZCBMaW51eA0KICDigKIgU3VwcG9ydCBmb3IgV0FW LCBGTEFDLCBNUDMsIE9HRywgUU9BLCBNT0QsIGFuZCBYTQ0KICDigKIgQWR2YW5jZWQgbXVzaWMg bGlicmFyeSBtYW5hZ2VtZW50IHdpdGggbWFueSBicm93c2UgYW5kIHNlYXJjaA0KICAgIGZlYXR1 cmVzDQogIOKAoiBFbGFib3JhdGUgcGxheWxpc3QgbWFuaXB1bGF0aW9uIGFuZCBxdWVyeS1iYXNl ZCDigJxzbWFydOKAnSBwbGF5bGlzdHMNCiAg4oCiIEFuaW1hdGVkIHVzZXIgaW50ZXJmYWNlIHN0 eWxlZCBhZnRlciBoaWZpIHdoZW4gaXQgc3RpbGwgbG9va2VkIGdvb2QNCiAgICAobm8gY29ybmVy cyB3ZXJlIHJvdW5kZWQgaW4gdGhlIG1ha2luZyBvZiB0aGlzIGFwcCkNCg0KICBFbmpveSwgL0Fu ZHJlYXMNCg0KDQpBaHJlZnMgR3JhbnQgUHJvZ3JhbSBmb3IgT0NhbWwNCuKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2Nh bWwub3JnL3QvYWhyZWZzLWdyYW50LXByb2dyYW0tZm9yLW9jYW1sLzE3NjA0LzE+DQoNCg0KTG91 aXMgUm9jaMOpIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgQWhyZWZzIGlzIGV4Y2l0ZWQgdG8gYW5u b3VuY2UgYSBuZXcgKkFocmVmcyBHcmFudCBQcm9ncmFtIGZvciBPQ2FtbCoNCiAgdG8gc3VwcG9y dCBwcm9qZWN0cyBpbiB0aGUgT0NhbWwgZWNvc3lzdGVtLiBUaGlzIGVmZm9ydCBjb21lcyBpbg0K ICBhZGRpdGlvbiB0byB0aGUgb3RoZXIgc3BvbnNvcnNoaXBzIHdlIGRvIChzdWNoIGFzIHRoZSBb T0NTRl0sIHRoZQ0KICBbSUNGUF0gYW5kIFtGdW4gT0NhbWxdIGNvbmZlcmVuY2VzLCBbZ2l0aHVi IHNwb25zb3JpbmddLCBhbmQgW3ZhcmlvdXMNCiAgb3RoZXIgcHJvamVjdHNdKSBXZSBhcmUgYWxs b2NhdGluZyBtb25leSB0byBmdW5kIG9uZSBvciBtdWx0aXBsZQ0KICBpbml0aWF0aXZlcyB0aGF0 IGhlbHAgYWR2YW5jZSBPQ2FtbCBhbmQgaXRzIHRvb2xpbmcuDQoNCiAgWW91IGNhbiBsZWFybiBt b3JlIGFib3V0IG91ciBlbmdpbmVlcmluZyBjdWx0dXJlIGFuZCBvcGVuc291cmNlDQogIHN1cHBv cnQgd29yayBhdCBbaHR0cHM6Ly9haHJlZnMuY29tL3RlY2hdDQoNCg0KW09DU0ZdIDxodHRwczov L29jYW1sLXNmLm9yZy8+DQoNCltJQ0ZQXSA8aHR0cHM6Ly9pY2ZwMjUuc2lncGxhbi5vcmcvPg0K DQpbRnVuIE9DYW1sXSA8aHR0cHM6Ly9mdW4tb2NhbWwuY29tLz4NCg0KW2dpdGh1YiBzcG9uc29y aW5nXSA8aHR0cHM6Ly9naXRodWIuY29tL29yZ3MvYWhyZWZzL3Nwb25zb3Jpbmc+DQoNClt2YXJp b3VzIG90aGVyIHByb2plY3RzXSA8aHR0cHM6Ly9haHJlZnMuY29tL3RlY2g+DQoNCltodHRwczov L2FocmVmcy5jb20vdGVjaF0gPGh0dHBzOi8vYWhyZWZzLmNvbS90ZWNoPg0KDQpDYWxsIGZvciBB cHBsaWNhdGlvbnMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFdlIGludml0ZSBpbmRpdmlkdWFscywgdGVhbXMsIGFu ZCBvcmdhbml6YXRpb25zIHdvcmtpbmcgd2l0aCBPQ2FtbCB0bw0KICBzdWJtaXQgcHJvcG9zYWxz IGZvciBmdW5kaW5nLiBPdXIgZ29hbCBpcyB0byBzdXBwb3J0IG1lYW5pbmdmdWwsDQogIHByYWN0 aWNhbCBpbXByb3ZlbWVudHMgdG8gdGhlIGVjb3N5c3RlbSwgd2hldGhlciB0aHJvdWdoIG5ldyB0 b29scywNCiAgbGlicmFyaWVzLCBpbmZyYXN0cnVjdHVyZSwgZWR1Y2F0aW9uLCBvciBsb25n4oCR dGVybSBtYWludGVuYW5jZSBvZg0KICBleGlzdGluZyBwcm9qZWN0cy4NCg0KICBBcHBsaWNhdGlv bnMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0aHJvdWdoIFt0aGlzIGdvb2dsZSBmb3JtXS4NCg0KICBU aGUgZGVhZGxpbmUgZm9yIHN1Ym1pc3Npb25zIGlzIEphbnVhcnkgMjB0aCAyMDI2Lg0KDQoNClt0 aGlzIGdvb2dsZSBmb3JtXQ0KPGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2Zvcm1zL2QvZS8xRkFJ cFFMU2NVTkFBbnpZZXpoTDZIUnJhVWNia3lfVkJrOWtsTGRoODZURkpXQkk4VEtocHFjdy92aWV3 Zm9ybT4NCg0KDQpXaGF0IFdlIEFyZSBMb29raW5nIEZvcg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgV2Ug d2VsY29tZSBwcm9wb3NhbHMgdGhhdDoNCg0KICDigKIgU3RyZW5ndGhlbiB0aGUgT0NhbWwgY29t cGlsZXIgb3IgY29yZSBsaWJyYXJpZXMNCiAg4oCiIEltcHJvdmUgZGV2ZWxvcGVyIGV4cGVyaWVu Y2UgKHRvb2xpbmcsIGRvY3VtZW50YXRpb24sIGRlYnVnZ2luZywNCiAgICBwcm9maWxpbmcsIHBh Y2thZ2luZywg4oCmKQ0KICDigKIgRXhwYW5kIHRoZSBPQ2FtbCBlY29zeXN0ZW0gdGhyb3VnaCBu ZXcgbGlicmFyaWVzIG9yIG1vZGVybml6YXRpb24gb2YNCiAgICBrZXkgZGVwZW5kZW5jaWVzDQog IOKAoiBFbmhhbmNlIHJlbGlhYmlsaXR5LCBwZXJmb3JtYW5jZSwgb3Igc2FmZXR5IG9mIE9DYW1s 4oCRYmFzZWQgc3lzdGVtcw0KICDigKIgU3VwcG9ydCBlZHVjYXRpb24sIGNvbW11bml0eSBpbmZy YXN0cnVjdHVyZSwgb3IgbG9uZ+KAkXRlcm0NCiAgICBtYWludGVuYW5jZQ0KDQogIEJvdGggc21h bGwgYW5kIGxhcmdlIGluaXRpYXRpdmVzIGFyZSB3ZWxjb21lLiBXZSB3aWxsIHByaW9yaXRpemUN CiAgcHJvamVjdHMgdGhhdCB3aWxsIGhhdmUgbGFzdGluZyBpbXBhY3QgYW5kIHdpbGwgYmUgbWFp bnRhaW5lZC4NCg0KICBUaGUgc2VsZWN0aW9uIG9mIHByb3Bvc2FsIHdpbGwgbmVjZXNzYXJpbHkg YmUgc3ViamVjdGl2ZSBhbmQgZGVwZW5kIG9uDQogIG91ciBwcmlvcml0aWVzIGFuZCBpbnRlcmVz dHMuDQoNCg0KRnVuZGluZw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgQXBwbGljYW50cyBt YXkgcmVxdWVzdCB1cCB0byAqVVNEIDUwLDAwMCogaW4gc3VwcG9ydCBwZXIgcHJvamVjdC4gV2UN CiAgbWF5IGF3YXJkIGEgc2luZ2xlIHByb2plY3Qgb3IgZGlzdHJpYnV0ZSBhbW9uZyBzZXZlcmFs IHByb3Bvc2Fscy4NCg0KDQpIb3cgdG8gQXBwbHkNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjA0KDQogIFlvdXIgYXBwbGljYXRpb24gc2hvdWxkIGZvbGxvdyB0aGUgZm9ybWF0 IGJlbG93IGFuZCBiZSBzZW50IHRocm91Z2gNCiAgW3RoaXMgZ29vZ2xlIGZvcm1dLg0KDQogIFBs ZWFzZSBiZSBzaG9ydCBhbmQgdG8gdGhlIHBvaW50IGluIHlvdXIgYW5zd2VyczsgZm9jdXMgcHJp bWFyaWx5IG9uDQogIHRoZSB3aGF0IGFuZCBob3csIG5vdCBzbyBtdWNoIG9uIHRoZSB3aHkuIElm IEVuZ2xpc2ggaXNuJ3QgeW91ciBmaXJzdA0KICBsYW5ndWFnZSwgZG9uJ3Qgd29ycnkg4oCUIG91 ciByZXZpZXdlcnMgZG9uJ3QgY2FyZSBhYm91dCBzcGVsbGluZw0KICBlcnJvcnMsIG9ubHkgYWJv dXQgZ3JlYXQgaWRlYXMuIFlvdSBjYW4gYmUgYXMgdGVjaG5pY2FsIGFzIHlvdSBuZWVkIHRvDQog IGJlLiBEbyBzdGF5IHNwZWNpZmljLg0KDQoNClt0aGlzIGdvb2dsZSBmb3JtXQ0KPGh0dHBzOi8v ZG9jcy5nb29nbGUuY29tL2Zvcm1zL2QvZS8xRkFJcFFMU2NVTkFBbnpZZXpoTDZIUnJhVWNia3lf VkJrOWtsTGRoODZURkpXQkk4VEtocHFjdy92aWV3Zm9ybT4NCg0K4peKICoxLiBDb250YWN0IElu Zm9ybWF0aW9uKg0KDQogIOKAoiAqTmFtZSoNCiAg4oCiICpPcmdhbml6YXRpb24qIChpZiBhcHBs aWNhYmxlKQ0KICDigKIgKkVtYWlsIGFkZHJlc3MqDQogIOKAoiAqQ291bnRyeSoNCg0KDQril4og KjIuIEdlbmVyYWwgUHJvamVjdCBJbmZvcm1hdGlvbioNCg0KICDigKIgKlRpdGxlKg0KICDigKIg KkFic3RyYWN0KiAodXAgdG8gMTIwMCBjaGFyYWN0ZXJzKSBFeHBsYWluIHRoZSAqd2hvbGUgcHJv amVjdCogYW5kDQogICAgIGl0cyBleHBlY3RlZCBvdXRjb21lKHMpLg0KICDigKIgKllvdXJzZWxm IG9yIHRoZSB0ZWFtKiAoMjUwMCBjaGFyYWN0ZXJzKSBXaG8gaXMgcGFydGljaXBhdGluZz8gSGF2 ZQ0KICAgICB5b3UgYmVlbiBpbnZvbHZlZCB3aXRoIHNpbWlsYXIgb3IgcmVsYXRlZCBwcm9qZWN0 cz8gUGxlYXNlIHByb3ZpZGUNCiAgICAgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhbmQgZGVzY3Jp YmUgeW91ciBwYXN0IGNvbnRyaWJ1dGlvbnMuDQogIOKAoiAqV2Vic2l0ZSogKGlmIGFueSkNCiAg 4oCiICpMaWNlbnNlKiBVbmRlciB3aGljaCBsaWNlbnNlIHdpbGwgdGhlIHByb2plY3QgYmUgZGlz dHJpYnV0ZWQ/IEl0DQogICAgICptdXN0KiBiZSBhbiBvcGVuIHNvdXJjZSBsaWNlbnNlLg0KDQoN CuKXiiAqMy4gUmVxdWVzdGVkIFN1cHBvcnQqDQoNCiAg4oCiICpSZXF1ZXN0ZWQgQW1vdW50KiAo dXAgdG8gVVNEIDUwLDAwMCkNCiAg4oCiICpCdWRnZXQgYW5kIEJyZWFrZG93biogKHVwIHRvIDI1 MDAgY2hhcmFjdGVycykgRXhwbGFpbiB3aGF0IHRoZQ0KICAgICBidWRnZXQgd2lsbCBiZSB1c2Vk IGZvci4gQXJlIHRoZXJlIG90aGVyIGZ1bmRpbmcgc291cmNlcz8gSW5jbHVkZSBhDQogICAgIGJy ZWFrZG93biBvZiB0YXNrcywgZXN0aW1hdGVkIGVmZm9ydCwgYW5kIGV4cGxpY2l0IHJhdGVzLg0K ICDigKIgKkRlc2NyaWJlIHlvdXIgcHJvamVjdCBhbmQgaXRzIHRlY2huaWNhbCBjaGFsbGVuZ2Vz KiAodXAgdG8gNTAwMA0KICAgICBjaGFyYWN0ZXJzKSBXaGF0IGFyZSBzaWduaWZpY2FudCB0ZWNo bmljYWwgY2hhbGxlbmdlcyB5b3UgZXhwZWN0IHRvDQogICAgIHNvbHZlIGR1cmluZyB0aGUgcHJv amVjdCwgaWYgYW55PyBDb21wYXJlIHlvdXIgb3duIHByb2plY3Qgd2l0aA0KICAgICBleGlzdGlu ZyBvciBoaXN0b3JpY2FsIGVmZm9ydHMuIEUuZy4gd2hhdCBpcyBuZXcsIG1vcmUgdGhvcm91Z2gg b3INCiAgICAgb3RoZXJ3aXNlIGRpZmZlcmVudC4NCiAg4oCiICpFY29zeXN0ZW0gYW5kIE91dHJl YWNoKiAodXAgdG8gMTIwMCBjaGFyYWN0ZXJzKSBEZXNjcmliZSB0aGUNCiAgICAgcHJvamVjdCBl Y29zeXN0ZW0gYW5kIGhvdyB5b3Ugd2lsbCBlbmdhZ2Ugd2l0aCByZWxldmFudCBhY3RvcnMgb3IN CiAgICAgcHJvbW90ZSB0aGUgYWRvcHRpb24uDQoNCg0KUXVlc3Rpb25zDQrilYzilYzilYzilYzi lYzilYzilYzilYzilYwNCg0KICBJZiB5b3UgaGF2ZSBxdWVzdGlvbnMgcHJpb3IgdG8gc3VibWl0 dGluZyBhbiBhcHBsaWNhdGlvbiwgZmVlbCBmcmVlIHRvDQogIHJlYWNoIG91dCBhdCBgZ3JhbnRz QGFocmVmcy5jb20nLg0KDQogIFdlIGxvb2sgZm9yd2FyZCB0byBzdXBwb3J0IHRoZSB3b3JrIHRo YXQgd2lsbCBtb3ZlIHRoZSBPQ2FtbCBlY29zeXN0ZW0NCiAgZm9yd2FyZC4NCg0KDQpDYWxsIGZv ciBDb250cmlidXRpb25zOiBDYW1sIGluIHRoZSBDYXBpdGFsIChGZWIgMjYpDQrilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6 Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2NhbGwtZm9yLWNvbnRyaWJ1dGlvbnMtY2FtbC1pbi10aGUt Y2FwaXRhbC1mZWItMjYvMTc2MDYvMT4NCg0KDQoiQWxpc3RhaXIgTydCcmllbiBhbm5vdW5jZWQN CuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhleSBhbGwg8J+RiywNCg0KICBBIHF1aWNr IGZvbGxvdy11cCBvbiBDYW1sIGluIHRoZSBDYXBpdGFsOiB0aGUgZmlyc3QgbWVldHVwIGlzIG5v dw0KICBjb25maXJtZWQg8J+OiS4NCg0KICAqV2hlbio6IFRodXJzZGF5IDI2dGggRmVicnVhcnkg MjAyNiwgNjozMC04OjMwcG0NCg0KICAqV2hlcmUqOiBJbXBlcmlhbCBDb2xsZWdlIExvbmRvbiwg Rmxvd2VycyBCdWlsZGluZw0KDQogIFRoYW5rcyB0byBldmVyeW9uZSB3aG8gaGVscGVkIHNldHRs ZSBvbiBhIGRhdGUhDQoNCg0KQ2FsbCBmb3IgY29udHJpYnV0aW9ucw0K4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg V2XigJlyZSBzdGlsbCBsb29raW5nIGZvciBwcmVzZW50ZXJzISBUYWxrcyBhcmUgd29ya3Nob3At c3R5bGU6IGFueXRoaW5nDQogIGZyb20gYW4gYWNjZXNzaWJsZSBpbnRyb2R1Y3Rpb24gb2YgeW91 ciB3b3JrIG9yIHJlc2VhcmNoLCBhIGRlZXAgZGl2ZQ0KICBpbnRvIHlvdXIgbGlicmFyeSwgYSBs aXZlIGRlbW8sIG9yIGEgdHV0b3JpYWwuDQoNCiAgSWYgeW914oCZZCBsaWtlIHRvIGdpdmUgYSB0 YWxrLCBwbGVhc2UgbWVzc2FnZSBtZSBvciBAZ2lsdGhvIGRpcmVjdGx5DQogIHdpdGg6DQogIOKA oiBBIHRpdGxlDQogIOKAoiBTaG9ydCBhYnN0cmFjdA0KICDigKIgRXhwZWN0ZWQgdGltZSBzbG90 DQoNCiAgKkRlYWRsaW5lKjogMXN0IEZlYnJ1YXJ5IDIwMjYNCg0KICBXZeKAmXZlIHNldCBhIGRl YWRsaW5lIHNvIHdlIGhhdmUgZW5vdWdoIHRpbWUgdG8gZmluYWxpemUgdGhlIHByb2dyYW1tZQ0K ICBhbmQgaGFuZGxlIHRoZSBwcmFjdGljYWwgb3JnYW5pc2F0aW9uIChyb29tIHNldHVwLCBzY2hl ZHVsZSwNCiAgYW5ub3VuY2VtZW50cywgZXRjLikuDQoNCg0KQ2FsbCBmb3IgcGFydGljaXBhdGlv bg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWMDQoNCiAgWW914oCZcmUgdmVyeSB3ZWxjb21lIHRvIGF0dGVuZCBldmVuIGlm IHlvdeKAmXJlIG5vdCBwcmVzZW50aW5nLiBJZiB5b3UNCiAgcGxhbiB0byBhdHRlbmQsIHBsZWFz ZSByZWdpc3RlciBbaGVyZV0uDQoNCg0KICBNYW55IHRoYW5rcyB0byBJbXBlcmlhbCBDb2xsZWdl IGZvciBob3N0aW5nIHVzIGFuZCBPQ2FtbCBTb2Z0d2FyZQ0KICBGb3VuZGF0aW9uIGZvciBmdW5k aW5nIHVzISEgOnJhaXNlZF9oYW5kczoNCg0KICBBbGlzdGFpciAmIFNhY2hhDQoNCg0KW2hlcmVd DQo8aHR0cHM6Ly93d3cuZXZlbnRicml0ZS5zZy9lL2NhbWwtaW4tdGhlLWNhcGl0YWwtZmViLTIw MjYtdGlja2V0cy0xOTc3NzMwNjE0NTA3P2FmZj1vZGR0ZHRjcmVhdG9yPg0KDQoNClNhY2hhIEF5 b3VuIGxhdGVyIGFkZGVkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJZiB0aGVyZSBhcmUgYW55IGFkZGl0 aW9uYWwgcXVlc3Rpb25zIG9uIHJlZ2lzdHJhdGlvbiwgb3JnYW5pc2F0aW9uLA0KICBsb2dpc3Rp Y3MsIGZlZWwgZnJlZSB0byBhc2sgcXVlc3Rpb25zIGluIHRoaXMgdGhyZWFkLCBvciBpbiB0aGUN CiAgW2RlZGljYXRlZCBadWxpcCBjaGFubmVsXSgNCiAgPGh0dHBzOi8vb2NhbWwuenVsaXBjaGF0 LmNvbS8jbmFycm93L2NoYW5uZWwvNTUzMzc1LUNhbWwtSW4tVGhlLUNhcGl0YWw+KQ0KICDwn5mC DQoNCg0KRHJlYW0g4oCTIGxvb2tpbmcgZm9yIG1haW50YWluZXJzIHRvIHRha2Ugb3duZXJzaGlw DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0 cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2RyZWFtLWxvb2tpbmctZm9yLW1haW50YWluZXJzLXRv LXRha2Utb3duZXJzaGlwLzE3NjA3LzE+DQoNCg0KQW50b24gQmFjaGluIGFubm91bmNlZA0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSADQoNCiAgKltEcmVhbV0qLCB0aGUgV2ViIGZyYW1ld29yaywgaXMgbG9va2luZyBmb3Ig YSBtYWludGVuYW5jZSB0ZWFtIQ0KDQogIEkgb3JpZ2luYWxseSB3cm90ZSBEcmVhbSBpbiAyMDIx LCBhbmQgYWN0aXZlbHkgbWFpbnRhaW5lZCBpdCBmb3INCiAgc2V2ZXJhbCB5ZWFycy4gSXQgaGFz IGdvdHRlbiBtYW55IGdyZWF0IGNvbnRyaWJ1dGlvbnMgZnJvbSBvdGhlcg0KICBhdXRob3JzIHNp bmNlIGl0cyBmaXJzdCByZWxlYXNlLCBmb3Igd2hpY2ggSSBhbSB2ZXJ5IGdyYXRlZnVsIQ0KDQog IEF0IHRoZSBwcmVzZW50IHRpbWUsIEkgYW0gbm8gbG9uZ2VyIGluIGEgcG9zaXRpb24gdG8gc3Vz dGFpbmFibHkNCiAgbWFpbnRhaW4gRHJlYW0uIEnigJlkIGxpa2UgdG8geWllbGQgaXQgdG8gb25l IG9yIHNldmVyYWwgbWFpbnRhaW5lcnMsDQogIHdobyB3b3VsZCBoYXZlIHRoZSBhYmlsaXR5IHRv IHB1cnN1ZSB0aGVpciB2aXNpb24sIGJyaW5nIHRoZWlyIGlkZWFzLA0KICBjcmVkaWJseSBzZWVr IGZ1bmRpbmcgZm9yIHdvcmsgdGhhdCBzdWJzdGFudGlhbGx5IGFmZmVjdHMgaXQsIGFuZCBjaXRl DQogIGl0IG9uIHRoZWlyIHJlc3VtZSBvciBlbHNld2hlcmUuIEluIG90aGVyIHdvcmRzLCB0byB0 YWtlIG93bmVyc2hpcCBvZg0KICBpdC4gSSB3b3VsZCBzdGF5IG9uIGluIGFuIGFkdmlzb3J5IHJv bGUsIHRvIHRyYW5zZmVyIGtub3dsZWRnZSwgaGVscA0KICBuZWdvdGlhdGUsIGFuZCBhc3Npc3Qg aW4gdmFyaW91cyB3YXlzLCBhcyBhIHZvbHVudGVlci4NCg0KICBXZeKAmXZlIGFscmVhZHkgYmVl biBoYXZpbmcgRHJlYW0gY29tbXVuaXR5IGRldmVsb3BtZW50IG1lZXRpbmdzIG92ZXIgb24NCiAg RGlzY29yZCBzaW5jZSBBdWd1c3QsIHdoaWNoIGhhdmUgYmVlbiB2ZXJ5IGhlbHBmdWwuIExhc3Qg bW9udGgsIEkNCiAgdHJhbnNmZXJyZWQgRHJlYW0gdG8gYW4gb3JnIG9uIEdpdEh1Yi4gSXTigJlz IHJlYWR5IGZvciB0aGUgbmV4dCBzdGVwDQogIDpzbGlnaHRfc21pbGU6DQoNCiAgRHJlYW0gaGFz IGEgdmVyeSBsYXJnZSBhbW91bnQgb2YgaW50ZXJlc3Rpbmcgd29yayB0byBkby4gVGhlIG9yaWdp bmFsDQogIG1vdGl2YXRpb24gd2FzIG5vdCBvbmx5IHRvIGNyZWF0ZSBhIG1vZGVybiwgaGlnaGx5 IGVyZ29ub21pYyBXZWINCiAgZnJhbWV3b3JrIGluIGEgbWluaW1hbCBzZW5zZSwgYnV0IHRvIGRv IGEgd2hvbGUgdG91ciB0aHJvdWdoIHRoZSBPQ2FtbA0KICBXZWIgZGV2ZWxvcG1lbnQgZWNvc3lz dGVtIGFuZCBhZGRyZXNzIGV2ZXJ5IG90aGVyIHBsYWNlIHdoZXJlIGEgbWFqb3INCiAgbGlicmFy eSBpcyBtaXNzaW5nLCBvciB3aGVyZSBxdWFsaXR5IG9mIGxpZmUgY2FuIGJlIGltcHJvdmVkLiBT ZWUgdGhlDQogIFtyb2FkbWFwXSBmb3Igc29tZSBvZiB0aGUgbWFueSBpZGVhcy4NCg0KICBJbiBm YWN0LCB3ZSBoYWQgc3RhcnRlZCB3b3JraW5nIG9uIHRoaXMgYmFjayBpbiAyMDIyIHdpdGggYSBz bWFsbCB0ZWFtDQogIG9mIHBlb3BsZSwgYW5kIGNyZWF0ZWQgYW4gT0F1dGggbGlicmFyeS4gVGhh dCBlbnRlcnByaXNlIHdhcw0KICB1bmZvcnR1bmF0ZWx5IHRlcm1pbmF0ZWQgYnkgZXZlbnRzIG91 dHNpZGUgb3VyIGNvbnRyb2wsIGFuZCB0aGUNCiAgbG9naWNhbCBzdGVwIG5vdyBpcyBmb3IgbWUg dG8geWllbGQgY29udHJvbCBvZiBEcmVhbSBpdHNlbGYgdG8gYQ0KICBkaWZmZXJlbnRseSBzdHJ1 Y3R1cmVkIHRlYW0sIGZvciBpdHMgbmF0dXJhbCBkZXZlbG9wbWVudA0KICA6c2xpZ2h0X3NtaWxl Og0KDQogIElmIHlvdeKAmXJlIGludGVyZXN0ZWQsIHBsZWFzZSBETSBtZSBoZXJlIG9uIERpc2N1 c3MhIElmIHlvdSBoYXZlIHN1Y2gsDQogIHBsZWFzZSBsaW5rIHlvdXIgcHJvamVjdHMgcmVsYXRl ZCB0byBXZWIgZGV2ZWxvcG1lbnQsIG9yIHdoZXJlIHlvdQ0KICBoYXZlIGJlZW4gYSBtYWludGFp bmVyLiBMZXQgbWUga25vdyBpZiB5b3XigJlyZSBhIHVzZXIgb2YgRHJlYW0sIGFuZA0KICB3aGF0 IHlvdeKAmWQgbGlrZSB0byBzZWUgaW4gV2ViIGRldmVsb3BtZW50IGluIE9DYW1sLg0KDQogIFRo YW5rIHlvdSENCg0KDQpbRHJlYW1dIDxodHRwczovL2dpdGh1Yi5jb20vY2FtbHdvcmtzL2RyZWFt Pg0KDQpbcm9hZG1hcF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jYW1sd29ya3MvZHJlYW0vd2lraS9S b2FkbWFwPg0KDQoNClFDaGVjayAwLjkwOiBUaGUgR3JlYXQgUmVuYW1pbmcNCuKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1 c3Mub2NhbWwub3JnL3QvYW5uLXFjaGVjay0wLTkwLXRoZS1ncmVhdC1yZW5hbWluZy8xNzYxMy8x Pg0KDQoNCkphbiBNaWR0Z2FhcmQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJdCBpcyBt eSBwbGVhc3VyZSB0byBhbm5vdW5jZSByZWxlYXNlIDAuOTAgb2YgdGhlIFFDaGVjaw0KICBwYWNr YWdlcy4gUUNoZWNrIGlzIGFuIE9DYW1sIGxpYnJhcnkgZm9yIHJhbmRvbWl6ZWQgcHJvcGVydHkt YmFzZWQNCiAgdGVzdGluZyBpbiB0aGUgc3R5bGUgb2YgSGFza2VsbCdzIFF1aWNrQ2hlY2suDQoN CiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3JlbGVhc2VzL3RhZy92MC45MD4N Cg0KICBJdCBoYXMgYmVlbiBvdmVyIDEyIHllYXJzIGFuZCA0MCByZWxlYXNlcyBzaW5jZSBAYy1j dWJlIHJlbGVhc2VkDQogIHZlcnNpb24gMC4xIGJhY2sgaW4gT2N0b2JlciAyMDEzLiBPdmVyIHRo aXMgcGVyaW9kIFFDaGVjayBoYXMgZ3Jvd24NCiAgb3JnYW5pY2FsbHkNCiAg4oCiIHdpdGggbmV3 IGNvbWJpbmF0b3JzIG9uIGEgImJ5LW5lZWQiIGJhc2lzIGFuZA0KICDigKIgd2l0aCBhIHNlcGFy YXRlIGBRQ2hlY2syJyBtb2R1bGUgb2ZmZXJpbmcgZ2VuZXJhdG9ycyB3aXRoIGludGVncmF0ZWQN CiAgICBzaHJpbmtpbmcuDQoNCiAgVGhpcyBoYXMgdW5mb3J0dW5hdGVseSByZXN1bHRlZCBpbiBh IGJpdCBvZiBhIG5hbWluZyBtZXNzIHdpdGgNCiAgaW5jb25zaXN0ZW50IGdlbmVyYXRvciBuYW1l cy4gRm9yIGV4YW1wbGUsIHRoZSAobm93IGRlcHJlY2F0ZWQpDQogIGBzbWFsbF9pbnQnIGNvbWJp bmF0b3Igd2lsbCBnZW5lcmF0ZSBvbmx5IHNtYWxsIG5vbi1uZWdhdGl2ZSBudW1iZXJzLA0KICBh bmQgYSBjb21iaW5hdG9yIGZvciBnZW5lcmF0aW5nIHBvc2l0aXZlIGludGVnZXJzIHVuaWZvcm1s eSBpcyBuYW1lZA0KICBlaXRoZXIgYHBpbnQnIG9yIGBwb3NfaW50JyBhY3Jvc3MgZGlmZmVyZW50 IFFDaGVjayBtb2R1bGVzLg0KDQogIFRoZSAwLjkwIHJlbGVhc2UgdGh1cyB0YWtlcyBvbiBhIGNs ZWFudXAgdW5kZXIgdGhlIGhlYWRpbmcgIlRoZSBHcmVhdA0KICBSZW5hbWluZyIuICBUbyBndWlk ZSB0aGUgcmVuYW1pbmcgcHJvY2Vzcywgd2UgaGF2ZSBhc3NlbWJsZWQgYSBsaXN0IG9mDQogIGhh cmQtbGVhcm5lZCBuYW1pbmcgcHJpbmNpcGxlczoNCg0KICDigKIgR2VuZXJhdG9yIG5hbWVzIHNo b3VsZCBhbGlnbiB3aXRoIHR5cGUgbmFtZXMgKGBib29sJywgYGNoYXInLCDigKYNCiAgICBgbGlz dCcsIGBvcHRpb24nKSB0byBiZSBhcyBwcmVkaWN0YWJsZSBhcyBwb3NzaWJsZQ0KICDigKIgV2Ug c2hvdWxkIGhhdmUgc2hvcnQsIHVucGFyYW1ldGVyaXplZCBnZW5lcmF0b3JzIChgaW50JywgYHN0 cmluZycsDQogICAg4oCmKSB0byBsb3dlciB0aGUgYmFycmllciB0byBlbnRyeQ0KICDigKIgU3Bl Y2lhbGl6ZWQgZ2VuZXJhdG9ycyBhbHNvIHN0YXJ0IHdpdGggdGhlIHR5cGUgbmFtZSwgYnV0IHVz ZSBhDQogICAgY29uc2lzdGVudCBzdWZmaXggKGBfcG9zJywgYF9uZWcnLCBgX3NpemUnLCBgX29m Jywg4oCmKSB0byBoZWxwIGZpbmQNCiAgICB0aGVtLCBlLmcuLCB3aXRoIHRhYi1jb21wbGV0aW9u DQogIOKAoiBXZSBtYXkgaW5jbHVkZSBhIGZldyBzaG9ydGhhbmQgbmFtZXMgZm9yIGNvbnZlbmll bmNlIChlLmcuLCBgbmF0JykNCiAg4oCiIE92ZXJhbGwgd2UgYWltIHRvIGJlIGFzIGNvbnNpc3Rl bnQgYXMgcG9zc2libGUsIGUuZy4sIG9mZmVyaW5nDQogICAgc2ltaWxhciBzaWduYXR1cmVzIGFj cm9zcyBnZW5lcmF0b3IgaW50ZXJmYWNlcyAoYFFDaGVjay5HZW4nLA0KICAgIGBRQ2hlY2suYXJi aXRyYXJ5JywgYW5kIGBRQ2hlY2syLkdlbicpDQoNCiAgVGhlIDAuOTAgcmVsZWFzZSB0aHVzIGJv dGgNCiAg4oCiIGludHJvZHVjZXMgYSByYW5nZSBvZiBuZXcgKGFuZCBob3BlZnVsbHkgbW9yZSBj b25zaXN0ZW50KSBjb21iaW5hdG9yDQogICAgbmFtZXMgYW5kDQogIOKAoiBkZXByZWNhdGVzIGEg c2l6YWJsZSBudW1iZXIgb2Ygb2xkLCBpbmNvbnNpc3RlbnQgY29tYmluYXRvciBuYW1lcw0KDQog IFRoZSBkZXByZWNhdGVkIGNvbWJpbmF0b3JzIGhhdmUgYmVlbiBhbm5vdGF0ZWQgd2l0aCBgQEBk ZXByZWNhdGVkJw0KICBhdHRyaWJ1dGVzLg0KDQogIFJhdGhlciB0aGFuIGxldCBhIGNvdXBsZSBt b3JlIHllYXJzIHBhc3Mgd2l0aCBhbiBldmVuIGJpZ2dlciBhbmQgbW9yZQ0KICBjb25mdXNpbmcg bmFtZSBwb29sLCB3ZSBhcmUgdXNpbmcgdGhpcyBvcHBvcnR1bml0eSB0byBwcmVwYXJlIGEgbG9u Zw0KICBvdmVyZHVlIDEuMC4wIHJlbGVhc2UsIHdoZXJlIHdlIHdpbGwgcmVtb3ZlIHRoZSBvbGQs IGRlcHJlY2F0ZWQNCiAgY29tYmluYXRvciBuYW1lcy4NCg0KICBXZSB1bmRlcnN0YW5kIHRoYXQg dXBkYXRpbmcgZXhpc3RpbmcgdGVzdHMgdG8gdGhlIG5ldyBuYW1lcyB0YWtlcyBzb21lDQogIGVm Zm9ydCwgYnV0IGFwcGVhbCB0byB1c2VycyB0aGF0IHRoaXMgc2hvdWxkIGJlIGEgb25lLXRpbWUg aW52ZXN0bWVudA0KICB0bw0KICDigKIgb2ZmZXIgbW9yZSBjb25zaXN0ZW50IGFuZCBlYXNpZXIg dG8gcmVjYWxsIGNvbWJpbmF0b3IgbmFtZXMgYW5kDQogICAgc2ltdWx0YW5lb3VzbHkNCiAg4oCi IGxldCB1cyBjbGVhbiB1cCBRQ2hlY2sgdGVjaCBkZWJ0IGFuZCBhZGRyZXNzIGEgbG9uZy10aW1l IHBhaW4gcG9pbnQuDQoNCg0KICBUaGUgY2hhbmdlcyBhcmUgc3VtbWFyaXplZCBpbiBhIHJlY29y ZC1sb25nIENIQU5HRUxPRyBzZWN0aW9uIGZvciB0aGUNCiAgcmVsZWFzZToNCg0KICA8aHR0cHM6 Ly9naXRodWIuY29tL2MtY3ViZS9xY2hlY2svYmxvYi92MC45MC9DSEFOR0VMT0cubWQ+DQoNCiAg YW5kIFtjLWN1YmUvcWNoZWNrIzM2Nl0gcHJvdmlkZXMgYSBydW4gZG93biBvZiB0aGUgcmVuYW1p bmcgcHJvY2Vzcy4NCg0KICBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGZvbGxvd2luZyBsaXN0 IG9mIFBSczoNCg0KICDigKIgW3FjaGVjay9wdWxsIzM2N10NCiAg4oCiIFtxY2hlY2svcHVsbCMz NjldDQogIOKAoiBbcWNoZWNrL3B1bGwjMzcwXQ0KICDigKIgW3FjaGVjay9wdWxsIzM3MV0NCiAg 4oCiIFtxY2hlY2svcHVsbCMzNzJdDQogIOKAoiBbcWNoZWNrL3B1bGwjMzczXQ0KICDigKIgW3Fj aGVjay9wdWxsIzM3NF0NCiAg4oCiIFtxY2hlY2svcHVsbCMzNzZdDQogIOKAoiBbcWNoZWNrL3B1 bGwjMzc5XQ0KICDigKIgW3FjaGVjay9wdWxsIzM4MF0NCiAg4oCiIFtxY2hlY2svcHVsbCMzODFd DQogIOKAoiBbcWNoZWNrL3B1bGwjMzg2XQ0KICDigKIgW3FjaGVjay9wdWxsIzM4N10NCiAg4oCi IFtxY2hlY2svcHVsbCMzODhdDQogIOKAoiBbcWNoZWNrL3B1bGwjMzg5XQ0KICDigKIgW3FjaGVj ay9wdWxsIzM5MF0NCiAg4oCiIFtxY2hlY2svcHVsbCMzOTFdDQogIOKAoiBbcWNoZWNrL3B1bGwj MzkyXQ0KICDigKIgW3FjaGVjay9wdWxsIzM5M10NCiAg4oCiIFtxY2hlY2svcHVsbCMzOTRdDQog IOKAoiBbcWNoZWNrL3B1bGwjMzk2XQ0KDQoNCiAgRmluYWxseSwgb24gYmVoYWxmIG9mIHRoZSBt YWludGFpbmVycyBJIHdvdWxkIGxpa2UgdG8gdGhhbmsNCiAg4oCiIHRoZSB2YXJpb3VzIGZvbGtz IGNvbnRyaWJ1dGluZyB0byBRQ2hlY2sgb3ZlciB0aGUgcGFzdCAxMiB5ZWFycyBhbmQNCiAg4oCi IHRoZSBPQ2FtbCBTb2Z0d2FyZSBGb3VuZGF0aW9uIGZvciBmaW5hbmNpYWxseSBzdXBwb3J0aW5n IHRoZSB3b3JrIG9uDQogICAgdGhlc2UgcGFzdCB0aHJlZSByZWxlYXNlcy4NCg0KDQogIE1lcnJ5 IENocmlzdG1hcyBhbmQgaGFwcHkgdGVzdGluZyEgOmV2ZXJncmVlbl90cmVlOiA6d3JhcHBlZF9n aWZ0Og0KDQoNCltjLWN1YmUvcWNoZWNrIzM2Nl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUv cWNoZWNrL2lzc3Vlcy8zNjY+DQoNCltxY2hlY2svcHVsbCMzNjddIDxodHRwczovL2dpdGh1Yi5j b20vYy1jdWJlL3FjaGVjay9wdWxsLzM2Nz4NCg0KW3FjaGVjay9wdWxsIzM2OV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3B1bGwvMzY5Pg0KDQpbcWNoZWNrL3B1bGwjMzcwXSA8 aHR0cHM6Ly9naXRodWIuY29tL2MtY3ViZS9xY2hlY2svcHVsbC8zNzA+DQoNCltxY2hlY2svcHVs bCMzNzFdIDxodHRwczovL2dpdGh1Yi5jb20vYy1jdWJlL3FjaGVjay9wdWxsLzM3MT4NCg0KW3Fj aGVjay9wdWxsIzM3Ml0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3B1bGwvMzcy Pg0KDQpbcWNoZWNrL3B1bGwjMzczXSA8aHR0cHM6Ly9naXRodWIuY29tL2MtY3ViZS9xY2hlY2sv cHVsbC8zNzM+DQoNCltxY2hlY2svcHVsbCMzNzRdIDxodHRwczovL2dpdGh1Yi5jb20vYy1jdWJl L3FjaGVjay9wdWxsLzM3ND4NCg0KW3FjaGVjay9wdWxsIzM3Nl0gPGh0dHBzOi8vZ2l0aHViLmNv bS9jLWN1YmUvcWNoZWNrL3B1bGwvMzc2Pg0KDQpbcWNoZWNrL3B1bGwjMzc5XSA8aHR0cHM6Ly9n aXRodWIuY29tL2MtY3ViZS9xY2hlY2svcHVsbC8zNzk+DQoNCltxY2hlY2svcHVsbCMzODBdIDxo dHRwczovL2dpdGh1Yi5jb20vYy1jdWJlL3FjaGVjay9wdWxsLzM4MD4NCg0KW3FjaGVjay9wdWxs IzM4MV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3B1bGwvMzgxPg0KDQpbcWNo ZWNrL3B1bGwjMzg2XSA8aHR0cHM6Ly9naXRodWIuY29tL2MtY3ViZS9xY2hlY2svcHVsbC8zODY+ DQoNCltxY2hlY2svcHVsbCMzODddIDxodHRwczovL2dpdGh1Yi5jb20vYy1jdWJlL3FjaGVjay9w dWxsLzM4Nz4NCg0KW3FjaGVjay9wdWxsIzM4OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUv cWNoZWNrL3B1bGwvMzg4Pg0KDQpbcWNoZWNrL3B1bGwjMzg5XSA8aHR0cHM6Ly9naXRodWIuY29t L2MtY3ViZS9xY2hlY2svcHVsbC8zODk+DQoNCltxY2hlY2svcHVsbCMzOTBdIDxodHRwczovL2dp dGh1Yi5jb20vYy1jdWJlL3FjaGVjay9wdWxsLzM5MD4NCg0KW3FjaGVjay9wdWxsIzM5MV0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3B1bGwvMzkxPg0KDQpbcWNoZWNrL3B1bGwj MzkyXSA8aHR0cHM6Ly9naXRodWIuY29tL2MtY3ViZS9xY2hlY2svcHVsbC8zOTI+DQoNCltxY2hl Y2svcHVsbCMzOTNdIDxodHRwczovL2dpdGh1Yi5jb20vYy1jdWJlL3FjaGVjay9wdWxsLzM5Mz4N Cg0KW3FjaGVjay9wdWxsIzM5NF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9jLWN1YmUvcWNoZWNrL3B1 bGwvMzk0Pg0KDQpbcWNoZWNrL3B1bGwjMzk2XSA8aHR0cHM6Ly9naXRodWIuY29tL2MtY3ViZS9x Y2hlY2svcHVsbC8zOTY+DQoNCg0KT3RoZXIgT0NhbWwgTmV3cw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCkZyb20gdGhlIG9jYW1sLm9yZyBibG9n DQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBIZXJlIGFyZSBsaW5rcyBmcm9tIG1hbnkgT0NhbWwgYmxvZ3Mg YWdncmVnYXRlZCBhdCBbdGhlIG9jYW1sLm9yZw0KICBibG9nXS4NCg0KICDigKIgW0FvQUggRGF5 IDIxOiBDb21wbGV0ZSBkeW5hbWljIEhUTUw1IHZhbGlkYXRpb24gaW4gT0NhbWwgYW5kIHRoZQ0K ICAgIGJyb3dzZXJdDQogIOKAoiBbQW9BSCBEYXkgMjA6IEh1bWFuIGxhbmd1YWdlIGRldGVjdGlv biBpbiBuYXRpdmUgY29kZSwgSlMgYW5kIHdhc21dDQogIOKAoiBbQW9BSCBEYXkgMTk6IFp1bGlw IGJvdCBmcmFtZXdvcmsgdG8gYnJpbmcgVmljdW5hIHRoZSBmcmllbmRseSBjYW1lbA0KICAgIGJh Y2tdDQogIOKAoiBbQW9BSCBEYXkgMTg6IFRPTUwgMS4xIGNvZGVjcyBkaXJlY3RseSBmcm9tIHRo ZSBzcGVjIGFuZCBwYXBlcl0NCiAg4oCiIFtDbGF1ZGUgYW5kIER1bmVdDQogIOKAoiBbUGFydHJp ZGdlIFB1enpsZV0NCiAg4oCiIFtBb0FIIERheSAxNzogT0NhbWwgSk1BUCB0byBwbGFzdGVyIG15 IHBhaW5mdWwgZW1haWwgcGFwZXJjdXRzXQ0KICDigKIgW0FvQUggRGF5IDE2OiBWaWJlc3BsYWlu aW5nIEpTT04gUG9pbnRlcnMgdXNpbmcgT0NhbWwvSmF2YXNjcmlwdF0NCiAg4oCiIFtBb0FIIERh eSAxNTogUG9ydGluZyBhIGNvbXBsZXRlIEhUTUw1IHBhcnNlciBhbmQgYnJvd3NlciB0ZXN0DQog ICAgc3VpdGVdDQoNCg0KW3RoZSBvY2FtbC5vcmcgYmxvZ10gPGh0dHBzOi8vb2NhbWwub3JnL2Js b2cvPg0KDQpbQW9BSCBEYXkgMjE6IENvbXBsZXRlIGR5bmFtaWMgSFRNTDUgdmFsaWRhdGlvbiBp biBPQ2FtbCBhbmQgdGhlDQpicm93c2VyXSA8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMv YW9haC0yMDI1LTIxPg0KDQpbQW9BSCBEYXkgMjA6IEh1bWFuIGxhbmd1YWdlIGRldGVjdGlvbiBp biBuYXRpdmUgY29kZSwgSlMgYW5kIHdhc21dDQo8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90 ZXMvYW9haC0yMDI1LTIwPg0KDQpbQW9BSCBEYXkgMTk6IFp1bGlwIGJvdCBmcmFtZXdvcmsgdG8g YnJpbmcgVmljdW5hIHRoZSBmcmllbmRseSBjYW1lbA0KYmFja10gPGh0dHBzOi8vYW5pbC5yZWNv aWwub3JnL25vdGVzL2FvYWgtMjAyNS0xOT4NCg0KW0FvQUggRGF5IDE4OiBUT01MIDEuMSBjb2Rl Y3MgZGlyZWN0bHkgZnJvbSB0aGUgc3BlYyBhbmQgcGFwZXJdDQo8aHR0cHM6Ly9hbmlsLnJlY29p bC5vcmcvbm90ZXMvYW9haC0yMDI1LTE4Pg0KDQpbQ2xhdWRlIGFuZCBEdW5lXQ0KPGh0dHBzOi8v am9uLnJlY29pbC5vcmcvYmxvZy8yMDI1LzEyL2NsYXVkZS1hbmQtZHVuZS5odG1sPg0KDQpbUGFy dHJpZGdlIFB1enpsZV0NCjxodHRwczovL3d3dy50dW5idXJ5Lm9yZy8yMDI1LzEyLzE3L3BhcnRy aWRnZS1wdXp6bGUvPg0KDQpbQW9BSCBEYXkgMTc6IE9DYW1sIEpNQVAgdG8gcGxhc3RlciBteSBw YWluZnVsIGVtYWlsIHBhcGVyY3V0c10NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy9h b2FoLTIwMjUtMTc+DQoNCltBb0FIIERheSAxNjogVmliZXNwbGFpbmluZyBKU09OIFBvaW50ZXJz IHVzaW5nIE9DYW1sL0phdmFzY3JpcHRdDQo8aHR0cHM6Ly9hbmlsLnJlY29pbC5vcmcvbm90ZXMv YW9haC0yMDI1LTE2Pg0KDQpbQW9BSCBEYXkgMTU6IFBvcnRpbmcgYSBjb21wbGV0ZSBIVE1MNSBw YXJzZXIgYW5kIGJyb3dzZXIgdGVzdCBzdWl0ZV0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9u b3Rlcy9hb2FoLTIwMjUtMTU+DQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoN CiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVzc2Fn ZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0IFt0aGUg YXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElmIHlv dSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkgc3Vi c2NyaWJlDQogIHRvIHRoZSBbY2FtbC1saXN0XS4NCg0KICBbQWxhbiBTY2htaXR0XQ0KDQoNCltz ZW5kIG1lIGEgbWVzc2FnZV0gPG1haWx0bzphbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5vcmc+ DQoNClt0aGUgYXJjaGl2ZV0gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duLz4NCg0K W1JTUyBmZWVkIG9mIHRoZSBhcmNoaXZlc10gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQv Y3duL2N3bi5yc3M+DQoNCltjYW1sLWxpc3RdIDxodHRwczovL3N5bXBhLmlucmlhLmZyL3N5bXBh L2luZm8vY2FtbC1saXN0Pg0KDQpbQWxhbiBTY2htaXR0XSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBv bW1lLm5ldC8+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 December 16 to 23, 20= 25.

Camp, the Caml Amp

Andreas Rossberg announced

Happy to share =E2=80=9CCamp=E2=80=9D, the Caml Amp =E2=80=94 an old-school= music player heavily inspired by good old Winamp, with a focus on decent m= usic library and playlist handling.

I was fed up with Winamp being dead and lacking features I wanted, so I wen= t into full-on nerd mode and implemented my own opinionated replacement, all in OCaml using the Raylib library:

https://mpi-sws.org/~rossbe= rg/camp/

If you have not yet been sucked in by the streaming cartels, you might find= it useful.

  • Runs on Windows, Mac, and Linux
  • Support for WAV, FLAC, MP3, OGG, QOA, MOD, and XM
  • Advanced music library management with many browse and search features<= /li>
  • Elaborate playlist manipulation and query-based =E2=80=9Csmart=E2=80=9D= playlists
  • Animated user interface styled after hifi when it still looked good (no corners were rounded in the making of this app)

Enjoy, /Andreas

Ahrefs Grant Program for OCaml

Louis Roch=C3=A9 announced

Ahrefs is excited to announce a new Ahrefs Grant Program for OCaml t= o support projects in the OCaml ecosystem. This effort comes in addition to= the other sponsorships we do (such as the OCSF, the ICFP and Fun OCaml conferences, github sponsoring, and various other projects) We are allocating money = to fund one or multiple initiatives that help advance OCaml and its tooling.

You can learn more about our engineering culture and opensource support wor= k at https://ahrefs.com/tech

Call for Applications

We invite individuals, teams, and organizations working with OCaml to submi= t proposals for funding. Our goal is to support meaningful, practical impro= vements to the ecosystem, whether through new tools, libraries, infrastruct= ure, education, or long=E2=80=91term maintenance of existing projects.

Applications should be submitted through this google form.

The deadline for submissions is January 20th 2026.

What We Are Looking For

We welcome proposals that:

  • Strengthen the OCaml compiler or core libraries
  • Improve developer experience (tooling, documentation, debugging, profil= ing, packaging, =E2=80=A6)
  • Expand the OCaml ecosystem through new libraries or modernization of ke= y dependencies
  • Enhance reliability, performance, or safety of OCaml=E2=80=91based syst= ems
  • Support education, community infrastructure, or long=E2=80=91term maint= enance

Both small and large initiatives are welcome. We will prioritize projects t= hat will have lasting impact and will be maintained.

The selection of proposal will necessarily be subjective and depend on our = priorities and interests.

Funding

Applicants may request up to USD 50,000 in support per project. We m= ay award a single project or distribute among several proposals.

How to Apply

Your application should follow the format below and be sent through this google form.

Please be short and to the point in your answers; focus primarily on the wh= at and how, not so much on the why. If English isn't your first language, d= on't worry =E2=80=94 our reviewers don't care about spelling errors, only a= bout great ideas. You can be as technical as you need to be. Do stay specif= ic.

  • 1. Contact Information
    • Name
    • Organization (if applicable)
    • Email address
    • Country
  • 2. General Project Information
    • Title
    • Abstract (up to 1200 characters) Explain the whole project and its expected outcome(s).
    • Yourself or the team (2500 characters) Who is participating? Hav= e you been involved with similar or related projects? Please provide backgr= ound information and describe your past contributions.
    • Website (if any)
    • License Under which license will the project be distributed? It = must be an open source license.
  • 3. Requested Support
    • Requested Amount (up to USD 50,000)
    • Budget and Breakdown (up to 2500 characters) Explain what the bu= dget will be used for. Are there other funding sources? Include a breakdown= of tasks, estimated effort, and explicit rates.
    • Describe your project and its technical challenges (up to 5000 c= haracters) What are significant technical challenges you expect to solve du= ring the project, if any? Compare your own project with existing or histori= cal efforts. E.g. what is new, more thorough or otherwise different.
    • Ecosystem and Outreach (up to 1200 characters) Describe the proj= ect ecosystem and how you will engage with relevant actors or promote the a= doption.

Questions

If you have questions prior to submitting an application, feel free to reac= h out at grants@ahrefs.com.

We look forward to support the work that will move the OCaml ecosystem forw= ard.

Call for Contributions: Caml in the Capital (Feb 26)

"Alistair O'Brien announced

Hey all =F0=9F=91=8B,=20

A quick follow-up on Caml in the Capital: the first meetup is now confirmed= =F0=9F=8E=89.=20

When: Thursday 26th February 2026, 6:30-8:30pm

Where: Imperial College London, Flowers Building=20

Thanks to everyone who helped settle on a date!=20

Call for contributions

We=E2=80=99re still looking for presenters! Talks are workshop-style: anyth= ing from an accessible introduction of your work or research, a deep dive i= nto your library, a live demo, or a tutorial.=20

If you=E2=80=99d like to give a talk, please message me or @giltho directly= with:=20

  • A title
  • Short abstract
  • Expected time slot

Deadline: 1st February 2026

We=E2=80=99ve set a deadline so we have enough time to finalize the program= me and handle the practical organisation (room setup, schedule, announcemen= ts, etc.).

Call for participation

You=E2=80=99re very welcome to attend even if you=E2=80=99re not presenting= . If you plan to attend, please register here.

Many thanks to Imperial College for hosting us and OCaml Software Foundatio= n for funding us!! :raised_hands:=20

Alistair & Sacha

Sacha Ayoun later added

If there are any additional questions on registration, organisation, logist= ics, feel free to ask questions in this thread, or in the [dedicated Zulip = channel]( https://ocaml.zulipchat.com/#narrow/channel/553375-Caml-I= n-The-Capital) =F0=9F=99=82

Dream =E2=80=93 looking for maintainers to take ownership

Anton Bachin announced

Dream, the Web fr= amework, is looking for a maintenance team!

I originally wrote Dream in 2021, and actively maintained it for several ye= ars. It has gotten many great contributions from other authors since its fi= rst release, for which I am very grateful!

At the present time, I am no longer in a position to sustainably maintain D= ream. I=E2=80=99d like to yield it to one or several maintainers, who would= have the ability to pursue their vision, bring their ideas, credibly seek = funding for work that substantially affects it, and cite it on their resume= or elsewhere. In other words, to take ownership of it. I would stay on in = an advisory role, to transfer knowledge, help negotiate, and assist in vari= ous ways, as a volunteer.

We=E2=80=99ve already been having Dream community development meetings over= on Discord since August, which have been very helpful. Last month, I trans= ferred Dream to an org on GitHub. It=E2=80=99s ready for the next step :sli= ght_smile:=20

Dream has a very large amount of interesting work to do. The original motiv= ation was not only to create a modern, highly ergonomic Web framework in a = minimal sense, but to do a whole tour through the OCaml Web development eco= system and address every other place where a major library is missing, or w= here quality of life can be improved. See the roadmap for some of the many ideas.

In fact, we had started working on this back in 2022 with a small team of p= eople, and created an OAuth library. That enterprise was unfortunately term= inated by events outside our control, and the logical step now is for me to= yield control of Dream itself to a differently structured team, for its na= tural development :slight_smile:=20

If you=E2=80=99re interested, please DM me here on Discuss! If you have suc= h, please link your projects related to Web development, or where you have = been a maintainer. Let me know if you=E2=80=99re a user of Dream, and what = you=E2=80=99d like to see in Web development in OCaml.

Thank you!

QCheck 0.90: The Great Renaming

Jan Midtgaard announced

It is my pleasure to announce release 0.90 of the QCheck packages. QCheck i= s an OCaml library for randomized property-based testing in the style of Haskell= 's QuickCheck.

https://git= hub.com/c-cube/qcheck/releases/tag/v0.90

It has been over 12 years and 40 releases since @c-cube released version 0.1 back in October 2013. Over this period QCheck has grown organically

  • with new combinators on a "by-need" basis and
  • with a separate QCheck2 module offering generators with in= tegrated shrinking.

This has unfortunately resulted in a bit of a naming mess with inconsistent generator names. For example, the (now deprecated) small_int c= ombinator will generate only small non-negative numbers, and a combinator for generating positive integers uniformly is named either pint or pos_= int across different QCheck modules.

The 0.90 release thus takes on a cleanup under the heading "The Great Renam= ing". To guide the renaming process, we have assembled a list of hard-learned naming principles:

  • Generator names should align with type names (bool, = char, … list, option) to be as pred= ictable as possible
  • We should have short, unparameterized generators (int, string, …) to lower the barrier to entry
  • Specialized generators also start with the type name, but use a consist= ent suffix (_pos, _neg, _size, _of, …) to help find them, e.g., with tab-completion
  • We may include a few shorthand names for convenience (e.g., nat)
  • Overall we aim to be as consistent as possible, e.g., offering similar = signatures across generator interfaces (QCheck.Gen, QCheck.arbitrar= y, and QCheck2.Gen)

The 0.90 release thus both

  • introduces a range of new (and hopefully more consistent) combinator na= mes and
  • deprecates a sizable number of old, inconsistent combinator names

The deprecated combinators have been annotated with @@deprecated attributes.

Rather than let a couple more years pass with an even bigger and more confu= sing name pool, we are using this opportunity to prepare a long overdue 1.0.0 release, where we will remove the old, deprecated combinator names.

We understand that updating existing tests to the new names takes some effo= rt, but appeal to users that this should be a one-time investment to

  • offer more consistent and easier to recall combinator names and simulta= neously
  • let us clean up QCheck tech debt and address a long-time pain point.

The changes are summarized in a record-long CHANGELOG section for the relea= se:

https:= //github.com/c-cube/qcheck/blob/v0.90/CHANGELOG.md

and c-cube/qcheck#3= 66 provides a run down of the renaming process.

For more details, see the following list of PRs:

Finally, on behalf of the maintainers I would like to thank

  • the various folks contributing to QCheck over the past 12 years and
  • the OCaml Software Foundation for financially supporting the work on th= ese past three releases.

Merry Christmas and happy testing! :evergreen_tree: :wrapped_gift:

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.

--=-=-=--