From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTP id E34BD5D5 for ; Tue, 19 Apr 2022 05:35:14 +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=8G3fcpQUO0MVseS7wJ2njr7CTSXmj3mNnFsPj5sMttA=; b=BEonxPChx+jObaLeBb/8ICui0FZwg/BaQx/MEwQz9FCuIYHzzvThf5DJ Aep580rDYFzwernGyyS4IqPSkfraJ309N1E/eSRl/t0DtMuBgTrgrAS/9 KTfkA4kVb3zz2b2SiIzQZ54oxhziYkC3HE+sssoqTbet/BbulBjmYAaB7 w=; 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@sympa.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.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 ip4:192.134.164.0/24 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="5.90,271,1643670000"; d="scan'208,217";a="32202621" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 19 Apr 2022 07:35:13 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id ECAD5E034F; Tue, 19 Apr 2022 07:35:12 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id A6628E02B4 for ; Tue, 19 Apr 2022 07:35:08 +0200 (CEST) IronPort-SDR: kFHjX2GJZcffcdY01LYRPDPDVNzFU7WbNjybwK4NA/gUncriAgRK9lq7SCm/q4nhM58dXDUpQp 1vPkXhG28/RogTVqu7Wq2aB9F7YPcBvYnVugNyIDDQ2UDi+hlO9TNo7P0gvANqhGnMVLkGGh0M fS42B9l1HNu3dKxo7y7kjizhjTdEqChB61OGCnaGB6ChP955S8ckTdhNf91pg/W5p0PEifGl4w DpcxK7PlpOrL6FF/e50dHxF8P7YjuVurXMspObng8MQm7LbjpzkCqE+f3H3Lc4s7W/M3jl4QZw qymml7rqDz3CfDe+RZr/LZ94 X-IPAS-Result: =?us-ascii?q?A0DaAABlSV5imCIeaIFahARfKBkBZFctBwhDhFSOTAGCS?= =?us-ascii?q?olPkzOBEQNfAQMBDSwBDgUBAgQBAYIPgnQCFgYzAQSEMwIeBgEFMxMBAgQBA?= =?us-ascii?q?QEBAwIDAQEBAQEBAwEBBQEBAQIBAQIEBAETAQEBAQEBAQEJCwkHBgwFEA4FP?= =?us-ascii?q?GRkBIFLBIF0CzQNgiITDAwDA4N3ARYFBgpHHiMDFAcDAgQNARcBHgMBEwESG?= =?us-ascii?q?QGCDF4BgxkEAQqOZJwRgTGBATuDFAEDAxAPhCKBZSSBGYYWWEoBgwSEGCkQg?= =?us-ascii?q?VVEg1A9Am6CTBcBAQEBAYEjBQERAgEIIS2DIIJlBJsPJQ44Bg8cExYFCRMVB?= =?us-ascii?q?QEHDBACBQFQCDgBIx0OCRUFBykLCwItA4xPhUwDJwOPDokkgl2RRhljNAeDT?= =?us-ascii?q?IE8BgyIK4EgiyaBVHKHMYN0gU+KapgmIZY9IIkegRmCR5Q9BA+FKIFOKmsjc?= =?us-ascii?q?DMaMIJ4AQEBMQlFAQMCDQECAgMBAgECCQEBAo4pFoNQe4FpgXU7hUw/NAIBA?= =?us-ascii?q?TQCBgEKAQEDCYVjAQEFEwsBjHNeAQE?= IronPort-PHdr: A9a23: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 dGJ5sq2ow== IronPort-Data: A9a23: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 77s IronPort-HdrOrdr: A9a23:b43ZYq0ukObFgUkx3TyIiwqjBLUkLtp133Aq2lEZdPU1SKylfq +V88jzuSWftN9zYhAdcLK7VpVoKEm0nfVICOIqUYtKMjOKhEKYaKlcqaHizzfjFyCWzJ8/6Y 5QN45kBpnVBVh+5PyKhTVQ/uxQouW6zA== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.90,271,1643670000"; d="scan'208,217";a="11823109" X-MGA-submission: =?us-ascii?q?MDG8tixO5aMwOCuC6v4SkVZlKg8+yT/p+rNp+s?= =?us-ascii?q?IsxX5wJZxPgiScUIq/nzXHVX3B896l76RhrEPSI1GizkXae6ZkBzU/9I?= =?us-ascii?q?noN4yxFMHJq5bClZXJ8QRB01aaTd8lBFOsdG54ZNXXnQVDpXoGqhdwyJ?= =?us-ascii?q?oK2Xnh8Zca7NZMIffCoFVNXw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2022 07:35:04 +0200 Received: from set (unknown [109.190.253.14]) (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 D5A7E564834; Tue, 19 Apr 2022 07:35:01 +0200 (CEST) From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 19 Apr 2022 07:34:49 +0200 Message-ID: <87a6chiqkm.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Apr 19 07:35:02 2022 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.290052, queueID=95E52564835 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: 18743 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgQXByaWwgMTIgdG8gMTksDQoyMDIyLg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCkx3dCBpbmZv cm1hbCB1c2VyIHN1cnZleQ0KcHltbF9iaW5kZ2VuOiBhIENMSSBhcHAgdG8gZ2VuZXJhdGUgUHl0 aG9uIGJpbmRpbmdzIGRpcmVjdGx5IGZyb20gT0NhbWwgdmFsdWUgc3BlY2lmaWNhdGlvbnMNCkNy ZWF0aW5nIGEgbGlicmFyeSBmb3IgdXNlIGZyb20gSlMgd2l0aCBqc19vZl9vY2FtbA0Kb2NhbWwt bHNwLXNlcnZlciAxLjExLjANCk9DYW1sIHN1bW1lciBzY2hvb2wgaW4gU3BhaW4sIGNhbGwgZm9y IGluZHVzdHJ5IHNwZWFrZXJzDQpEdW5lIDMuMS4wDQpPbGQgQ1dODQoNCg0KTHd0IGluZm9ybWFs IHVzZXIgc3VydmV5DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L2x3dC1pbmZvcm1hbC11c2VyLXN1cnZleS85NjY2LzE+DQoNCg0KUmFw aGHDq2wgUHJvdXN0IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSW4gb3JkZXIgdG8g bWFrZSBzb21lIGRlY2lzaW9ucyByZWxhdGluZyB0byB0aGUgbWFpbnRlbmFuY2Ugb2YgTHd0LA0K ICBJJ2QgbGlrZSB0byBrbm93IGEgbGl0dGxlIGJpdCBtb3JlIGFib3V0IGhvdyB0aGUgbGlicmFy eSBpcyB1c2VkIGluDQogIHRoZSB3aWxkLiBEbyBub3QgaGVzaXRhdGUgdG8gcmVzcG9uZCB0byB0 aGUgcG9sbCBhbmQvb3IgYXMgYSBtZXNzYWdlDQogIGluIHRoaXMgdGhyZWFkLCBvciBldmVuIHRv IGNvbnRhY3QgbWUgdmlhIG90aGVyIG1lYW5zIGluIGNhc2UgZGlzY3Vzcw0KICBpcyBub3QgeW91 ciBqYW0uDQoNCiAgL0VkaXRvcuKAmXMgbm90ZTogcGxlYXNlIGZvbGxvdyB0aGUgbGluayBhYm92 ZSB0byByZXBseSB0byB0aGUgc3VydmV5Li8NCg0KDQpweW1sX2JpbmRnZW46IGEgQ0xJIGFwcCB0 byBnZW5lcmF0ZSBQeXRob24gYmluZGluZ3MgZGlyZWN0bHkgZnJvbSBPQ2FtbCB2YWx1ZSBzcGVj aWZpY2F0aW9ucw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tcHlt bC1iaW5kZ2VuLWEtY2xpLWFwcC10by1nZW5lcmF0ZS1weXRob24tYmluZGluZ3MtZGlyZWN0bHkt ZnJvbS1vY2FtbC12YWx1ZS1zcGVjaWZpY2F0aW9ucy84Nzg2Lzc+DQoNCg0KQ29udGludWluZyB0 aGlzIHRocmVhZCwgUnlhbiBNb29yZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQog IEkgd3JvdGUgYSBbYmxvZyBwb3N0XSBwcm92aWRpbmcgYW4gaW50cm9kdWN0aW9uIHRvIGBweW1s X2JpbmRnZW4nLiAgSXQNCiAgZ2l2ZXMgYW4gaW50cm8gaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQg c3R5bGUgYXMgY29tcGFyZWQgdG8gdGhlIFtkb2NzXQ0KICBhbmQgdGhlIFtleGFtcGxlc10sIGFu ZCBpbmNsdWRlcyBzb21lIG9mIHRoZSBsYXRlc3QgZmVhdHVyZXMgSSd2ZSBiZWVuDQogIHdvcmtp bmcgb24uDQoNCg0KW2Jsb2cgcG9zdF0NCjxodHRwczovL3d3dy50ZW5kZXJpc3RoZWJ5dGUuY29t L2Jsb2cvMjAyMi8wNC8xMi9vY2FtbC1weXRob24tYmluZGdlbi8+DQoNCltkb2NzXSA8aHR0cHM6 Ly9tb29yZXJ5YW4uZ2l0aHViLmlvL29jYW1sX3B5dGhvbl9iaW5kZ2VuLz4NCg0KW2V4YW1wbGVz XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9tb29yZXJ5YW4vb2NhbWxfcHl0aG9uX2JpbmRnZW4vdHJl ZS9tYWluL2V4YW1wbGVzPg0KDQoNCkNyZWF0aW5nIGEgbGlicmFyeSBmb3IgdXNlIGZyb20gSlMg d2l0aCBqc19vZl9vY2FtbA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ DQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9jcmVhdGluZy1h LWxpYnJhcnktZm9yLXVzZS1mcm9tLWpzLXdpdGgtanMtb2Ytb2NhbWwvOTUyMy81Pg0KDQoNCkRl ZXAgaW4gdGhpcyB0aHJlYWQsIHRocmVlcHdvb2Qgc2FpZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgQ2F1dGlvbmFyeSBub3RlIGZvciBh bnlvbmUgcmVhZGluZyB0aGlzIGluIHRoZSBmdXR1cmU6IGR5bmFtaWMgaW1wb3J0cw0KICBhcmUg YXN5bmNocm9ub3VzLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBqc29vIHJ1bnRpbWUgdGFrZXMgc29t ZQ0KICBtaWxsaXNlY29uZHMsIHNvIHRoYXQgaWYgeW91IGp1c3QgZG86DQogIOKUjOKUgOKUgOKU gOKUgA0KICDilIIgaW1wb3J0KCJvY2FtbC9leHBvcnQuYmMuanMiKTsNCiAg4pSCIHZhciB4ID0g bXlsaWIubXlmdW5jdGlvbigpOw0KICDilJTilIDilIDilIDilIANCiAgdGhlIHNlY29uZCBsaW5l IHdpbGwgZmFpbCBhcyBgbXlsaWInIGlzIG5vdCBkZWZpbmVkIHlldCAoYXQgbGVhc3QgdGhpcw0K ICBpcyB3aGF0IEkgdGhpbmsgaXMgaGFwcGVuaW5nKS4gWW91IG5lZWQgdG8gZ3VhcmFudGVlIHRo ZSBtb2R1bGUgaXMNCiAgZG9uZSBpbml0aWFsaXppbmcgaW4gc29tZSB3YXkgb3Igb3RoZXIuDQoN Cg0KS2ltIE5ndXnhu4VuIHRoZW4gc2FpZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgYGltcG9ydCcgc2hvdWxkIHJldHVy biBhIHByb21pc2Ugb2YgdGhlIGxvYWRlZCBtb2R1bGUuIFNvIHlvdSBjYW4ganVzdA0KICBgYXdh aXQnIGZvciBpdCAoaWYgeW91ciBjdXJyZW50IGNvbnRleHQgYWxsb3dzIHlvdSB0byB3cml0ZSBg YXdhaXQnKQ0KICBvciBqdXN0IDoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAgaW1wb3J0KCJv Y2FtbC9leHBvcnQuYmMuanMiKS50aGVuICgoXykgPT4gew0KICDilIIgDQogIOKUgiAgbXlsaWIu bXlmdW5jdGlvbigpOw0KICDilIIgDQogIOKUgiB9KTsNCiAg4pSU4pSA4pSA4pSA4pSADQoNCg0K b2NhbWwtbHNwLXNlcnZlciAxLjExLjANCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxo dHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW9jYW1sLWxzcC1zZXJ2ZXItMS0xMS0wLzk2 NzcvMT4NCg0KDQpSdWRpIEdyaW5iZXJnIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgT24g YmVoYWxmIG9mIHRoZSBvY2FtbGxzcCB0ZWFtLCBJJ20gZXhjaXRlZCB0byBhbm5vdW5jZSB0aGUN CiAgYXZhaWxhYmlsaXR5IG9mIHZlcnNpb24gMS4xMS4wLiBUaGlzIHJlbGVhc2UgaXMgYW4gaW1w b3J0YW50IG1pbGVzdG9uZQ0KICBmb3IgdGhlIHByb2plY3QgYmVjYXVzZSBpdCBpbnRyb2R1Y2Vz IGludGVncmF0aW9uIHdpdGggb3VyIGZhdm9yaXRlDQogIGJ1aWxkIHN5c3RlbS4gV2hlbiB5b3Ug cnVuIGR1bmUgaW4gd2F0Y2ggbW9kZSwgeW91IHdpbGwgbm93IGJlIGFibGUgdG8NCiAgc2VlIGJ1 aWxkIGVycm9ycyBpbiB0aGUgZGlhZ25vc3RpY3MgcGFuZWwgb2YgeW91ciBlZGl0b3IuIEl0J3Mg YWxsDQogIHJhdGhlciBleHBlcmltZW50YWwgZm9yIG5vdywgc28geW91ciBmZWVkYmFjayBhbmQg YnVnIHJlcG9ydHMgYXJlDQogIGFwcHJlY2lhdGVkLg0KDQogIEFzIHVzdWFsLCB0aGUgZnVsbCBj aGFuZ2UgbG9nIGlzIGJlbG93Lg0KDQogIEhhcHB5IGhhY2tpbmcuDQoNCiAgKjEuMTEuMCoNCg0K DQpGZWF0dXJlcw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCiIEFkZCBzdXBwb3J0 IGZvciBkdW5lIGluIHdhdGNoIG1vZGUuIFRoZSBsc3Agc2VydmVyIHdpbGwgbm93IGRpc3BsYXkN CiAgICBidWlsZCBlcnJvcnMgaW4gdGhlIGRpYWdub3N0aWNzIGFuZCBvZmZlciBwcm9tb3Rpb24g Y29kZSBhY3Rpb25zLg0KDQogIOKAoiBSZS1pbnRyb2R1Y2Ugb2NhbWxmb3JtYXQtcnBjICgjNTk5 LCBmaXhlcyAjNDk1KQ0KDQoNCkZpeGVzDQrilYzilYzilYzilYzilYwNCg0KICDigKIgRml4IHdv cmtzcGFjZSBzeW1ib2xzIHRoYXQgY291bGQgaGF2ZSBhIHdyb25nIHBhdGggaW4gc29tZSBjYXNl cw0KICAgIChbIzY3NV0pDQoNCg0KWyM2NzVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2Nh bWwtbHNwL3B1bGwvNjcxPg0KDQoNCk9DYW1sIHN1bW1lciBzY2hvb2wgaW4gU3BhaW4sIGNhbGwg Zm9yIGluZHVzdHJ5IHNwZWFrZXJzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9j YW1sLm9yZy90L29jYW1sLXN1bW1lci1zY2hvb2wtaW4tc3BhaW4tY2FsbC1mb3ItaW5kdXN0cnkt c3BlYWtlcnMvOTY4NS8xPg0KDQoNClJvYmVydG8gQmxhbmNvIGFubm91bmNlZA0K4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSADQoNCiAgRGVhciBhbGwsIFJpY2FyZG8gUm9kcsOtZ3VleiBhbmQgSSBhcmUgb3JnYW5p emluZyBhbiBpbnRyb2R1Y3RvcnkgT0NhbWwNCiAgY291cnNlIGFzIHBhcnQgb2YgdGhlIGFubnVh bCBzdW1tZXIgc2Nob29sIG9mIHRoZSBVbml2ZXJzaXR5IG9mDQogIFphcmFnb3phIGluIFNwYWlu LiAoVGhpcyBpcyB0aGUgb2xkZXN0IHN1bW1lciB1bml2ZXJzaXR5IGluIHRoZQ0KICBjb3VudHJ5 LCBuZWFyaW5nIGl0cyBjZW50ZW5uaWFsIGFubml2ZXJzYXJ5ISkuIFRoZSBjb3VudHJ5J3MgY29t cHV0aW5nDQogIHByb2dyYW1zIGFyZSBxdWl0ZSBleGNlbGxlbnQsIGFsdGhvdWdoIHdlIGhhdmUg Zm91bmQgdGhlbSB0byBnZW5lcmFsbHkNCiAgbm90IHBheSBzZXJpb3VzIGF0dGVudGlvbiB0byBt b2Rlcm4gZnVuY3Rpb25hbCBwcm9ncmFtbWluZy4gT3VyIGdvYWwNCiAgaXMgdG8gdXNlIE9DYW1s IHRvIGJlZ2luIHRvIGFkZHJlc3MgdGhpcyBkZWFydGguDQoNCiAgSW4gYWRkaXRpb24gdG8gdGhl IHJlZ3VsYXIgYWNhZGVtaWMgcHJvZ3JhbSB3ZSBhcmUgcGxhbm5pbmcgYQ0KICBzYXRlbGxpdGUg ZXZlbnQgb3BlbiB0byB0aGUgZ2VuZXJhbCBwdWJsaWMuIFRoaXMgaXMgbWVhbnQgdG8gaW50cm9k dWNlDQogIHRoZSBPQ2FtbCBlY29zeXN0ZW0gdG8gYSB3aWRlciBhdWRpZW5jZSBvZiBzdHVkZW50 cyBhbmQgYWNhZGVtaWNzLCBhcw0KICB3ZWxsIGFzIHByb2Zlc3Npb25hbHMuIEFzIHBhcnQgb2Yg dGhpcywgd2Ugd291bGQgbGlrZSB0byBob2xkIGEgcm91bmQNCiAgdGFibGUgZGlzY3Vzc2lvbiBv ZiBpbmR1c3RyaWFsIE9DYW1sIHVzZXJzIHRvIGRlbW9uc3RyYXRlIHRoZSB3aWR0aA0KICBhbmQg ZGVwdGggb2YgcHJhY3RpY2FsIHVzZXMgb2YgdGhlIGxhbmd1YWdlLiBUaGVyZSB3aWxsIGJlIHRp bWUgZm9yDQogIHBhcnRpY2lwYW50cyB0byBwcmVzZW50IHRoZWlyIHdvcmsgaW4gbW9yZSBkZXRh aWwsIGlmIHRoZXkgd2lzaCB0byBkbw0KICBzby4NCg0KICBJZiB5b3UgbWF5IGJlIGludGVyZXN0 ZWQgaW4gcGFydGljaXBhdGluZyBvciBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwNCiAgZnJlZSB0 byB3cml0ZSB0byBtZSBoZXJlIG9yIHNlbmQgZW1haWwgdG8gZWl0aGVyIG9mIHVzLiBUaGUgY291 cnNlIGlzDQogIGN1cnJlbnRseSBpbiBpdHMgcGxhbm5pbmcgc3RhZ2VzOyBpdCBpcyBzY2hlZHVs ZWQgdG8gdGFrZSBwbGFjZSBpbg0KICBlYXJseSB0byBtaWQgSnVseSwgaW4gYWxsIGxpa2VsaWhv b2QgaW4gdGhlIGNpdHkgb2YgWmFyYWdvemEgYW5kIGluDQogIGh5YnJpZCBmb3JtYXQuIFRoZSBP Q2FtbCBTb2Z0d2FyZSBGb3VuZGF0aW9uIGlzIGJhY2tpbmcgdGhlIGluaXRpYXRpdmUNCiAgYW5k IHdlIHRoYW5rIHRoZW0gZm9yIHRoZWlyIGdlbmVyb3VzIHN1cHBvcnQuDQoNCiAgVXBkYXRlZCBp bmZvcm1hdGlvbiBhYm91dCB0aGUgY291cnNlIHdpbGwgYmUgYXZhaWxhYmxlIG9uIGl0cyB3ZWJz aXRlOg0KICA8aHR0cHM6Ly93ZWJkaWlzLnVuaXphci5lcy9ldnBmLz4NCg0KDQpEdW5lIDMuMS4w DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L2Fubi1kdW5lLTMtMS0wLzk2OTAvMT4NCg0KDQpSdWRpIEdyaW5i ZXJnIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgT24gYmVoYWxmIG9mIHRoZSBkdW5lIHRl YW0sIEknbSBwbGVhc2VkIHRvIGFubm91bmNlIHZlcnNpb24NCiAgMy4xLjAuIFRoaXMgcmVsZWFz ZSBjb250YWlucyBzb21lIHNtYWxsLCBidXQgaW50ZXJlc3RpbmcgZmVhdHVyZXMsIGFuZA0KICBz b21lIGltcG9ydGFudCBxdWFsaXR5IG9mIGxpZmUgYnVnIGZpeGVzLiBJIGVuY291cmFnZSBldmVy eW9uZSB0bw0KICB1cGdyYWRlIGFzIHNvb24gYXMgcG9zc2libGUuDQoNCiAgSGFwcHkgSGFja2lu Zy4NCg0KICAqMy4xLjAgKDE1LzA0LzIwMjIpKg0KDQogIOKAoiBBZGQgYHNvdXJjZWh1dCcgYXMg YW4gb3B0aW9uIGZvciBkZWZpbmluZyBwcm9qZWN0IHNvdXJjZXMgaW4NCiAgICBkdW5lLXByb2pl Y3QgZmlsZXMuIEZvciBleGFtcGxlLCBgKHNvdXJjZSAoc291cmNlaHV0DQogICAgdXNlci9yZXBv KSknLiAoIzU1NjQsIEByZ3JpbmJlcmcpDQoNCiAg4oCiIEFkZCBgZHVuZSBjb3EgdG9wJyBjb21t YW5kIGZvciBydW5uaW5nIGEgQ29xIHRvcGxldmVsICgjNTQ1NywNCiAgICBAcmxlcGlncmUpDQoN CiAg4oCiIEZpeCBkdW5lIGV4ZWMgZHVtcGluZyBkYXRhYmFzZSBpbiB3cm9uZyBkaXJlY3Rvcnkg KCM1NTQ0LCBAYm9ib3QpDQoNCiAg4oCiIEFsd2F5cyBvdXRwdXQgYWJzb2x1dGUgcGF0aHMgZm9y IGxvY2F0aW9ucyBpbiBSUEMgcmVwb3J0ZWQNCiAgICBkaWFnbm9zdGljcyAoIzU1MzksIEByZ3Jp bmJlcmcpDQoNCiAg4oCiIEFkZCBgKGRlcHMgPGRlcHM+KScgaW4gY3R5cGUgZmllbGQgKCM1MzQ2 LCBAYm9ib3QpDQoNCiAg4oCiIEFkZCBgKGluY2x1ZGUgPGZpbGU+KScgY29uc3RydWN0b3IgdG8g ZGVwZW5kZW5jeQ0KICAgIHNwZWNpZmljYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGludHJv ZHVjZSBkeW5hbWljIGRlcGVuZGVuY2llcw0KICAgICgjNTQ0MiwgQGFubW9udGVpcm8pDQoNCiAg 4oCiIEVuc3VyZSB0aGF0IGBkdW5lIGRlc2NyaWJlJyBjb21wdXRlcyBhIHRyYW5zaXRpdmVseSBj bG9zZWQgc2V0IG9mDQogICAgbGlicmFyaWVzICgjNTM5NSwgQGVzb3BlKQ0KDQogIOKAoiBBZGQg ZGlyZWN0IGRlcGVuZGVuY2llcyB0byAkIGR1bmUgZGVzY3JpYmUgb3V0cHV0ICgjNTQxMiwgQGVz b3BlKQ0KDQogIOKAoiBTaG93IGF1dG8tZGV0ZWN0ZWQgY29uY3VycmVuY3kgb24gV2luZG93cyB0 b28gKCM1NTAyLCBATWlzdGVyREEpDQoNCiAg4oCiIEZpeCBvcGVyYXRpb25zIHRoYXQgcmVtb3Zl IGZvbGRlcnMgd2l0aCBhYnNvbHV0ZSBwYXRoLiBUaGlzIGhhcHBlbnMNCiAgICB3aGVuIHVzaW5n IGVzeSAoIzU1MDcsIEBFZHVhcmRvUkZTKQ0KDQogIOKAoiBEdW5lIHdpbGwgbm90IGZhaWwgaWYg c29tZSBkaXJlY3RvcmllcyBhcmUgbm9uLWVtcHR5IHdoZW4NCiAgICB1bmluc3RhbGxpbmcuICAo IzU1NDMsIGZpeGVzICM1NTQyLCBAbm9qYikNCg0KICDigKIgYGNvcWRlcCcgbm93IGRlcGVuZHMg b25seSBvbiB0aGUgZmlsZXN5c3RlbSBsYXlvdXQgb2YgdGhlIC52IGZpbGVzLA0KICAgIGFuZCBu b3Qgb24gdGhlaXIgY29udGVudHMgKCM1NTQ3LCBoZWxwcyB3aXRoICM1MTAwLCBAZWpnYWxsZWdv KQ0KDQogIOKAoiBUaGUgbWR4IHN0YW56YSAwLjIgY2FuIG5vdyBiZSB1c2VkIHdpdGggYChpbXBs aWNpdF90cmFuc2l0aXZlX2RlcHMNCiAgICBmYWxzZSknICgjNTU1OCwgZml4ZXMgIzU0OTksIEBl bWlsbG9uKQ0KDQogIOKAoiBGaXggbWlzc2luZyBwYXJlbnRoZXNpcyBpbiBwcmludGluZyBvZiBj b3JyZXNwb25kaW5nIHRlcm1pbmFsDQogICAgY29tbWFuZCBmb3IgYCh3aXRoLW91dHB1dHMtdG8g KScgKCM1NTUxLCBmaXhlcyAjNTU0NiwgQEFsaXp0ZXIpDQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtz ZW5kIG1lIGEgbWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2Ug YSBsb29rIGF0IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2 ZXNdLg0KDQogIElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1h aWwsIHlvdSBtYXkgc3Vic2NyaWJlDQogIFtvbmxpbmVdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoN Cg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVl Lm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24v Pg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1l Lm5ldC9jd24vY3duLnJzcz4NCg0KW29ubGluZV0gPGh0dHA6Ly9saXN0cy5pZHlsbC5vcmcvbGlz dGluZm8vY2FtbC1uZXdzLXdlZWtseS8+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4u cGV0aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of April 12 to 19, 2022.

