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=qkKOs3GS; 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 BBBB740085 for ; Tue, 26 Aug 2025 12:34:11 +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=Obuj72arVFM1Laoqq0u1XDzkps/MQMK1mzqg0gBc1qs=; b=qkKOs3GS6cxQbn2Rp1ggbiFSGFARD1pzr4RXH+gEVr1BpU/PF5IyZQ45 8CYyFHh6nIjg4fkH8A79f0fVJLClamObU/qfkJ/hweVAgG/gzlrW1R2B+ KPNUwEuh9PLVhM9+e2kq1YudHZ5y9gUbn/1pY3gUE34AWwLD79xtn6PF1 I=; X-CSE-ConnectionGUID: EQ0A07TERraYQeEV97cKkg== X-CSE-MsgGUID: TnfzhOxvRIy+zipYGOTcBg== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr 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 X-IronPort-AV: E=Sophos;i="6.18,214,1751234400"; d="scan'208,217";a="236152331" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 26 Aug 2025 14:34:11 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 5BC95E0CD7; Tue, 26 Aug 2025 14:34:10 +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 66A93E0172 for ; Tue, 26 Aug 2025 14:34:07 +0200 (CEST) X-CSE-ConnectionGUID: LNdSPwD9RqS4DzjaBOq/7w== X-CSE-MsgGUID: jzzfii/aR6KuFh8hty/2uw== X-IronPort-AV: E=Sophos;i="6.18,214,1751234400"; d="scan'208,217";a="236152302" Received: from mac-03220211.irisa.fr ([131.254.21.249]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Aug 2025 14:34:08 +0200 From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 26 Aug 2025 14:34:07 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19370 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 ZWsgb2YgQXVndXN0IDE5IHRvIDI2LA0KMjAyNS4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpXaHkgTGVh biA0IHJlcGxhY2VkIE9DYW1sIGFzIG15IFByaW1hcnkgTGFuZ3VhZ2UNClRhY2l0IDEuMC4wIC0g Q29tYmluYXRvcnMhDQpTbGlwc2hvdyENCkNsYXVkaXVzIGlzIG5vdyBhdmFpbGFibGUgaW4gb3Bh bSEg8J+OiQ0KTmV3IHJlbGVhc2Ugb2YgVW5pb25GaW5kDQpCb2d1ZSwgdGhlIE9DYW1sIEdVSQ0K RHVuZSAzLjIwDQpjdWRhaml0OiBCaW5kaW5ncyB0byB0aGUgYGN1ZGEnIGFuZCBgbnZydGMnIGxp YnJhcmllcw0KemJnIHYwLjMuMDogTmV3IHJlbGVhc2UgMiB5ZWFycyBsYXRlcg0KQW5ub3VuY2lu ZyBSYXZlbjogU2NpZW50aWZpYyBDb21wdXRpbmcgZm9yIE9DYW1sIChBbHBoYSBSZWxlYXNlKQ0K T3V0cmVhY2h5IERlbW8gRGF5IEF1Z3VzdCAyMDI1DQpPdGhlciBPQ2FtbCBOZXdzDQpPbGQgQ1dO DQoNCg0KV2h5IExlYW4gNCByZXBsYWNlZCBPQ2FtbCBhcyBteSBQcmltYXJ5IExhbmd1YWdlDQri lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L3doeS1sZWFuLTQtcmVwbGFjZWQtb2NhbWwtYXMtbXktcHJpbWFy eS1sYW5ndWFnZS8xNzEwOS8xPg0KDQoNClNob24gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICA8aHR0cHM6Ly9raXJhbmNvZGVzLm1lL3Bv c3RzL2xvZy1vY2FtbC10by1sZWFuLmh0bWw+DQoNCg0KVGFjaXQgMS4wLjAgLSBDb21iaW5hdG9y cyENCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mu b2NhbWwub3JnL3QvdGFjaXQtMS0wLTAtY29tYmluYXRvcnMvMTcxNDIvMT4NCg0KDQphcnV0b25l ZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIFBhcnRpYWxseSBhcyBhIGJlZ2lubmVyIHByb2plY3QgKEkgYW0gL3Zl cnkgbXVjaC8gYSBiZWdpbm5lci0gaWYNCiAgYW55b25lIGVsc2UgZmluZHMgdGhlIHBhY2thZ2Ug dXNlZnVsIGFuZCBmZWVscyBsaWtlIHNvbWV0aGluZyBzaG91bGQNCiAgYmUgY2hhbmdlZCBvciBr bm93cyBtb3JlIGZ1biBjb21iaW5hdG9ycywgZmVlbCBmcmVlIHRvIG1ha2UgYSBQUiBhcyBJDQog IGhhdmUgbm8gY2x1ZSB3aGF0IEnigJltIGRvaW5nKSwgYW5kIHBhcnRpYWxseSBqdXN0IGJlY2F1 c2UgSSBwZXJzb25hbGx5DQogIHdhbnQgYSByZWxhdGl2ZWx5IGNvbXBsZXRlIGNvbWJpbmF0b3Ig bGlicmFyeSwgYHRhY2l0JyBpcyBub3cgb24gb3BhbSENCiAgTm93IHlvdSBjYW4gd3JpdGUgYGxl dCBudGhfcm9vdCA9IEMuYyAoQy5waGkxIEZsb2F0LnBvdyBDLmsgKEMuYjEgKCgNCiAgLy4gKSAx LikgQy5raSkpJyBpZiB5b3Ugd2FudGVkIHRvLCBmb3Igd2hhdGV2ZXIgcmVhc29uIDp3aW5rOg0K DQoNClhhdmllciBWYW4gZGUgV29lc3R5bmUgdGhlbiBhZGRlZA0K4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVyZSBpcyB0aGUgcGFja2FnZSBwYWdlOiA8 aHR0cHM6Ly9vY2FtbC5vcmcvcC90YWNpdC9sYXRlc3Q+DQoNCiAgaGVyZSBpcyB0aGUgcmVwb3Np dG9yeTogPGh0dHBzOi8vZ2l0aHViLmNvbS9hcnV0b25lZTEvdGFjaXQ+DQoNCg0KU2xpcHNob3ch DQrilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L2Fubi1zbGlwc2hvdy8xNjMzNy8xMT4NCg0KDQpQYXVsLUVsbGlvdCBh bm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgA0KDQogIChJIGhvcGUgaXQncyBzdGlsbCBPSyB0byBhbm5vdW5jZSBt eSByZWxlYXNlcyBoZXJlLCBkZXNwaXRlIHRoZWlyDQogIGN1cnJlbnQgZnJlcXVlbmNpZXMgYW5k IHRoZSBmYWN0IHRoYXQgaXQncyBub3QgYW4gT0NhbWwgX2xpYnJhcnlfLikNCg0KICBJIGFtIHNw ZWVjaGxlc3MgdG8gYW5ub3VuY2UgdGhlIG5ldyBbb3BhbSByZWxlYXNlXSBvZiBbU2xpcHNob3dd IQ0KDQoNCltvcGFtIHJlbGVhc2VdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1yZXBv c2l0b3J5L3B1bGwvMjgzNTE+DQoNCltTbGlwc2hvd10gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYW5n bGVzZC9zbGlwc2hvdy8+DQoNClZlcnNpb24gMC42LjA6IFRoZSBLaW5n4oCZcyBTbGlwc2hvdw0K 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgVGhpcyBy ZWxlYXNlIGZvY3VzZXMgb24gb25lIHNwZWNpZmljIGZlYXR1cmU6IHRoZSBzcGVha2VyIHZpZXcu DQoNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy82ZjEzODRm MC03MTVjLTRhZjctODBkNi03ZGE5YzBiOTc0NGI+DQoNCiAgKERpc2NsYWltZXI6IEFJIGdlbmVy YXRlZCB0ZXh0IF5bVGhlIHRleHQgaW4gdGhlIGxlZnQgb2YgdGhlIGdpZiBhYm92ZQ0KICB3YXMg bW9zdGx5IGdlbmVyYXRlZCBieSBhbiBMTE0sIG1pbWlja2luZyAiVGhlIEtpbmcncyBzcGVlY2gi DQogIGRlY2xhcmF0aW9uIG9mIHdhciwgYnV0IHR1cm5lZCB0byBwcmFpc2UgcGVhY2UsIHdoaWNo IHdlIG5lZWQgYSBsb3QgaW4NCiAgdGhpcyB3b3JsZF0pDQoNCiAgVGhlIHNwZWFrZXIgdmlldyBp bmNsdWRlcyBhIHRpbWVyLCBzcGVha2VyIG5vdGVzLCBhbmQgYSBwcmVzZW50YXRpb24NCiAgc3lu Y2VkIHdpdGggdGhlIG1haW4gb25lLiBOb3RlIHRoYXQgYSBjb21waWxlZCBwcmVzZW50YXRpb24g aXMgc3RpbGwgYQ0KICBzdGFuZGFsb25lIGh0bWwgZmlsZSB0aGF0IHlvdSBjYW4ganVzdCBkb3Vi bGUgY2xpY2sgb24uDQoNCiAgVG8gb3BlbiB0aGUgc3BlYWtlciB2aWV3LCBwcmVzcyBgcycuIFRv IHNlbmQgc29tZSB0ZXh0IHRvIHRoZSBzcGVha2VyDQogIG5vdGVzLCB1c2UgdGhlIGBzcGVha2Vy LW5vdGUnIGFjdGlvbiwgYXMgaW4gdGhlIGNvZGUgYmVsb3c6DQoNCiAg4pSM4pSA4pSA4pSA4pSA DQogIOKUgiAjIFRoZSBLaW5nJ3MgU2xpcHNob3cNCiAg4pSCIA0KICDilIIge3BhdXNlIHNwZWFr ZXItbm90ZX0NCiAg4pSCIFNheSBpdCBsaWtlIHRoaXM6ICJwZXJoYWFhYWFhYWFwcyIuLi4NCiAg 4pSCIA0KICDilIIgSW4gdGhpcyBncmF2ZSBob3VyLCBwZXJoYXBzIHRoZSBtb3N0IGZhdGVmdWwg aW4gb3VyIGhpc3RvcnksIEkgc2VuZCB0byBldmVyeSBob3VzZWhvbGQgb2YgbXkgcGVvcGxlcywg Ym90aCBhdCBob21lIGFuZCBvdmVyc2VhcywgdGhpcyBtZXNzYWdlLCBzcG9rZW4gd2l0aCB0aGUg c2FtZSBkZXB0aCBvZiBmZWVsaW5nIGZvciBlYWNoIG9uZSBvZiB5b3UgYXMgaWYgSSB3ZXJlIGFi bGUgdG8gY3Jvc3MgeW91ciB0aHJlc2hvbGQgYW5kIHNwZWFrIHRvIHlvdSBteXNlbGYuDQogIOKU giANCiAg4pSCIHtwYXVzZSBzcGVha2VyLW5vdGV9DQogIOKUgiBNYWtlIGEgbGl0dGxlIHBhdXNl IGFuZCBzaG93IGEgdGVhciwgaXQnbGwgbWFrZSBpdCBtb3JlIGRyYW1hdGljLg0KICDilIIgDQog IOKUgiBBcyBhbHdheXMsIHRoZSB3b3JsZCBmaW5kcyBpdHNlbGYgc3RhbmRpbmcgb24gdGhlIGVk Z2Ugb2Ygd2FyLg0KICDilIIgDQogIOKUgiB7cGF1c2UgY2VudGVyPXRpbWUgc3BlYWtlci1ub3Rl fQ0KICDilIIgRW1waGFzaXplIHJvYXIgYnV0IGF2b2lkIG1ha2luZyBldmVyeW9uZSB1bmNvbWZv cnRhYmxlLg0KICDilIIgDQogIOKUgiB7I3RpbWV9DQogIOKUgiBUaW1lIGFmdGVyIHRpbWUsIHdl IGhhdmUgc291Z2h0IHBlYWNlZnVsIHdheXMgdG8gcmVzb2x2ZSBvdXIgZGlmZmVyZW5jZXMuIFll dCB0b28gb2Z0ZW4sIGRpYWxvZ3VlIGhhcyBiZWVuIGRyb3duZWQgb3V0IGJ5IHRoZSByb2FyIG9m IHdlYXBvbnMuDQogIOKUgiANCiAg4pSCIHtwYXVzZSBzcGVha2VyLW5vdGV9DQogIOKUgiBQcmV0 ZW5kIHlvdSBrbm93IHdoYXQgeW91IGFyZSBzcGVha2luZyBhYm91dDogYXMgYSBLaW5nLCB5b3Ug Y2FuIGRvIHRoYXQuDQogIOKUgiANCiAg4pSCIFdlIGFyZSB0b2xkIHRoYXQgdmlvbGVuY2UgaXMg dW5hdm9pZGFibGUsIHRoYXQgdG8gYmUgc2FmZSB3ZSBtdXN0IGZpZ2h0LiBCdXQgdGhpcyBpcyB0 aGUgb2xkIGFuZCBkYW5nZXJvdXMgbGllIHRoYXQg4oCcbWlnaHQgaXMgcmlnaHQu4oCdIElmIHdl IGFjY2VwdCBpdCwgd2UgYWNjZXB0IHRoZSBzbG93IGRlc3RydWN0aW9uIG9mIGFsbCB0aGF0IG1h a2VzIGxpZmUgd29ydGggbGl2aW5nLg0KICDilIIgDQogIOKUgiB7cGF1c2UgZG93bj1lbmQgc3Bl YWtlci1ub3RlfQ0KICDilIIgRFJBTUFUSUNBTExZIFBPSU5UIEZJTkdFUlMgQVQgVEhFIEFVRElF TkNFISEhDQogIOKUgiANCiAg4pSCIEZvciB0aGUgc2FrZSBvZiBhbGwgd2UgY2hlcmlzaCwgd2Ug bXVzdCBmaW5kIGFub3RoZXIgcGF0aC4gVGhlIHJlYWwgY2hhbGxlbmdlIGJlZm9yZSB1cyBpcyBu b3QgdG8gZmlnaHQgaGFyZGVyLCBidXQgdG8gaW1hZ2luZSBwZWFjZSB3aGVuIGFuZ2VyIGJsaW5k cyB1cywgYW5kIHRvIGNob29zZSBjb29wZXJhdGlvbiB3aGVuIGNvbmZsaWN0IHNlZW1zIGVhc2ll ci4NCiAg4pSCIA0KICDilIIgSSBjYWxsIG9uIGFsbCBwZW9wbGUsIGFjcm9zcyBldmVyeSBib3Jk ZXIsIHRvIHJlbWFpbiBjYWxtLCBmaXJtLCBhbmQgdW5pdGVkIGluIHRoZSBoaWdoZXIgY2F1c2Ug b2YgcHJlc2VydmluZyBsaWZlLiBUbyByZXNpc3QgdGhlIGNhbGwgb2YgaGF0cmVkLiBUbyByZW1l bWJlciB0aGF0IGluIGV2ZXJ5IGNpdHksIGluIGV2ZXJ5IG5hdGlvbiwgdGhlcmUgYXJlIGNoaWxk cmVuIHdobyBkZXNlcnZlIGEgZnV0dXJlIHVuc2NhcnJlZCBieSB3YXIuDQogIOKUgiANCiAg4pSC IFRoZSByb2FkIHdpbGwgYmUgaGFyZC4gVGhlcmUgbWF5IGJlIGRheXMgd2hlbiBwZWFjZSBmZWVs cyBpbXBvc3NpYmxlLiBCdXQgd2FyIHNwcmVhZHMgYmV5b25kIHRoZSBiYXR0bGVmaWVsZCDigJQg aXQgc3RlYWxzIGhvbWVzLCBkaXZpZGVzIGZhbWlsaWVzLCBhbmQgcG9pc29ucyB0aGUgZ2VuZXJh dGlvbnMgdG8gY29tZS4NCiAg4pSCIA0KICDilIIgeyNlbmR9DQogIOKUgiBJZiB3ZSByZW1haW4g c3RlYWRmYXN0IGluIG91ciByZWZ1c2FsIHRvIGdpdmUgaW4gdG8gdmlvbGVuY2UsIHRoZW4sIHdp dGggY291cmFnZSBhbmQgY29tcGFzc2lvbiwgd2Ugd2lsbCBwcmV2YWlsIOKAlCBub3QgYnkgZGVz dHJveWluZywgYnV0IGJ5IHByZXNlcnZpbmcuDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIEZ1bGwg Y2hhbmdlbG9nIGJlbG93Og0KDQoNCuKXiiBFbmdpbmUNCg0KICDigKIgQWRkIGEgc3BlYWtlciB2 aWV3LCBvcGVuZWQgd2l0aCBgcycuICgjMTQ3KQ0KICDigKIgRml4IGBaJyBhbmQgYFgnIG5vdCB3 b3JraW5nICgjMTQ3KQ0KICDigKIgT24gc3RlcCBjaGFuZ2UsIG1vdmUgYmFjayB0byB0aGUgcG9z aXRpb24gd2UgbGVmdCAoIzE0OCkNCg0KDQril4ogTGFuZ3VhZ2UNCg0KICDigKIgQWRkIGEgYHNw ZWFrZXItbm90ZScgYWN0aW9uLiAoIzE0NykNCg0KDQpDbGF1ZGl1cyBpcyBub3cgYXZhaWxhYmxl IGluIG9wYW0hIPCfjokNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3Jn L3QvY2xhdWRpdXMtaXMtbm93LWF2YWlsYWJsZS1pbi1vcGFtLzE3MTQ1LzE+DQoNCg0KU2hyZXlh IFBhd2Fza2FyIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2UgYXJlIGhhcHB5 IHRvIGFubm91bmNlIHRoYXQgQ2xhdWRpdXMgaXMgbm93IGF2YWlsYWJsZSBpbiBvcGFtIQ0KDQog IENsYXVkaXVzIGlzIGEgZnVuY3Rpb25hbCBzdHlsZSByZXRyby1ncmFwaGljcyBsaWJyYXJ5IGZv ciBPQ2FtbCBmb3INCiAgYnVpbGRpbmcgZ2VuZXJhdGl2ZSBhcnQsIGRlbW9zLCBhbmQgZ2FtZXMu DQoNCiAgSGVyZeKAmXMgb3VyIGdpdGh1YjogW0NsYXVkaXVzXQ0KDQogIEFuZCBzb21lIGNvb2wg ZXhhbXBsZXMgdG8gY2hlY2tvdXQgYW5kIGV4cGxvcmUgbW9yZToNCiAgW2NsYXVkaXVzLWV4YW1w bGVzXQ0KDQoNCltDbGF1ZGl1c10gPGh0dHBzOi8vZ2l0aHViLmNvbS9DbGF1ZGl1c0ZYL2NsYXVk aXVzPg0KDQpbY2xhdWRpdXMtZXhhbXBsZXNdIDxodHRwczovL2dpdGh1Yi5jb20vQ2xhdWRpdXNG WC9jbGF1ZGl1cy1leGFtcGxlcz4NCg0KDQpOZXcgcmVsZWFzZSBvZiBVbmlvbkZpbmQNCuKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv YW5uLW5ldy1yZWxlYXNlLW9mLXVuaW9uZmluZC8xNzE0Ny8xPg0KDQoNCkZyYW7Dp29pcyBQb3R0 aWVyIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVsbG8hIEl0IGlzIG15 IHBsZWFzdXJlIHRvIGFubm91bmNlIGEgbmV3IHJlbGVhc2Ugb2YgbXkgbGlicmFyeQ0KICBgdW5p b25GaW5kJy4gVGhlIG1haW4gbmV3cyBpcyB0aGF0IGEgY29uY3VycmVudCB1bmlvbi1maW5kIGFs Z29yaXRobQ0KICBpcyBub3cgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lIGBVbmlvbkZpbmQuQ29u Y3VycmVudCcuIFRvIGluc3RhbGwgaXQsDQogIHR5cGUgYG9wYW0gdXBkYXRlICYmIG9wYW0gaW5z dGFsbCB1bmlvbkZpbmQuMjAyNTA4MTgnLiBGb3IgbW9yZQ0KICBpbmZvcm1hdGlvbiwgc2VlIHRo ZSBbZG9jdW1lbnRhdGlvbl0uDQoNCg0KW2RvY3VtZW50YXRpb25dDQo8aHR0cHM6Ly9jYW1iaXVt LmlucmlhLmZyL35mcG90dGllci91bmlvbkZpbmQvZG9jL3VuaW9uRmluZC8+DQoNCg0KQm9ndWUs IHRoZSBPQ2FtbCBHVUkNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwu b3JnL3QvYW5uLWJvZ3VlLXRoZS1vY2FtbC1ndWkvOTA5OS82ND4NCg0KDQpzYW5ldHRlIGFubm91 bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCiAgSGVsbG8NCg0KICBpdOKAmXMgbXkgcGxlYXN1cmUgdG8gYW5ub3VuY2UgYSBuZXcgdmVy c2lvbiBvZiBbQm9ndWVdLCB2ZXJzaW9uDQogIDIwMjUwODE1IGF2YWlsYWJsZSBvbiBbb3BhbV0u DQoNCiAgVGhlIG1haW4gbm92ZWx0eSBpcyBhbiAqaW50ZXJuYXRpb25hbGl6YXRpb24gbWVjaGFu aXNtKi4gQWxsIHRleHQgdXNlZA0KICBieSBCb2d1ZSAobGlrZSDigJhjbG9zZeKAmSBpbiBhIGNs b3NlIGJ1dHRvbikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5DQogIHRyYW5zbGF0ZWQgaW50byB0aGUg dXNlcuKAmXMgbGFuZ3VhZ2UuIEN1cnJlbnRseSAxNSBsYW5ndWFnZXMgYXJlDQogIHN1cHBvcnRl ZCBidXQgbW9yZSBjYW4gZWFzaWx5IGJlIGFkZGVkIGVpdGhlciB2aWEgY29uZmlndXJhdGlvbiBm aWxlcywNCiAgb24gZGlyZWN0bHkgYXQgcnVuLXRpbWUgdXNpbmcgdGhlIFtpMThuIEFQSV0uDQoN CiAgbm90ZTogSW50ZXJuYXRpb25hbGl6YXRpb24gaGFzIGJlZW4gdGVzdGVkIG9ubHkgZm9yIGEg c21hbGwgbnVtYmVyIG9mDQogIGFwcGxpY2F0aW9uczsgZG9u4oCZdCBoZXNpdGF0ZSB0byByZXBv cnQgYnVncy4NCg0KICBIYXBweSBib2d1ZS1pbmchDQoNCg0KW0JvZ3VlXSA8aHR0cHM6Ly9naXRo dWIuY29tL3NhbmV0dGUvYm9ndWU+DQoNCltvcGFtXSA8aHR0cHM6Ly9vY2FtbC5vcmcvcC9ib2d1 ZS8yMDI1MDgxNT4NCg0KW2kxOG4gQVBJXSA8aHR0cHM6Ly9zYW5ldHRlLmdpdGh1Yi5pby9ib2d1 ZS9Cb2d1ZS5JMThuLmh0bWw+DQoNCg0KRHVuZSAzLjIwDQrilZDilZDilZDilZDilZDilZDilZDi lZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1kdW5l LTMtMjAvMTcxNTAvMT4NCg0KDQpFdGllbm5lIE1hcmFpcyBhbm5vdW5jZWQNCuKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgA0KDQogIE9uIHRoZSBiZWhhbGYgb2YgdGhlIER1bmUgVGVhbSwgSeKAmW0gZ2xhZCB0byBh bm5vdW5jZSB0aGUgcmVsZWFzZSBvZg0KICBkdW5lIGAzLjIwLjAnIDpwYXJ0eWluZ19mYWNlOg0K DQogIFRoaXMgcmVsZWFzZSBjb250YWlucyBzb21lIGltcG9ydGFudCBidWcgZml4ZXMuIEl0IGNv bnRhaW5zIG5ldw0KICBmZWF0dXJlcyBmb3IgdGVzdHMsIHN1Y2ggYXMgdGhlIHBvc3NpYmlsaXR5 IHRvIHVzZSBhbiBhbGlhcyBhbmQgdGhlDQogIHBvc3NpYmlsaXR5IHRvIGRlY2xhcmUgYSAvdGlt ZW91dC8gZm9yIC9jcmFtLyB0ZXN0cy4gVGhpcyByZWxlYXNlIGFsc28NCiAgcHJvdmlkZXMgbmV3 IHBvc3NpYmlsaXRpZXMgZm9yIHRoZSAvd2F0Y2ggbW9kZSwvIGxpa2UgdGhlIGFiaWxpdHkgdG8N CiAgcnVuIGFuIGV4ZWN1dGFibGUgb3IgcHJvbW90ZSBmaWxlcyB3aGlsZSB0aGUgd2F0Y2ggbW9k ZSBpcyBydW5uaW5nLg0KDQogIDp3YXJuaW5nOiBBIHNpZ25pZmljYW50IGNoYW5nZSBpbiB0aGlz IHJlbGVhc2UgaXMgaG93IHRoZSBkdW5lIGZpbGUNCiAgZm9ybWF0dGVyIGFjdHMuIEl0IHdpbGwg bm93IHRyeSB0byBmaWxsIHRoZSBsaW5lIGluc3RlYWQgb2YgdXNpbmcgdGhlDQogIHZlcnRpY2Fs IGZvcm1hdC4NCg0KICBJZiB5b3UgZW5jb3VudGVyIGEgcHJvYmxlbSB3aXRoIHRoaXMgcmVsZWFz ZSwgeW91IGNhbiByZXBvcnQgaXQgb24gdGhlDQogIFtvY2FtbC9kdW5lXSByZXBvc2l0b3J5Lg0K DQoNCltvY2FtbC9kdW5lXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL2R1bmUvaXNzdWVzPg0K DQpDaGFuZ2Vsb2cNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQril4ogRml4ZWQNCg0K ICDigKIgU3RvcCByZS1ydW5uaW5nIGNyYW0gdGVzdHMgYWZ0ZXIgcHJvbW90aW9uIHdoZW4gaXTi gJlzIG5vdCBuZWNlc3NhcnkNCiAgICAoIzExOTk0LCBAcmdyaW5iZXJnKQ0KDQogIOKAoiBmaXg6 IGAkIGR1bmUgc3Vic3QnIHNob3VsZCBub3QgZmFpbCB3aGVuIGFkZGluZyB0aGUgdmVyc2lvbiBm aWVsZCBpbg0KICAgIG9wYW0gZmlsZXMgKCMxMTgwMSwgZml4ZXMgIzExMDQ1LCBAYnRqb3JnZSkN Cg0KICDigKIgS2lsbCBhbGwgcHJvY2Vzc2VzIGluIHRoZSBwcm9jZXNzIGdyb3VwIGFmdGVyIHRo ZSBtYWluIHByb2Nlc3MgaGFzDQogICAgdGVybWluYXRlZDsgaW4gcGFydGljdWxhciB0aGlzIGF2 b2lkcyBiYWNrZ3JvdW5kIHByb2Nlc3NlcyBpbiBjcmFtDQogICAgdGVzdHMgdG8gc3RpY2sgYXJv dW5kIGFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVkICgjMTE4NDEsIGZpeGVzICMxMTgyMCwNCiAgICBA QWxpenRlciwgQExlb25pZGFzLWZyb20tWElWKQ0KDQoNCuKXiiBBZGRlZA0KDQogIOKAoiBgKHRl c3RzKScgc3RhbnphcyBub3cgZ2VuZXJhdGUgYWxpYXNlcyB3aXRoIHRoZSB0ZXN0IG5hbWUuIFRv IHJ1bg0KICAgIGAodGVzdCAobmFtZSBhKSknIHlvdSBjYW4gZG8gYGR1bmUgYnVpbGQgQHJ1bnRl c3QtYScuICgjMTE1NTgsDQogICAgZ3JhbnRzIHBhcnQgb2YgIzEwMjM5LCBAQWxpenRlcikNCg0K ICDigKIgSW5saW5lIHRlc3QgbGlicmFyaWVzIG5vdyBwcm9kdWNlIGFsaWFzZXMgYHJ1bnRlc3Qt bmFtZV9vZl9saWInDQogICAgYWxsb3dpbmcgdXNlcnMgdG8gcnVuIHNwZWNpZmljIGlubGluZSB0 ZXN0cyBhcyBgZHVuZSBidWlsZA0KICAgIEBydW50ZXN0LW5hbWVfb2ZfbGliJy4gKCMxMTEwOSwg cGFydGlhbGx5IGZpeGVzICMxMDIzOSwgQEFsaXp0ZXIpDQoNCiAg4oCiIGZlYXR1cmU6IGAkIGR1 bmUgc3Vic3QnIHVzZSB2ZXJzaW9uIGZyb20gYGR1bmUtcHJvamVjdCcgd2hlbiBubw0KICAgIHZl cnNpb24gY29udHJvbCByZXBvc2l0b3J5IGhhcyBiZWVuIGRldGVjdGVkICgjMTE4MDEsIEBidGpv cmdlKQ0KDQogIOKAoiBBbGxvdyBgZHVuZSBleGVjJyB0byBydW4gY29uY3VycmVudGx5IHdpdGgg YW5vdGhlciBpbnN0YW5jZSBvZiBkdW5lDQogICAgaW4gd2F0Y2ggbW9kZSAoIzExODQwLCBAZ3Jp ZGJ1Z3MpDQoNCiAg4oCiIEludHJvZHVjZSBgJXtvc30nLCBgJXtvc192ZXJzaW9ufScsIGAle29z X2Rpc3RyaWJ1dGlvbn0nLCBhbmQNCiAgICBgJXtvc19mYW1pbHl9JyBwZXJjZW50IGZvcm1zLiBU aGVzZSBoYXZlIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGVpcg0KICAgIG9wYW0gY291bnRlcnBhcnRz LiAgKCMxMTg2MywgQHJncmluYmVyZykNCg0KICDigKIgSW50cm9kdWNlIG9wdGlvbiBgKGltcGxp Y2l0X3RyYW5zaXRpdmVfZGVwcw0KICAgIGZhbHNlLWlmLWhpZGRlbi1pbmNsdWRlcy1zdXBwb3J0 ZWQpJyB0aGF0IGlzIGVxdWl2YWxlbnQgdG8NCiAgICBgKGltcGxpY2l0X3RyYW5zaXRpdmVfZGVw cyBmYWxzZSknIHdoZW4gYC1IJyBpcyBzdXBwb3J0ZWQgYnkgdGhlDQogICAgY29tcGlsZXIgKE9D YW1sID49IDUuMikgYW5kIGVxdWl2YWxlbnQgdG8gYChpbXBsaWNpdF90cmFuc2l0aXZlX2RlcHMN CiAgICB0cnVlKScgb3RoZXJ3aXNlLiAoIzExODY2LCBmaXhlcyAjMTEyMTIsIEBub2piKQ0KDQog IOKAoiBBZGQgYGR1bmUgZGVzY3JpYmUgbG9jYXRpb24nIGZvciBwcmludGluZyB0aGUgcGF0aCB0 byB0aGUgZXhlY3V0YWJsZQ0KICAgIHRoYXQgd291bGQgYmUgcnVuICgjMTE5MDUsIEBncmlkYnVn cykNCg0KICDigKIgYGR1bmUgcnVudGVzdCcgY2FuIG5vdyB1bmRlcnN0YW5kIGFic29sdXRlIHBh dGhzIGFzIHdlbGwgYXMgcnVuDQogICAgdGVzdHMgaW4gc3BlY2lmaWMgYnVpbGQgY29udGV4dHMg KCMxMTkzNiwgQEFsaXp0ZXIpLg0KDQogIOKAoiBBZGRlZCDigJhlbXB0eeKAmSBhbGlhcyB3aGlj aCBjb250YWlucyBubyB0YXJnZXRzLiAoIzExNTU2ICMxMTk1MiAjMTE5NTUNCiAgICAjNDE2MSwg Z3JhbnRzICM0MTYxLCBAQWxpenRlciBhbmQgQHJncmluYmVyZykNCg0KICDigKIgQWxsb3cgYGR1 bmUgcHJvbW90ZScgdG8gcHJvcGVybHkgcnVuIHdoaWxlIGEgd2F0Y2ggbW9kZSBzZXJ2ZXIgaXMN CiAgICBydW5uaW5nICgjMTIwMTAsIEBFbGVjdHJlQUFTKQ0KDQogIOKAoiBBZGQgYC0tYWxpYXMn IGFuZCBgLS1hbGlhcy1yZWMnIGZsYWdzIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBgQEAnDQog ICAgYW5kIGBAJyBzeW50YXggaW4gdGhlIGNvbW1hbmQgbGluZSAoIzU3NzUsIGZpeGVzICM1Nzc1 LCBAcmdyaW5iZXJnKQ0KDQogIOKAoiBBZGRlZCBhIGAodGltZW91dCA8ZmxvYXQ+KScgZmllbGQg dG8gdGhlIGAoY3JhbSknIHN0YW56YSB0byBzcGVjaWZ5DQogICAgcGVyLXRlc3QgdGltZSBsaW1p dHMuIFRlc3RzIGV4Y2VlZGluZyB0aGUgdGltZW91dCBhcmUgdGVybWluYXRlZA0KICAgIHdpdGgg YW4gZXJyb3IuICAoIzEyMDQxLCBAQWxpenRlcikNCg0KDQril4ogQ2hhbmdlZA0KDQogIOKAoiBG b3JtYXQgbG9uZyBsaXN0cyBpbiBzLWV4cHJlc3Npb25zIHRvIGZpbGwgdGhlIGxpbmUgaW5zdGVh ZCBvZg0KICAgIGZvcm1hdHRpbmcgdGhlbSBpbiBhIHZlcnRpY2FsIHdheSAoIzEwODYwLCBmaXhl cyAjMTA4NjAsIEBub2piKQ0KDQogIOKAoiBTd2l0Y2ggZnJvbSBNRDUgdG8gQkxBS0UzIGZvciBk aWdlc3RpbmcgdGFyZ2V0cyBhbmQgcnVsZXMuIEJMQUtFMyBpcw0KICAgIGJvdGggbW9yZSBwZXJm b3JtYW50IGFuZCBkaWZmaWN1bHQgdG8gYnJlYWsgdGhhbiBNRDUgKCMxMTczNSwNCiAgICBAcmdy aW5iZXJnLCBAQWxpenRlcikNCg0KICDigKIgUHJpbnQgYSB3YXJuaW5nIHdoZW4gYGR1bmUgYnVp bGQnIHJ1bnMgb3ZlciBSUEMgKCMxMTgzMywgQGdyaWRidWdzKQ0KDQogIOKAoiBTdG9wIGVtaXR0 aW5nIGVtcHR5IG1vZHVsZSBncm91cCB3cmFwcGVyIGAuanMnIGZpbGUgaW4NCiAgICBgbWVsYW5n ZS5lbWl0JyAoIzExOTg2LCBmaXhlcyAjMTE5ODYsIEBhbm1vbnRlaXJvKQ0KDQoNCkV0aWVubmUg TWFyYWlzIGxhdGVyIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCiAgVGhlIER1bmUgVGVhbSBpcyBoYXBweSB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZSBvZiBE dW5lIGAzLjIwLjEnLg0KDQogIFRoaXMgcmVsZWFzZSBpbnRyb2R1Y2VzIHNvbWUgbWlub3IgZml4 ZXMgYW5kIHJldmVydHMgdGhlIGR1bmUgZmlsZQ0KICBmb3JtYXR0ZXIgY2hhbmdlLiBBcyBtZW50 aW9uZWQgYWJvdmUsIHRoZSBmb3JtYXR0ZXIgY2hhbmdlIHdpbGwgYmUNCiAgcmVpbnRyb2R1Y2Vk IGluIGEgbmV4dCByZWxlYXNlIG9uY2UgaXQgaXMgYWJsZSB0byBkZXRlY3QgdGhlIGR1bmUNCiAg cHJvamVjdCB2ZXJzaW9uLg0KDQoNCkNoYW5nZWxvZw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCuKXiiBGaXhlZA0KDQogIOKAoiBGaXggYHJ1bnRlc3QtanMnIG1pc3Rha2VubHkgZGVw ZW5kaW5nIG9uIGBieXRlJyAoZml4ZXMgIzEyMjQzLA0KICAgICMxMjI0MiwgQHZvdWlsbG9uIGFu ZCBAQWxpenRlcikNCg0KICDigKIgRml4IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBwYXRocyBpbiBg ZHVuZSBydW50ZXN0JyB3aGVuIHJ1bm5pbmcgZnJvbQ0KICAgIHdpdGhpbiBhIHN1YmRpcmVjdG9y eS4gKCMxMjI1MSwgZml4ZXMgIzEyMjUwLCBAQWxpenRlcikNCg0KDQril4ogQ2hhbmdlZA0KDQog IOKAoiBSZXZlcnQgZm9ybWF0dGluZyBjaGFuZ2UgaW50cm9kdWNlZCBpbiAzLjIwLjAgbWFraW5n IGxvbmcgbGlzdHMgaW4NCiAgICBzLWV4cHJlc3Npb25zIGZpbGwgdGhlIGxpbmUgaW5zdGVhZCBv ZiBmb3JtYXR0aW5nIHRoZW0gaW4gYSB2ZXJ0aWNhbA0KICAgIHdheSAoIzEyMjQ1LCByZXZlcnRz ICMxMDg5MiwgQG5vamIpDQoNCg0KY3VkYWppdDogQmluZGluZ3MgdG8gdGhlIGBjdWRhJyBhbmQg YG52cnRjJyBsaWJyYXJpZXMNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5u LWN1ZGFqaXQtYmluZGluZ3MtdG8tdGhlLWN1ZGEtYW5kLW52cnRjLWxpYnJhcmllcy8xNTAxMC80 Pg0KDQoNCkx1a2FzeiBTdGFmaW5pYWsgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBjdWRhaml0IDAuNy4yIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIG9wYW0gcmVwb3NpdG9y eS4gSXTigJlzIGEgYnVnLWZpeA0KICByZWxlYXNlLiBOb3RlIHRoYXQgYSBzYWxpZW50IG1pc3Np bmcgZmVhdHVyZSBvZiBjdWRhaml0IGlzIENVREENCiAgZ3JhcGhzLCBpZiB5b3Ugd2FudCB0aGVt IEnigJltIGVhZ2VyIHRvIGFkZCB0aGVtLCBsZXQgbWUga25vdyENCg0KICBPQ0FOTkwgMC42LjAg aXMgYWxzbyBhdmFpbGFibGUgaW4gdGhlIG9wYW0gcmVwb3NpdG9yeS4gSG93ZXZlciwgSSBvbmx5 DQogIGV4cGVjdCBPQ0FOTkwgdG8gYmVjb21lIHVzYWJsZSBhdCB2ZXJzaW9uIDAuOCBkdWUgdG8g aG93IEkgZGVjaWRlZCB0bw0KICBwcmlvcml0aXplIHRoaW5ncy4gVGhlIHVwc2hvdCBpcyB0aGF0 IHRoZSBmcm9udC1lbmQgc2hvdWxkIGJlY29tZQ0KICBwcmV0dHkgc3RhYmxlIHN0YXJ0aW5nIHdp dGggdmVyc2lvbiAwLjcuDQoNCg0KemJnIHYwLjMuMDogTmV3IHJlbGVhc2UgMiB5ZWFycyBsYXRl cg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ DQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4temJnLXYw LTMtMC1uZXctcmVsZWFzZS0yLXllYXJzLWxhdGVyLzE3MTY1LzE+DQoNCg0KRG1pdHJpaSBLb3Zh bmlrb3YgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaSBldmVyeW9u ZSA6d2F2aW5nX2hhbmQ6DQoNCiAgMiB5ZWFycyBhZ28sIEkgY3JlYXRlZCBgemJnJyDigJMgWmVy byBCdWxsc2hpdCBHaXQuIEl0IHdhcyBteSBmaXJzdA0KICBwcm9qZWN0IGluIE9DYW1sIHRvIGxl YXJuIHRoZSBsYW5ndWFnZS4gQnV0IEkgc3RpbGwgdXNlIHRoZSB0b29sDQogIGRhaWx5LiBJdCdz IGp1c3QgYSBzbWFsbCB3cmFwcGVyIGFyb3VuZCBzb21lIGBnaXQnIGNvbW1hbmRzIHRvIG1ha2Ug bXkNCiAgbGlmZSBlYXNpZXIuDQoNCiAg4oCiIDxodHRwczovL2dpdGh1Yi5jb20vY2hzaGVyc2gv emJnPg0KDQogIEkgbWlnaHQgYmUgdGhlIG9ubHkgcGVyc29uIHVzaW5nIHRoaXMgdG9vbCwgYnV0 IGl0IHNhdmVzIG1lIHRpbWUgZXZlcnkNCiAgZGF5LCBhbmQgaXQgYnJpbmdzIGpveSB0byBwcm9n cmFtbWluZywgc28sIGhleSwgdGhhdCdzIGVub3VnaCByZXdhcmQNCiAgZm9yIG1lLg0KDQogIE1v cmVvdmVyLCBJIHJlY2VpdmVkIHNvbWUgaGlnaC1xdWFsaXR5IGNvbnRyaWJ1dGlvbnMgZnJvbSBv dGhlciBwZW9wbGUNCiAgd2hvIGVuaGFuY2VkIHRoZSB0b29sLiBUaGFuayB5b3UgYSBsb3QhIQ0K DQogIEkgbGlrZSB0aGF0IGB6YmcnIGlzIHJhdGhlciBzbWFsbCwgYW5kIEkgaW50ZW5kIHRvIGtl ZXAgaXQgdGhhdCB3YXkuIEkNCiAgYmVsaWV2ZSBpdCBzZXJ2ZXMgYXMgYSBuaWNlIGV4YW1wbGUg b2YgYSBzbWFsbCAoeWV0IHN0aWxsIHVzZWZ1bCkNCiAgcHJvamVjdCBpbiBPQ2FtbC4NCg0KICBB bnl3YXksIEkganVzdCByZWxlYXNlZCBhIG5ldyB2ZXJzaW9uIDIgeWVhcnMgbGF0ZXIuIEhhdmUg YSBsb29rIGlmDQogIHlvdSdyZSBpbnRlcmVzdGVkIQ0KDQogIFByZXZpb3VzIGRpc2N1c3Npb246 DQoNCiAg4oCiIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXpiZy12MC0yLTAtYS1u ZXctdmVyc2lvbi1vZi16ZXJvLWJ1bGxzaGl0LWdpdC8xMzY2ND4NCiAg4oCiIDxodHRwczovL2Rp c2N1c3Mub2NhbWwub3JnL3QvYW5uLXpiZy16ZXJvLWJ1bGxzaGl0LWdpdC8xMTkyOT4NCg0KDQpB bm5vdW5jaW5nIFJhdmVuOiBTY2llbnRpZmljIENvbXB1dGluZyBmb3IgT0NhbWwgKEFscGhhIFJl bGVhc2UpDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L2Fubm91bmNpbmctcmF2ZW4tc2NpZW50aWZpYy1jb21wdXRpbmct Zm9yLW9jYW1sLWFscGhhLXJlbGVhc2UvMTY5MTMvMjg+DQoNCg0KVGhpYmF1dCBNYXR0aW8gYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIANCg0KSGVscCBTaGFwZSBSYXZlbuKAmXMgRmlyc3QgQWxw aGEgLSBDYWxsIGZvciBDb250cmlidXRpb25zIQ0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgSeKAmW0gZXhjaXRlZCB0byBhbm5vdW5j ZSB0aGF0ICpSYXZlbuKAmXMgZmlyc3QgYWxwaGEgaXMgc2NoZWR1bGVkIGluIDMNCiAgd2Vla3Mq LCBqdXN0IGluIHRpbWUgZm9yIEZ1bk9DYW1sISAoRm9sbG93aW5nIG91ciB6ZXJvdGggYWxwaGEg aW4NCiAgSnVseSkNCg0KDQpXaGF04oCZcyBOZXcNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjA0KDQogIFdl4oCZdmUgYWRkZWQgYSBwbGV0aG9yYSBvZiBuZXcgZmVhdHVyZXM6DQoNCiAg 4oCiIE5ldyBgVGFsb24nIHBhY2thZ2UgdGhhdCBwcm92aWRlcyBhbiBlcXVpdmFsZW50IGZvciBQ YW5kYXMvUG9sYXJzIHRvDQogICAgd29yayB3aXRoIGRhdGFmcmFtZXMNCiAg4oCiIE5ldyBgU2Fn YScgcGFja2FnZSBwcm92aWRpbmcgdG9rZW5pemVycyBhbmQgTkxQIGZ1bmN0aW9ubmFsaXRpZXMN CiAgICAoZS5nLiBOZ3JhbSBtb2RlbHMpDQogIOKAoiBTdXBwb3J0IGZvciBzeW1ib2xpYyBzaGFw ZXMgYW5kIGxhenkgdmlld3MgaW4gTngNCiAg4oCiIFN1cHBvcnQgZm9yIG5ldyBhbmQgbWFjaGlu ZS1sZWFybmluZy1zcGVjaWZpYyBkYXRhIHR5cGVzLCBpbmNsdWRpbmcNCiAgICBib29sZWFuLCBi ZmxvYXQxNiwgY29tcGxleDE2LCBmbG9hdDgsIGV0Yy4NCiAg4oCiIFN1cHBvcnQgZm9yIGZvcndh cmQgbW9kZSBkaWZmZXJlbmNpYXRpb24gdGhyb3VnaCBgUnVuZS5qdnAnDQogIOKAoiBTdXBwb3J0 IGZvciBhdXRvbWF0aWMgdmVjdG9yaXphdGlvbiB0aHJvdWdoIGBSdW5lLnZtYXAnDQogIOKAoiBB ZGRpdGlvbiBvZiBhIGNvbXBsZXRlIGxpbmVhciBhbGdlYnJhIHN1aXRlIGluIE54DQoNCiAgQW5k LCBvZiBjb3Vyc2UsIHNpbmNlIGl0IGlzIHRoZSB0aGVtZSBvZiB0aGUgRnVuT0NhbWwgd29ya3No b3A6DQogICphZGRpdGlvbiBvZiB0cmFuc2Zvcm1lcnMgYmxvY2tzIGluIEthdW4gdG8gdHJhaW4g bGFyZ2UgbGFuZ3VhZ2UNCiAgbW9kZWxzLioNCg0KICBBbGwgb2YgdGhlc2UgZmVhdHVyZXMgYXJl IGN1cnJlbnRseSBpbi1wcm9ncmVzcyBpbiBSYXZlbuKAmXMgcmVwb3NpdG9yeSwNCiAgcmFuZ2lu ZyBmcm9tIHJlYWR5LXRvLXJlbGVhc2UgKGUuZy4gVGFsb24pIHRvIHByb3RvdHlwaW5nIChlLmcu IEthdW4ncw0KICB0cmFuc2Zvcm1lcnMpLCBidXQgd2XigJlyZSBhaW1pbmcgZm9yIGEgcmVsZWFz ZSB3aXRoIGFsbCBvZiB0aGUgYWJvdmUNCiAgbWlkLXNlcHRlbWJlci4NCg0KICAjIyMgQ2FsbCBm b3IgQ29udHJpYnV0aW9ucw0KDQogIElmIHlvdSB3ZXJlIGxvb2tpbmcgdG8gY29udHJpYnV0ZSB0 byBSYXZlbiwgbm934oCZcyBwcm9iYWJseSBhIHJlYWxseQ0KICBnb29kIHRpbWUhIFRoZXJl4oCZ cyBnb2luZyB0byBiZSBhIGxvdCBvZiBhY3Rpdml0eSBpbiB0aGUgY29taW5nIHdlZWtzLA0KICBh bmQgdGhlIHJlcG9zaXRvcnkgaXMgaW4gZ29vZCBzaGFwZSBmb3IgZmlyc3QtdGltZS1jb250cmli dXRvcnMsIHdpdGgNCiAgYSBsb3Qgb2YgZ29vZCBmaXJzdCBpc3N1ZXM6IHdl4oCZdmUganVzdCBs YW5kZWQgYSAqY29tcGxldGUgbGluZWFyDQogIGFsZ2VicmEgc3VpdGUqIHRoYXTigJlzIH44MCUg d29ya2luZywgd2hpY2ggbWFrZXMgZm9yIHRoZSBwZXJmZWN0IHNldCBvZg0KICBzdGFydGVyIGlz c3VlczogZmFpbGluZyB0ZXN0cyB0aGF0IG5lZWQgZml4aW5nLg0KDQogIOKAoiAqMTUgZmFpbGlu ZyB0ZXN0cyBvbiB0aGUgbmF0aXZlIGJhY2tlbmQqDQogIOKAoiAqMzUgb24gdGhlIEMgYmFja2Vu ZCoNCg0KICBUaGVzZSByYW5nZSBmcm9tIGltcGxlbWVudGluZyBmcm9udGVuZCBvcGVyYXRpb25z IHVzaW5nIG91ciBuZXcNCiAgYmFja2VuZCBvcHMsIHRvIGludmVzdGlnYXRpbmcgYnVncyBpbiB0 aGUgbmV3bHkgYWRkZWQgbGluZWFyIGFsZ2VicmENCiAgZnVuY3Rpb25zLiBQaWNrIGEgdGVzdCwg Zml4IGl0LCBvcGVuIGEgUFIhDQoNCg0KR2V0dGluZyBTdGFydGVkDQrilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICDilIzilIDilIDilIDilIANCiAg4pSC IGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vcmF2ZW4tbWwvcmF2ZW4NCiAg4pSCIGR1bmUg cGtnIGxvY2sNCiAg4pSCIGR1bmUgYnVpbGQgQG54L3J1bnRlc3QNCiAg4pSU4pSA4pSA4pSA4pSA DQoNCiAgSWYgeW914oCZcmUgaW50ZXJlc3RlZCBpbiBjb250cmlidXRpbmcsIGRvbuKAmXQgaGVz aXRhdGUgdG8gcmVhY2ggb3V0IGFzDQogIHdlbGwsIEnigJltIGhhcHB5IHRvIGdpdmUgcG9pbnRl cnMgYW5kIHNob3cgeW91IGFyb3VuZCB0aGUgY29kZWJhc2UuDQoNCiAgSG9waW5nIHlvdeKAmXJl IGFzIGV4Y2l0ZWQgYWJvdXQgdGhlIHVwY29taW5nIHJlbGVhc2UgYXMgSSBhbSAtIEhhcHB5DQog IEhhY2tpbmchDQoNCg0KT3V0cmVhY2h5IERlbW8gRGF5IEF1Z3VzdCAyMDI1DQrilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNz Lm9jYW1sLm9yZy90L291dHJlYWNoeS1kZW1vLWRheS1hdWd1c3QtMjAyNS8xNzE2Ny8xPg0KDQoN ClBhdHJpY2sgRmVycmlzIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSXQgaXMgbXkg cGxlYXN1cmUgdG8gYW5ub3VuY2UgdGhpcyBGcmlkYXkgW2RhdGU9MjAyNS0wOC0yOQ0KICB0aW1l PTEwOjAwOjAwIHRpbWV6b25lPSJVVEMiXSB3ZSB3aWxsIGhvc3QgdGhlIE91dHJlYWNoeSBEZW1v DQogIHByZXNlbnRhdGlvbi4gV2UgaW52aXRlIGFsbCBvZiB0aGUgT0NhbWwgY29tbXVuaXR5IGFu ZCBiZXlvbmQgdG8gam9pbg0KICB1cyBpbiBjZWxlYnJhdGluZyB0aGUgaGFyZCB3b3JrIG9mIHRo ZSBjb21tdW5pdHnigJlzIHR3byBpbnRlcm5zIHdobw0KICBoYXZlIGJlZW4gd29ya2luZyBvbjoN Cg0KICDigKIgW0NsYXVkaXVzXTogL0EgZmFudGFzeS1jb25zb2xlIHN0eWxlIGdyYXBoaWNzIGxp YnJhcnkgZm9yIE9DYW1sLw0KICDigKIgW0R1bmVdOiAvRXh0ZW5kaW5nIGR1bmUgdG8gZGlzY292 ZXIgc3lzdGVtIGluZm9ybWF0aW9uLw0KDQogIFdl4oCZbGwgcG9zdCB0aGUgbWVldGluZyBsaW5r IGNsb3NlciB0byB0aGUgdGltZS4gSG9wZWZ1bGx5IHNlZSB5b3UNCiAgdGhlcmUhIDpjYW1lbDoN Cg0KDQpbQ2xhdWRpdXNdIDxodHRwczovL2dpdGh1Yi5jb20vY2xhdWRpdXNGWC9DbGF1ZGl1cz4N Cg0KW0R1bmVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvZHVuZT4NCg0KDQpPdGhlciBPQ2Ft bCBOZXdzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAN Cg0KRnJvbSB0aGUgb2NhbWwub3JnIGJsb2cNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhlcmUgYXJlIGxp bmtzIGZyb20gbWFueSBPQ2FtbCBibG9ncyBhZ2dyZWdhdGVkIGF0IFt0aGUgb2NhbWwub3JnDQog IGJsb2ddLg0KDQogIOKAoiBbUHJlc2VudGluZyBvdXIgRWNvbG9neSBvZiB0aGUgSW50ZXJuZXQg aWRlYXMgYXQgQWFyaHVzIDIwMjVdDQogIOKAoiBbVXBjb21pbmcgT0NhbWwgRXZlbnRzXQ0KICDi gKIgW0ludGVybnNoaXAgUmVwb3J0OiBSZWZhY3RvcmluZyBUb29scyBDb21pbmcgdG8gTWVybGlu XQ0KICDigKIgW0FuIE9DYW1sIE1DUCBzZXJ2ZXJdDQogIOKAoiBbV2VlayAzM10NCiAg4oCiIFtT dHJlYW1pbmcgQmluYXJ5IERhdGEgaW4gTW9sbHltYXdrXQ0KICDigKIgW21sZ3B4IGlzIHRoZSBm aXJzdCBUYW5nbGVkLWhvc3RlZCBwYWNrYWdlIGF2YWlsYWJsZSBvbiBvcGFtXQ0KDQoNClt0aGUg b2NhbWwub3JnIGJsb2ddIDxodHRwczovL29jYW1sLm9yZy9ibG9nLz4NCg0KW1ByZXNlbnRpbmcg b3VyIEVjb2xvZ3kgb2YgdGhlIEludGVybmV0IGlkZWFzIGF0IEFhcmh1cyAyMDI1XQ0KPGh0dHBz Oi8vYW5pbC5yZWNvaWwub3JnL25vdGVzL2Vjb2xvZ3ktYXQtYWFyaHVzPg0KDQpbVXBjb21pbmcg T0NhbWwgRXZlbnRzXSA8aHR0cHM6Ly9vY2FtbC5vcmcvZXZlbnRzPg0KDQpbSW50ZXJuc2hpcCBS ZXBvcnQ6IFJlZmFjdG9yaW5nIFRvb2xzIENvbWluZyB0byBNZXJsaW5dDQo8aHR0cHM6Ly90YXJp ZGVzLmNvbS9ibG9nLzIwMjUtMDgtMjAtaW50ZXJuc2hpcC1yZXBvcnQtcmVmYWN0b3JpbmctdG9v bHMtY29taW5nLXRvLW1lcmxpbj4NCg0KW0FuIE9DYW1sIE1DUCBzZXJ2ZXJdDQo8aHR0cHM6Ly9q b24ucmVjb2lsLm9yZy9ibG9nLzIwMjUvMDgvb2NhbWwtbWNwLXNlcnZlci5odG1sPg0KDQpbV2Vl ayAzM10gPGh0dHBzOi8vam9uLnJlY29pbC5vcmcvYmxvZy8yMDI1LzA4L3dlZWszMy5odG1sPg0K DQpbU3RyZWFtaW5nIEJpbmFyeSBEYXRhIGluIE1vbGx5bWF3a10NCjxodHRwczovL2Jsb2cucm9i dXIuY29vcC9hcnRpY2xlcy9zdHJlYW1pbmctYmluYXJpZXMtbW9sbHltYXdrLmh0bWw+DQoNCltt bGdweCBpcyB0aGUgZmlyc3QgVGFuZ2xlZC1ob3N0ZWQgcGFja2FnZSBhdmFpbGFibGUgb24gb3Bh bV0NCjxodHRwczovL2FuaWwucmVjb2lsLm9yZy9ub3Rlcy90YW5nbGVkLWFuZC1jaT4NCg0KDQpP bGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3Mg YSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRv IHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVk IG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0 IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxp c3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRv OmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6 Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVz XSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlz dF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFu IFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= 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 August 19 to 26, 2025.

Tacit 1.0.0 - Combinators!

arutonee announced

Partially as a beginner project (I am very much a beginner- if anyon= e else finds the package useful and feels like something should be changed = or knows more fun combinators, feel free to make a PR as I have no clue wha= t I=E2=80=99m doing), and partially just because I personally want a relati= vely complete combinator library, tacit is now on opam! Now yo= u can write let nth_root =3D C.c (C.phi1 Float.pow C.k (C.b1 (( /. ) = 1.) C.ki)) if you wanted to, for whatever reason :wink:

Xavier Van de Woestyne then added

Here is the package page: http= s://ocaml.org/p/tacit/latest

here is the repository: http= s://github.com/arutonee1/tacit

Slipshow!

Paul-Elliot announced

(I hope it's still OK to announce my releases here, despite their current f= requencies and the fact that it's not an OCaml li= brary.)

I am speechless to announce the new opam release of Slipshow!

Version 0.6.0: The King=E2=80=99s Slipshow

This release focuses on one specific feature: the speaker view.

https://github.com/user-attachments/assets/6f1384f0-715c-4= af7-80d6-7da9c0b9744b

(Disclaimer: AI generated text ^[The text in the left of the gif above was = mostly generated by an LLM, mimicking "The King's speech" declaration of wa= r, but turned to praise peace, which we need a lot in this world])

The speaker view includes a timer, speaker notes, and a presentation synced= with the main one. Note that a compiled presentation is still a standalone= html file that you can just double click on.

To open the speaker view, press s. To send some text to the sp= eaker notes, use the speaker-note action, as in the code below:

# The King's Slipshow

{pause speaker-note}
Say it like this: "perhaaaaaaaaps"...

In this grave hour, perhaps the most fateful in our history, I send to ever=
y household of my peoples, both at home and overseas, this message, spoken =
with the same depth of feeling for each one of you as if I were able to cro=
ss your threshold and speak to you myself.

{pause speaker-note}
Make a little pause and show a tear, it'll make it more dramatic.

As always, the world finds itself standing on the edge of war.

{pause center=3Dtime speaker-note}
Emphasize roar but avoid making everyone uncomfortable.

{#time}
Time after time, we have sought peaceful ways to resolve our differences. Y=
et too often, dialogue has been drowned out by the roar of weapons.

{pause speaker-note}
Pretend you know what you are speaking about: as a King, you can do that.

We are told that violence is unavoidable, that to be safe we must fight. Bu=
t this is the old and dangerous lie that =E2=80=9Cmight is right.=E2=80=9D =
If we accept it, we accept the slow destruction of all that makes life wort=
h living.

{pause down=3Dend speaker-note}
DRAMATICALLY POINT FINGERS AT THE AUDIENCE!!!

For the sake of all we cherish, we must find another path. The real challen=
ge before us is not to fight harder, but to imagine peace when anger blinds=
 us, and to choose cooperation when conflict seems easier.

I call on all people, across every border, to remain calm, firm, and united=
 in the higher cause of preserving life. To resist the call of hatred. To r=
emember that in every city, in every nation, there are children who deserve=
 a future unscarred by war.

The road will be hard. There may be days when peace feels impossible. But w=
ar spreads beyond the battlefield =E2=80=94 it steals homes, divides famili=
es, and poisons the generations to come.

{#end}
If we remain steadfast in our refusal to give in to violence, then, with co=
urage and compassion, we will prevail =E2=80=94 not by destroying, but by p=
reserving.

Full changelog below:

  • Engine
    • Add a speaker view, opened with s. (#147)
    • Fix Z and X not working (#147)
    • On step change, move back to the position we left (#148)
  • Language
    • Add a speaker-note action. (#147)

Claudius is now available in opam! =F0=9F=8E=89

Shreya Pawaskar announced

We are happy to announce that Claudius is now available in opam!

Claudius is a functional style retro-graphics library for OCaml for buildin= g generative art, demos, and games.

Here=E2=80=99s our github: Claudius

And some cool examples to checkout and explore more: claudius-examples

New release of UnionFind

Fran=C3=A7ois Pottier announced

Hello! It is my pleasure to announce a new release of my library unio= nFind. The main news is that a concurrent union-find algorithm is no= w available under the name UnionFind.Concurrent. To install it= , type opam update && opam install unionFind.20250818.= For more information, see the documentation.

Bogue, the OCaml GUI

sanette announced

Hello

it=E2=80=99s my pleasure to announce a new version of Bogue, version 20250815 available on opam.

The main novelty is an internationalization mechanism. All text used= by Bogue (like =E2=80=98close=E2=80=99 in a close button) will be automati= cally translated into the user=E2=80=99s language. Currently 15 languages a= re supported but more can easily be added either via configuration files, o= n directly at run-time using the i18n API.

note: Internationalization has been tested only for a small number of appli= cations; don=E2=80=99t hesitate to report bugs.

Happy bogue-ing!

Dune 3.20

Etienne Marais announced

On the behalf of the Dune Team, I=E2=80=99m glad to announce the release of= dune 3.20.0 :partying_face:=20

This release contains some important bug fixes. It contains new features fo= r tests, such as the possibility to use an alias and the possibility to dec= lare a timeout for cram tests. This release also provides new= possibilities for the watch mode, like the ability to run an execut= able or promote files while the watch mode is running.

:warning: A significant change in this release is how the dune file formatt= er acts. It will now try to fill the line instead of using the vertical for= mat.

If you encounter a problem with this release, you can report it on the ocaml/dune repository.

Changelog

  • Fixed
    • Stop re-running cram tests after promotion when it=E2=80=99s not necess= ary (#11994, @rgrinberg)
    • fix: $ dune subst should not fail when adding the version = field in opam files (#11801, fixes #11045, @btjorge)
    • Kill all processes in the process group after the main process has terminated; in particular this avoids background processes in cram tests to stick around after the test finished (#11841, fixes #11820, @Alizter, @Leonidas-from-XIV)
  • Added
    • (tests) stanzas now generate aliases with the test name. T= o run (test (name a)) you can do dune build @runtest-a.= (#11558, grants part of #10239, @Alizter)
    • Inline test libraries now produce aliases runtest-name_of_lib allowing users to run specific inline tests as dune build @runtest-na= me_of_lib. (#11109, partially fixes #10239, @Alizter)
    • feature: $ dune subst use version from dune-project<= /code> when no version control repository has been detected (#11801, @btjorge)
    • Allow dune exec to run concurrently with another instance = of dune in watch mode (#11840, @gridbugs)
    • Introduce %{os}, %{os_version}, %{os_di= stribution}, and %{os_family} percent forms. These have the same values as their opam counterparts. (#11863, @rgrinberg)
    • Introduce option (implicit_transitive_deps false-if-hidden-includ= es-supported) that is equivalent to (implicit_transitive_deps false) when -H is supported by the compiler (OCaml >=3D 5.2) and equivalent to (implicit_transitive_deps true) otherwise. (#11866, fixes #112= 12, @nojb)
    • Add dune describe location for printing the path to the ex= ecutable that would be run (#11905, @gridbugs)
    • dune runtest can now understand absolute paths as well as = run tests in specific build contexts (#11936, @Alizter).
    • Added =E2=80=98empty=E2=80=99 alias which contains no targets. (#11556 = #11952 #11955 #4161, grants #4161, @Alizter and @rgrinberg)
    • Allow dune promote to properly run while a watch mode serv= er is running (#12010, @ElectreAAS)
    • Add --alias and --alias-rec flags as an alter= native to the @@ and @ syntax in the command line (#5775, fixes #5775, @rgrinberg)
    • Added a (timeout <float>) field to the (cram)<= /code> stanza to specify per-test time limits. Tests exceeding the timeout are terminated with an error. (#12041, @Alizter)
  • Changed
    • Format long lists in s-expressions to fill the line instead of formatting them in a vertical way (#10860, fixes #10860, @nojb)
    • Switch from MD5 to BLAKE3 for digesting targets and rules. BLAKE3 is bo= th more performant and difficult to break than MD5 (#11735, @rgrinberg, @Alizter)
    • Print a warning when dune build runs over RPC (#11833, @gr= idbugs)
    • Stop emitting empty module group wrapper .js file in melange.emit (#11986, fixes #11986, @anmonteiro)

Etienne Marais later announced

The Dune Team is happy to announce the release of Dune 3.20.1.

This release introduces some minor fixes and reverts the dune file formatte= r change. As mentioned above, the formatter change will be reintroduced in = a next release once it is able to detect the dune project version.

Changelog

  • Fixed
    • Fix runtest-js mistakenly depending on byte (= fixes #12243, #12242, @vouillon and @Alizter)
    • Fix the interpretation of paths in dune runtest when runni= ng from within a subdirectory. (#12251, fixes #12250, @Alizter)
  • Changed
    • Revert formatting change introduced in 3.20.0 making long lists in s-expressions fill the line instead of formatting them in a vertical way (#12245, reverts #10892, @nojb)

cudajit: Bindings to the cuda and nvrtc libraries

Lukasz Stafiniak announced

cudajit 0.7.2 is now available in the opam repository. It=E2=80=99s a bug-f= ix release. Note that a salient missing feature of cudajit is CUDA graphs, = if you want them I=E2=80=99m eager to add them, let me know!

OCANNL 0.6.0 is also available in the opam repository. However, I only expe= ct OCANNL to become usable at version 0.8 due to how I decided to prioritiz= e things. The upshot is that the front-end should become pretty stable star= ting with version 0.7.

zbg v0.3.0: New release 2 years later

Dmitrii Kovanikov announced

Hi everyone :waving_hand:=20

2 years ago, I created zbg =E2=80=93 Zero Bullshit Git. It was= my first project in OCaml to learn the language. But I still use the tool = daily. It's just a small wrapper around some git commands to m= ake my life easier.

I might be the only person using this tool, but it saves me time every day,= and it brings joy to programming, so, hey, that's enough reward for me.

Moreover, I received some high-quality contributions from other people who = enhanced the tool. Thank you a lot!!

I like that zbg is rather small, and I intend to keep it that = way. I believe it serves as a nice example of a small (yet still useful) pr= oject in OCaml.

Anyway, I just released a new version 2 years later. Have a look if you're = interested!

Previous discussion:

Announcing Raven: Scientific Computing for OCaml (Alpha Relea= se)

Thibaut Mattio announced

Help Shape Raven=E2=80=99s First Alpha - Call for Con= tributions!

I=E2=80=99m excited to announce that Raven=E2=80=99s first alpha is sche= duled in 3 weeks, just in time for FunOCaml! (Following our zeroth alph= a in July)

What=E2=80=99s New

We=E2=80=99ve added a plethora of new features:

  • New Talon package that provides an equivalent for Pandas/P= olars to work with dataframes
  • New Saga package providing tokenizers and NLP functionnali= ties (e.g. Ngram models)
  • Support for symbolic shapes and lazy views in Nx
  • Support for new and machine-learning-specific data types, including boo= lean, bfloat16, complex16, float8, etc.
  • Support for forward mode differenciation through Rune.jvp<= /li>
  • Support for automatic vectorization through Rune.vmap
  • Addition of a complete linear algebra suite in Nx

And, of course, since it is the theme of the FunOCaml workshop: addition= of transformers blocks in Kaun to train large language models.

All of these features are currently in-progress in Raven=E2=80=99s reposito= ry, ranging from ready-to-release (e.g. Talon) to prototyping (e.g. Kaun's = transformers), but we=E2=80=99re aiming for a release with all of the above= mid-september.

### Call for Contributions

If you were looking to contribute to Raven, now=E2=80=99s probably a really= good time! There=E2=80=99s going to be a lot of activity in the coming wee= ks, and the repository is in good shape for first-time-contributors, with a= lot of good first issues: we=E2=80=99ve just landed a complete linear a= lgebra suite that=E2=80=99s ~80% working, which makes for the perfect s= et of starter issues: failing tests that need fixing.

  • 15 failing tests on the native backend
  • 35 on the C backend

These range from implementing frontend operations using our new backend ops= , to investigating bugs in the newly added linear algebra functions. Pick a= test, fix it, open a PR!

Getting Started

git clone https://github.com/raven-ml/ra=
ven
dune pkg lock
dune build @nx/runtest

If you=E2=80=99re interested in contributing, don=E2=80=99t hesitate to rea= ch out as well, I=E2=80=99m happy to give pointers and show you around the codebase.

Hoping you=E2=80=99re as excited about the upcoming release as I am - Happy= Hacking!

Outreachy Demo Day August 2025

Patrick Ferris announced

It is my pleasure to announce this Friday [date=3D2025-08-29 time=3D10:00:0= 0 timezone=3D"UTC"] we will host the Outreachy Demo presentation. We invite= all of the OCaml community and beyond to join us in celebrating the hard w= ork of the community=E2=80=99s two interns who have been working on:

  • Claudius: A f= antasy-console style graphics library for OCaml
  • Dune: Extending dune t= o discover system information

We=E2=80=99ll post the meeting link closer to the time. Hopefully see you t= here! :camel:

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.

--=-=-=--