Lwt informal user survey

Rapha=C3=ABl Proust announced

In order to make some decisions relating to the maintenance of Lwt, I'd lik= e to know a little bit more about how the library is used in the wild. Do not hesitate to respond to the poll and/or = as a message in this thread, or even to contact me via other means in case discuss is not your jam.

Editor=E2=80=99s note: please follow the link above to reply to the surv= ey.

pyml_bindgen: a CLI app to generate Python bindings directly f= rom OCaml value specifications

Archive:

Continuing this thread, Ryan Moore announced

I wrote a blog post providing an introduction to pyml_bindgen. It gives an intro in a slightly= different style as compared to the docs and = the examples, and includes some of the latest features I've been working on.

Creating a library for use from JS with js_of_ocaml

Deep in this thread, threepwood said

Cautionary note for anyone reading this in the future: dynamic imports are = asynchronous, and initializing the jsoo runtime takes some milliseconds, so that if you just do:

import("ocaml/export.bc.js");
var =
x =3D mylib.myfunction();

the second line will fail as mylib is not defined yet (at leas= t this is what I think is happening). You need to guarantee the module is done initializing in some way or other.

Kim Nguy=E1=BB=85n then said

import should return a promise of the loaded module. So you ca= n just await for it (if your current context allows you to write await) or just :

 import("ocaml/export.bc.js").then ((_) =3D>=
; {

 mylib.myfunction();

});

ocaml-lsp-server 1.11.0

Rudi Grinberg announced

On behalf of the ocamllsp team, I'm excited to announce the availability of= version 1.11.0. This release is an important milestone for the project because it introduces integration with = our favorite build system. When you run dune in watch mode, you will now be able to see build errors in the diagnos= tics panel of your editor. It's all rather experimental for now, so your feedback and bug reports are appreciated.

As usual, the full change log is below.

Happy hacking.

1.11.0

Features

  • Add support for dune in watch mode. The lsp server will now display bui= ld errors in the diagnostics and offer promotion code actions.
  • Re-introduce ocamlformat-rpc (#599, fixes #495)

Fixes

  • Fix workspace symbols that could have a wrong path in some cases (#675)

OCaml summer school in Spain, call for industry speakers

Roberto Blanco announced

Dear all, Ricardo Rodr=C3=ADguez and I are organizing an introductory OCaml= course as part of the annual summer school of the University of Zaragoza in Spain. (This is the oldest summer university = in the country, nearing its centennial anniversary!). The country's computing programs are quite excellent, althou= gh we have found them to generally not pay serious attention to modern functional programming. Our goal is to use OCam= l to begin to address this dearth.

In addition to the regular academic program we are planning a satellite eve= nt open to the general public. This is meant to introduce the OCaml ecosystem to a wider audience of students and = academics, as well as professionals. As part of this, we would like to hold a round table discussion of industrial = OCaml users to demonstrate the width and depth of practical uses of the language. There will be time for participant= s to present their work in more detail, if they wish to do so.

If you may be interested in participating or have any questions, feel free = to write to me here or send email to either of us. The course is currently in its planning stages; it is schedul= ed to take place in early to mid July, in all likelihood in the city of Zaragoza and in hybrid format. The OCaml Soft= ware Foundation is backing the initiative and we thank them for their generous support.

Updated information about the course will be available on its website: https://webdiis.unizar.es/evpf/=

Dune 3.1.0

Rudi Grinberg announced

On behalf of the dune team, I'm pleased to announce version 3.1.0. This rel= ease contains some small, but interesting features, and some important quality of life bug fixes. I encourage everyon= e to upgrade as soon as possible.

Happy Hacking.

3.1.0 (15/04/2022)

  • Add sourcehut as an option for defining project sources in= dune-project files. For example, (source (sourcehut user/repo)). (#5564, @r= grinberg)
  • Add dune coq top command for running a Coq toplevel (#5457= , @rlepigre)
  • Fix dune exec dumping database in wrong directory (#5544, @bobot)
  • Always output absolute paths for locations in RPC reported diagnostics (#5539, @rgrinberg)
  • Add (deps <deps>) in ctype field (#5346, @bobot)
  • Add (include <file>) constructor to dependency speci= fications. This can be used to introduce dynamic dependencies (#5442, @anmonteiro)
  • Ensure that dune describe computes a transitively closed s= et of libraries (#5395, @esope)
  • Add direct dependencies to $ dune describe output (#5412, @esope)
  • Show auto-detected concurrency on Windows too (#5502, @MisterDA)
  • Fix operations that remove folders with absolute path. This happens when using esy (#5507, @EduardoRFS)
  • Dune will not fail if some directories are non-empty when uninstalling. (#5543, fixes #5542, @nojb)
  • coqdep now depends only on the filesystem layout of the .v= files, and not on their contents (#5547, helps with #5100, @ejgallego)
  • The mdx stanza 0.2 can now be used with (implicit_transitive_deps= false) (#5558, fixes #5499, @emillon)
  • Fix missing parenthesis in printing of corresponding terminal command f= or (with-outputs-to ) (#5551, fixes #5546, @Alizter)

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 online.

--==-=-=-- --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Pour une =C3=A9valuation ind=C3=A9pendante, transparente et rigoureuse ! Je soutiens la Commission d'=C3=89valuation de l'INRIA. --=-=-=--