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 ESMTPS id 877FA5D5 for ; Tue, 12 Apr 2022 08:10:55 +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=T/pV4o4xmCUUTPuNQazJyJJ+VBQZHkeBeMR15lqYers=; b=hBtegliphrz0Y6IsZUT2AVRmzI4HQfS/x1mmsyiJtNJ76kZrT+QgT7li ew+y6lHq6WHIsF5dnou7zKuNFIuzUzdhwvjRhUmIwzNuM3hQwg4glfPe+ KtxeQVq79PL+RIO/jQam1vgNmLHGnXiId+B3+4IwQ9mS+6C2AhyKoPznM 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,253,1643670000"; d="scan'208,217";a="31268074" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 12 Apr 2022 10:10:54 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 054FAE0207; Tue, 12 Apr 2022 10:10:54 +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 283B2E00B8 for ; Tue, 12 Apr 2022 10:10:48 +0200 (CEST) X-Ironport-Dmarc-Check-Result: validskip X-IronPort-AV: E=Sophos;i="5.90,253,1643670000"; d="scan'208,217";a="31268004" Received: from set.irisa.fr (HELO set) ([131.254.10.170]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2022 10:10:48 +0200 From: Alan Schmitt To: "lwn" , "cwn" , caml-list@inria.fr Date: Tue, 12 Apr 2022 10:10:47 +0200 Message-ID: <87lewayb5k.fsf@m4x.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 18740 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 ZWsgb2YgQXByaWwgMDUgdG8gMTIsDQoyMDIyLg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCkxleGlGaSBp cyBoaXJpbmchDQpEw6l2ZWxvcHBldXIgcHJpbmNpcGFsIMOgIHBsZWluIHRlbXBzIGQnQWx0LUVy Z28gY2hleiBPQ2FtbFBybw0KVXNpbmcgYW4gZXh0ZXJuYWwgSmF2YVNjcmlwdCBmaWxlIGluIGpz X29mX29jYW1sDQpkaXNrdXZib3g6IHNtYWxsIHNldCBvZiBjcm9zcy1wbGF0Zm9ybSBDTEkgdG9v bHMNCk9sZCBDV04NCg0KDQpMZXhpRmkgaXMgaGlyaW5nIQ0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8v ZGlzY3Vzcy5vY2FtbC5vcmcvdC9qb2ItZnVsbHRpbWUtaW50ZXJuc2hpcC1wYXJpcy1sZXhpZmkt aXMtaGlyaW5nLzk2NDgvMT4NCg0KDQpBbGFpbiBGcmlzY2ggYW5ub3VuY2VkDQrilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICDwn5OiIFtMZXhpRmldIGlzIGhpcmluZyENCg0KICDinJTvuI8gU29mdHdhcmUgRW5naW5l ZXIgKGZ1bGwtdGltZSk6IDxodHRwczovL2xua2QuaW4vZXZoa3hUZz4NCg0KICDinJTvuI8gU29m dHdhcmUgRGV2ZWxvcG1lbnQgSW50ZXJuc2hpcDogPGh0dHBzOi8vbG5rZC5pbi9nYi1iZERBOT4N Cg0KICBMZXhpRmkgaXMgYSBzb2Z0d2FyZSBlZGl0b3IsIGJhc2VkIGluIFBhcmlzLiBXZSBoYXZl IGJlZW4gaGFwcGlseQ0KICB1c2luZyBPQ2FtbCDwn5CqIGZvciBtb3JlIHRoYW4gMjAgeWVhcnMg aW4gb3VyIGVudGlyZSBzb2Z0d2FyZSBzdGFjaywNCiAgZnJvbSBiYWNrZW5kIGNvbXBvbmVudHMg dG8gVUkgKHdlYiAmIG5hdGl2ZSkgZnJvbnQtZW5kLCBhbmQgd2UNCiAgY29udHJpYnV0ZSBiYWNr IHRvIHRoZSBPQ2FtbCBjb21tdW5pdHkgKGNoZWNrIG91dCBvdXIgYmxvZyBwb3N0IDoNCiAgPGh0 dHBzOi8vd3d3LmxleGlmaS5jb20vYmxvZy9vY2FtbC9vY2FtbC1vcGVuLXNvdXJjZS8+KQ0KDQog IERvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgbWUgZGlyZWN0bHkgaWYgeW91IHdhbnQgdG8gbGVh cm4gbW9yZSBhYm91dA0KICB0aGUgcG9zaXRpb25zIGJlZm9yZSBhcHBseWluZyENCg0KDQpbTGV4 aUZpXSA8aHR0cHM6Ly93d3cubGV4aWZpLmNvbT4NCg0KDQpEw6l2ZWxvcHBldXIgcHJpbmNpcGFs IMOgIHBsZWluIHRlbXBzIGQnQWx0LUVyZ28gY2hleiBPQ2FtbFBybw0K4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAg QXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9qb2ItZnVsbHRpbWUtcGFy aXMtZGV2ZWxvcHBldXItcHJpbmNpcGFsLWEtcGxlaW4tdGVtcHMtZGFsdC1lcmdvLWNoZXotb2Nh bWxwcm8vOTY2MC8xPg0KDQoNCkZhYnJpY2UgTGUgRmVzc2FudCBhbm5vdW5jZWQNCuKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEFsdC1FcmdvIGVzdCBsJ3VuIGRlcyBzb2x2ZXVycyBT TVQgbGVzIHBsdXMgZWZmaWNhY2VzIHBvdXIgbGENCiAgdsOpcmlmaWNhdGlvbiBmb3JtZWxsZSBk ZSBjb2RlLiBJbCBlc3QgYWluc2kgdXRpbGlzw6kgZGVycmnDqHJlIGRlcw0KICBhdGVsaWVycyB0 ZWxzIHF1ZSBXaHkzLCBGcmFtYS1DIGV0IFNwYXJrLiBJbml0aWFsZW1lbnQgZMOpdmVsb3Bww6kg cGFyDQogIFN5bHZhaW4gQ29uY2hvbiBhdSBMUkksIGlsIGVzdCBhdWpvdXJkJ2h1aSBtYWludGVu dSBwYXIgT0NhbWxQcm8sDQogIGdyw6JjZSBhdXggZmluYW5jZW1lbnRzIGR1IENsdWIgQWx0LUVy Z28gKEFkYUNvcmUsIFRydXN0LWluLVNvZnQsDQogIFRoYWzDqHMsIE1FUkNFLCBDRUEgTGlzdCks IMOgIGRlcyBjb250cmF0cyBiaWxhdMOpcmF1eCBkJ8Opdm9sdXRpb24gZXQgw6ANCiAgZGVzIHBy b2pldHMgY29sbGFib3JhdGlmcy4NCg0KICBPQ2FtbFBybyBzb3VoYWl0ZSBhdWpvdXJkJ2h1aSBy ZWNydXRlciB1biBkw6l2ZWxvcHBldXIgcHJpbmNpcGFsIMOgDQogIHRlbXBzIHBsZWluIHBvdXIg QWx0LUVyZ28sIHBvdXIgY29tcGzDqXRlciBzb24gw6lxdWlwZSBtw6l0aG9kZXMNCiAgZm9ybWVs bGVzIGV0IGFjY8OpbMOpcmVyIGwnw6l2b2x1dGlvbiBkJ0FsdC1FcmdvLiAgRGlzcG9zYW50IGQn dW5lDQogIGV4cMOpcmllbmNlIGRhbnMgbGVzIG3DqXRob2RlcyBmb3JtZWxsZXMsIHNlcyBtaXNz aW9ucyBzZXJvbnQgOg0KDQogIOKAoiBkZSBkw6ljb3V2cmlyIGxlIHByb2pldCBBbHQtRXJnbyBl dCB0b3VzIHNlcyBjb21wb3NhbnRzIChwcm91dmV1ciwNCiAgICBpbnRlcmZhY2UgZ3JhcGhpcXVl LCBldGMuKSBldCBkJ2VuIGNvbXByZW5kcmUgbGUgZm9uY3Rpb25uZW1lbnQgw6ANCiAgICB0cmF2 ZXJzIGwnZXhwbG9yYXRpb24gZHUgY29kZSBldCBsYSBsZWN0dXJlIGQnYXJ0aWNsZXMNCiAgICBz Y2llbnRpZmlxdWVzOw0KICDigKIgZCfDqWxhYm9yZXIgbGEgcm9hZG1hcCBkZSBtYWludGVuYW5j ZSDDqXZvbHV0aXZlIGQnQWx0LUVyZ28sIGVuDQogICAgY29sbGFib3JhdGlvbiBhdmVjIGxlcyBt ZW1icmVzIGR1IENsdWIgQWx0LUVyZ28sIGV0IGRlIHByb3Bvc2VyIGRlcw0KICAgIGFtw6lsaW9y YXRpb25zIHF1aSBwb3Vycm9udCDDqnRyZSBmaW5hbmPDqWVzIGF1IHRyYXZlcnMgZGUgY29udHJh dHMNCiAgICBiaWxhdMOpcmF1eCBvdSBkZSBwcm9qZXRzIGNvbGxhYm9yYXRpZnM7DQogIOKAoiBk ZSBwYXJ0aWNpcGVyIGF2ZWMgbCfDqXF1aXBlIMOgIGxhIG1haW50ZW5hbmNlIGNvcnJlY3RpdmUg ZCdBbHQtRXJnbw0KICAgIGV0IGRlIGZvdXJuaXIgZHUgc3VwcG9ydCBhdXggbWVtYnJlcyBkdSBD bHViIEFsdC1FcmdvOw0KICDigKIgZGUgcGFydGljaXBlciDDoCBsJ2VuY2FkcmVtZW50IGRlIHN0 YWdlcyBldCBkZSB0aMOoc2VzIENJRlJFIGF1dG91cg0KICAgIGQnQWx0LUVyZ28gZXQgZGVzIHNv bHZldXJzIFNNVCBlbiBnw6luw6lyYWw7DQogIOKAoiBkZSBzdWl2cmUgbCdhY3R1YWxpdMOpIGRl cyBzb2x2ZXVycyBTTVRzIGV0IGRlcyB0cmF2YXV4IHNjaWVudGlmaXF1ZXMNCiAgICBjb25uZXhl cywgZXQgZGUgbWFpbnRlbmlyIGRlcyBjb2xsYWJvcmF0aW9ucyBhdmVjIGxlcyBleHBlcnRzDQog ICAgYWNhZMOpbWlxdWVzIGR1IGRvbWFpbmU7DQoNCiAgSW50w6lncsOpIGF1IHNlaW4gZGUgbCfD qXF1aXBlIE3DqXRob2RlcyBGb3JtZWxsZXMgZCdPQ2FtbFBybywgaWwNCiAgYsOpbsOpZmljaWVy YSBkZSBsZXVyIGV4cMOpcmllbmNlIGV0IGxldXIgZmVyYSBiw6luw6lmaWNpZXIgZGUgc29uDQog IGV4cGVydGlzZSBjcm9pc3NhbnRlIGRhbnMgbCd1dGlsaXNhdGlvbiBkJ0FsdC1FcmdvLiBPdXRy ZSBsYQ0KICBtYWludGVuYW5jZSBkJ0FsdC1FcmdvLCBsJ8OpcXVpcGUgTcOpdGhvZGVzIEZvcm1l bGxlcyBkJ09DYW1sUHJvDQogIHBhcnRpY2lwZSDDoCBkaXZlcnNlcyBhY3Rpdml0w6lzOg0KDQog IOKAoiBEw6l2ZWxvcHBlbWVudCBkJ291dGlscyBvcGVuLXNvdXJjZSBwb3VyIGxlcyBtw6l0aG9k ZXMgZm9ybWVsbGVzLCB0ZWxzDQogICAgcXVlIERvbG1lbiwgTWF0bGEsIGV0Yy4NCiAg4oCiIEV4 cGVydGlzZXMgc3VyIFdoeU1MLCBUTEEsIENvcSwgZXQgYXV0cmVzIGxhbmdhZ2VzIGRlIHNww6lj aWZpY2F0aW9uDQogICAgZXQgZGUgdsOpcmlmaWNhdGlvbjsNCiAg4oCiIENlcnRpZmljYXRpb24g ZGUgbG9naWNpZWxzIHBvdXIgbGVzIENyaXTDqHJlcyBDb21tdW5zIChFQUw2IGV0IHBsdXMpDQog IOKAoiBTcMOpY2lmaWNhdGlvbiBldCB2w6lyaWZpY2F0aW9uIGZvcm1lbGxlIGRlIHNtYXJ0IGNv bnRyYWN0cyAoU29saWRpdHksDQogICAgZXRjLikNCg0KICBMZXMgYnVyZWF1eCBkJ09DYW1sUHJv IHNvbnQgZGFucyBsZSAxNMOobWUgYXJyb25kaXNzZW1lbnQgZGUgUGFyaXMNCiAgKEFsw6lzaWEp LiBMJ2VudHJlcHJpc2UgZXN0IGNvbm51ZSBwb3VyIHNvbiDDqXF1aXBlIHN5bXBhdGhpcXVlLCBz b24NCiAgZXhjZWxsZW5jZSB0ZWNobmlxdWUsIHNhIHByb2R1Y3Rpdml0w6ksIHNlcyB2YWxldXJz IGV0IHNvbiDDqXRoaXF1ZS4NCg0KICBTaSBjZSBwb3N0ZSB2b3VzIGludMOpcmVzc2UsIG4naMOp c2l0ZXogcGFzIMOgIGVudm95ZXIgdm90cmUgQ1Ygw6A6DQoNCiAgY29udGFjdEBvY2FtbHByby5j b20NCg0KICBQb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgc3VyIE9DYW1sUHJvOg0KDQogIDxodHRw czovL3d3dy5vY2FtbHByby5jb20vPg0KDQogIFBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyBzdXIg QWx0LUVyZ286DQoNCiAgPGh0dHBzOi8vYWx0LWVyZ28ub2NhbWxwcm8uY29tLz4NCg0KICBQb3Vy IHBsdXMgZCdpbmZvcm1hdGlvbnMgc3VyIGxlIENsdWIgQWx0LUVyZ286DQoNCiAgPGh0dHBzOi8v d3d3Lm9jYW1scHJvLmNvbS9jbHViLWFsdC1lcmdvPg0KDQoNClVzaW5nIGFuIGV4dGVybmFsIEph dmFTY3JpcHQgZmlsZSBpbiBqc19vZl9vY2FtbA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC91c2luZy1h bi1leHRlcm5hbC1qYXZhc2NyaXB0LWZpbGUtaW4tanMtb2Ytb2NhbWwvOTY2MS8xPg0KDQoNCkpv aG4gV2hpdGluZ3RvbiBhc2tlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSSBhbSBhIGJlZ2lubmVyIGF0IGJvdGgg SmF2YXNjcmlwdCBhbmQgYGpzX29mX29jYW1sJywgc28gSSBtYXkgYmUNCiAgbWl4aW5nIHVwIGFs bCBzb3J0cyBvZiBtaXN0YWtlcyBhbmQgbWlzY29uY2VwdGlvbnMgaGVyZS4NCg0KICBJIGhhdmUg Y29tcGlsZWQgdXAgYW4gZXhpc3RpbmcgcHJvamVjdCwgbXkgY29tbWFuZCBsaW5lIFBERiB0b29s cywNCiAgdXNpbmcgYGpzX29mX29jYW1sJywgYW5kIGFsbCBpcyB3ZWxsOg0KDQogIOKUjOKUgOKU gOKUgOKUgA0KICDilIIgJCBub2RlIGNwZGYuanMgLWluZm8gaGVsbG8ucGRmDQogIOKUgiBFbmNy eXB0aW9uOiBOb3QgZW5jcnlwdGVkDQogIOKUgiBQZXJtaXNzaW9uczoNCiAg4pSCIExpbmVhcml6 ZWQ6IGZhbHNlDQogIOKUgiBWZXJzaW9uOiAxLjENCiAg4pSCIFBhZ2VzOiAxDQogIOKUlOKUgOKU gOKUgOKUgA0KDQogIExpa2UgbWFnaWMhIEJ1dCBJIGhhZCB0byBjb21tZW50IG91dCB0aGUgcGFy dHMgb2YgbXkgY29kZSB3aGljaCB1c2UNCiAgZXh0ZXJuYWwgQyBjb2RlIG9mIGNvdXJzZSAtIHRo YXQgaXMgemxpYiBhbmQgc29tZSBlbmNyeXB0aW9uDQogIHByaW1pdGl2ZXMuIFNvIG5vdyBJIHdp c2ggdG8gYmluZCBqYXZhc2NyaXB0IGxpYnJhcmllcyBmb3IgdGhvc2UuIEkgYW0NCiAgZXhwZXJp bWVudGluZyB3aXRoIGEgc2ltcGxlIGxpYnJhcnkgb2YgbXkgb3duLCBmaXJzdCwgd2hpY2ggaXMg Z2l2ZW4NCiAgb24gdGhlIGNvbW1hbmQgbGluZSB0byBganNfb2Zfb2NhbWwnIGFzIGBmb29tb2Qu anMnOg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgZm9vID0gNDI7DQogIOKUlOKUgOKUgOKU gOKUgA0KDQogIEkgY2FuIGdldCB0byB0aGlzIGdsb2JhbCB2YXJpYWJsZSBlYXNpbHkgZnJvbSBP Q2FtbDoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIGxldCBmb28gPSBKcy5VbnNhZmUuZ2xv YmFsIyMuZm9vDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIEJ1dCBub3cgSSB3YW50IHRvIGRvIHRo aW5ncyBiZXR0ZXIsIGFuZCBJIGNoYW5nZSBgZm9vbW9kLmpzJyB0bzoNCg0KICDilIzilIDilIDi lIDilIANCiAg4pSCIGV4cG9ydHMuZm9vID0gNDI7DQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIEhv dyBjYW4gSSBnZXQgdG8gdGhhdD8gR2l2aW5nIGBmb29tb2QuanMnIG9uIHRoZSBganNfb2Zfb2Nh bWwnIGNvbW1hbmQNCiAgbGluZSBpbmNsdWRlcyB0aGUgY29udGVudHMgb2YgYGZvb21vZC5qcycg aW4gc29tZSB3YXksIGJ1dCBkb2VzIG5vdA0KICBjb250YWluIHRoZSBzdHJpbmcgYGZvb21vZCcs IHNvIEknbSBub3Qgc3VyZSBob3cgdG8gZ2V0IHRvIHRoZQ0KICBmb29tb2QncyB2YXJpYWJsZXMg YW5kIGZ1bmN0aW9ucy4gSG93IHRvIEkgYWNjZXNzIHRoZW0/IEluIHRoZSBub2RlDQogIFJFUEws IEkgY2FuIHNpbXBseSBkbzoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCID4gZm9vbW9kID0g cmVxdWlyZSgnLi9mb29tb2QuanMnKTsNCiAg4pSCIHsgZm9vOyA0MiB9DQogIOKUgiA+IGZvb21v ZC5mb287DQogIOKUgiA0Mg0KICDilJTilIDilIDilIDilIANCg0KICBJIGhhdmUgcmVhZCB0aGUg YGpzX29mX29jYW1sJyBoZWxwIHBhZ2Ugb24gaG93IHRvIGJpbmQgSlMgbW9kdWxlczoNCg0KICA8 aHR0cHM6Ly9vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9sYXRlc3QvbWFudWFsL2JpbmRpbmdzPg0K DQogIEkgaW1hZ2luZSBpZiBJIGNvdWxkIGdldCBvdmVyIHRoaXMgaHVtcCwgYWxsIHRoZSByZXN0 IG9mIHRoZQ0KICBpbmZvcm1hdGlvbiBJIG5lZWQgd2lsbCBiZSB0aGVyZS4NCg0KDQpOaWNvbMOh cyBPamVkYSBCw6RyIHJlcGxpZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIE5vdCBleGFjdGx5 IHdoYXQgeW91IGFza2VkLCBidXQgaWYgeW91IGp1c3Qgd2FudCB0byBwcm92aWRlIGEgSlMNCiAg dmVyc2lvbiBvZiBzb21lIEMgcHJpbWl0aXZlDQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBl eHRlcm5hbCBmb28gOiB1bml0IC0+IGludCA9ICJjYW1sX2ZvbyINCiAg4pSU4pSA4pSA4pSA4pSA DQoNCiAgeW91IGNhbiBkbyB0aGlzIGJ5IHdyaXRpbmcgdGhlIGZvbGxvd2luZyBpbiB5b3VyIGAu anMnIGZpbGU6DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAvL1Byb3ZpZGVzOiBjYW1sX2Zv bw0KICDilIIgZnVuY3Rpb24gY2FtbF9mb28oKSB7DQogIOKUgiAgIHJldHVybiA0MjsNCiAg4pSC IH0NCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgVGhlbiBganNfb2Zfb2NhbWwnIHdpbGwgYXV0b21h dGljYWxseSByZXBsYWNlIGNhbGxzIHRvIHRoZSBleHRlcm5hbA0KICBmdW5jdGlvbiBieSBhIGNh bGwgdG8gaXRzIEpTIGltcGxlbWVudGF0aW9uLg0KDQogIFRoaXMgaXMgdGhlIHNhbWUgbWVjaGFu aXNtIHVzZWQgYnkgYGpzX29mX29jYW1sJyB0byBpbXBsZW1lbnQgaXRzIG93bg0KICBKUyB2ZXJz aW9uIG9mIHRoZSBPQ2FtbCBydW50aW1lLCBzZWUgZWcNCg0KICA8aHR0cHM6Ly9naXRodWIuY29t L29jc2lnZW4vanNfb2Zfb2NhbWwvYmxvYi8zODUwYTY3YjFjYjAwY2ZkMmVlNDM5OWNmMWUyOTQ4 MDYyODg0YjkyL3J1bnRpbWUvYmlnYXJyYXkuanMjTDMyOC1MMzM1Pg0KDQoNCmRpc2t1dmJveDog c21hbGwgc2V0IG9mIGNyb3NzLXBsYXRmb3JtIENMSSB0b29scw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9hbm4tZGlza3V2Ym94LXNtYWxsLXNldC1vZi1jcm9zcy1wbGF0Zm9ybS1jbGktdG9vbHMvOTY2 My8xPg0KDQoNCmpiZWNrZm9yZCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICpUTERSKjoNCiAg4pSM4pSA4pSA 4pSA4pSADQogIOKUgiAkIG9wYW0gdXBkYXRlDQogIOKUgiAkIG9wYW0gaW5zdGFsbCBkaXNrdXZi b3gNCiAg4pSCIA0KICDilIIgJCBkaXNrdXZib3ggY29weS1kaXIgLS1tb2RlIDc1NSBzcmMxLyBz cmMyLyBkZXN0Lw0KICDilIIgJCBkaXNrdXZib3ggY29weS1maWxlIC0tbW9kZSA0MDAgc3JjL2Eg ZGVzdC9iDQogIOKUgiAkIGRpc2t1dmJveCBjb3B5LWZpbGUtaW50byBzcmMxL2Egc3JjMi9iIGRl c3QvDQogIOKUgiAkIGRpc2t1dmJveCB0b3VjaC1maWxlIHgveS96DQogIOKUgiANCiAg4pSCICQg ZGlza3V2Ym94IGZpbmQtdXAgLiBfYnVpbGQNCiAg4pSCIFo6L3NvdXJjZS9fYnVpbGQNCiAg4pSC IA0KICDilIIgJCBkaXNrdXZib3ggdHJlZSAtLW1heC1kZXB0aCAyIC0tZW5jb2Rpbmc9VVRGLTgg Lg0KICDilIIgLg0KICDilIIg4pSc4pSA4pSAIENIQU5HRVMubWQNCiAg4pSCIOKUnOKUgOKUgCBS RUFETUUubWQNCiAg4pSCIOKUnOKUgOKUgCBfYnVpbGQvDQogIOKUgiDilIIgICDilJzilIDilIAg ZGVmYXVsdC8NCiAg4pSCIOKUgiAgIOKUnOKUgOKUgCBpbnN0YWxsLw0KICDilIIg4pSCICAg4pSU 4pSA4pSAIGxvZw0KICDilJTilIDilIDilIDilIANCg0KICAqUHJvYmxlbSo6IFdoZW4gd3JpdGlu ZyBjcmFtIHRlc3RzLCBEdW5lIHJ1bGVzIGFuZCBPcGFtIGJ1aWxkIHN0ZXBzLA0KICBvZnRlbiB3 ZSBkZWZhdWx0IHRvIHVzaW5nIEdOVSBiaW5hcmllcyAoYC91c3IvYmluLyonKSBhdmFpbGFibGUg b24NCiAgTGludXggKGV4LiBgL3Vzci9iaW4vY3AgLVInKS4gVW5mb3J0dW5hdGVseSB0aGVzZSBj b21tYW5kcyByYXJlbHkgd29yaw0KICBvbiBXaW5kb3dzLCBhbmQgYXMgYSBjb25zZXF1ZW5jZSBX aW5kb3dzIE9DYW1sIGRldmVsb3BlcnMgYXJlIGZvcmNlZA0KICB0byBtYWludGFpbiBDeWd3aW4g b3IgTVNZUzIgaW5zdGFsbGF0aW9ucyB0byBnZXQgR05VIHRvb2xpbmcuDQoNCiAgKlNvbHV0aW9u KjogUHJvdmlkZSBzb21lIG9mIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgZm9yIFdpbmRvd3MgYW5k DQogIG1hY09TIHRoYXQgdGhlIEdOVSBiaW5hcmllcyBpbiBgL3Vzci9iaW4vKicgZG8gaW4gTGlu dXguDQoNCiAgYGRpc2t1dmJveCcgaXMgYSBzaW5nbGUgYmluYXJ5IHRoYXQgdG9kYXkgcHJvdmlk ZXMgYW4gYW5hbG9nIGZvciBhDQogIHZlcnkgc21hbGwgbnVtYmVyIG9mIGJpbmFyaWVzIHRoYXQg SSBoYXZlIG5lZWRlZCBpbiB0aGUgRGlza3V2IFdpbmRvd3MNCiAgT0NhbWwgZGlzdHJpYnV0aW9u LiBJdCBpcyBsaWJlcmFsbHkgbGljZW5zZWQgdW5kZXIgQXBhY2hlIHYyLjAuICpXaXRoDQogIHlv dXIgUFJzIGl0IGNvdWxkIGVtdWxhdGUgbXVjaCBtb3JlISoNCg0KICBgZGlza3V2Ym94JyBoYXMg Q0kgdGVzdGluZyBmb3IgV2luZG93cywgbWFjT1MgYW5kIExpbnV4LiBVc2FnZSBhbmQNCiAgaGVs cCBhcmUgYXZhaWxhYmxlIGluIHRoZSBkaXNrdXZib3ggUkVBRE1FOg0KICA8aHR0cHM6Ly9naXRo dWIuY29tL2Rpc2t1di9kaXNrdXZib3gjZGlza3V2LWJveD4NCg0KICAqYGRpc2t1dmJveCcgYWxz byBoYXMgYSBPQ2FtbCBsaWJyYXJ5LCBidXQgY29uc2lkZXIgdGhlIEFQSSB1bnN0YWJsZQ0KICAg dW50aWwgdmVyc2lvbiAxLjAuKg0KDQogIEFsdGVybmF0aXZlczoNCiAg4oCiIFRoZXJlIGFyZSBz b21lIHNoZWxsIHNjcmlwdGluZyB0b29scyBsaWtlIFtzaGV4cF0gYW5kIFtmZWF0aGVyXSB0aGF0 DQogICAgZ2l2ZSB5b3UgUE9TSVggcGlwZXMgaW4gT0NhbWwtZnJpZW5kbHkgc3ludGF4LiBJIGZl ZWwgdGhlc2UNCiAgICBjb21wbGVtZW50IERpc2t1diBCb3guDQogIOKAoiBEdW5lIGV4cG9zZXMg YChjb3B5KScgdG8gY29weSBhIGZpbGUgaW4gRHVuZSBydWxlczsgdGhlb3JldGljYWxseQ0KICAg IG1vcmUgb3BlcmF0aW9ucyBjb3VsZCBiZSBhZGRlZC4NCg0KICBJbnRlcm5hbGx5IGBkaXNrdXZi b3gnIGlzIGEgd3JhcHBlciBvbiB0aGUgZXhjZWxsZW50IFtib3MgLSBCYXNpYyBPUw0KICBpbnRl cmFjdGlvbl0gbGlicmFyeS4NCg0KDQpbc2hleHBdIDxodHRwczovL2dpdGh1Yi5jb20vamFuZXN0 cmVldC9zaGV4cD4NCg0KW2ZlYXRoZXJdIDxodHRwczovL2dpdGh1Yi5jb20vY2hhcmxlc2V0Yy9m ZWF0aGVyPg0KDQpbYm9zIC0gQmFzaWMgT1MgaW50ZXJhY3Rpb25dDQo8aHR0cHM6Ly9lcnJhdGlx dWUuY2gvc29mdHdhcmUvYm9zL2RvYy9Cb3MvaW5kZXguaHRtbD4NCg0KQWNrbm93bGVkZ2VtZW50 cw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg VGhlIGZpcnN0IGltcGxlbWVudGF0aW9ucyBvZiBEaXNrdXYgQm94IHdlcmUgaW1wbGVtZW50ZWQg d2l0aCB0aGUNCiAgYXNzaXN0YW5jZSBvZiB0aGUgW09DYW1sIFNvZnR3YXJlIEZvdW5kYXRpb24g KE9DU0YpXSwgYSBzdWItZm91bmRhdGlvbg0KICBvZiB0aGUgW0lOUklBIEZvdW5kYXRpb25dLg0K DQogIFR3byBPQ2FtbCBsaWJyYXJpZXMgKFtib3NdIGFuZCBbY21kbGluZXJdKSBhcmUgZXNzZW50 aWFsIHRvIERpc2t1dg0KICBCb3g7IHRoZXNlIGxpYnJhcmllcyB3ZXJlIGNyZWF0ZWQgYnkgW0Rh bmllbCBCw7xuemxpXSAoQGRidWVuemxpKSAuDQoNCg0KW09DYW1sIFNvZnR3YXJlIEZvdW5kYXRp b24gKE9DU0YpXSA8aHR0cDovL29jYW1sLXNmLm9yZz4NCg0KW0lOUklBIEZvdW5kYXRpb25dIDxo dHRwczovL3d3dy5pbnJpYS5mcj4NCg0KW2Jvc10gPGh0dHBzOi8vZXJyYXRpcXVlLmNoL3NvZnR3 YXJlL2Jvcz4NCg0KW2NtZGxpbmVyXSA8aHR0cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUvY21k bGluZXI+DQoNCltEYW5pZWwgQsO8bnpsaV0gPGh0dHBzOi8vZXJyYXRpcXVlLmNoL3Byb2ZpbGU+ DQoNCg0KRXhhbXBsZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoZSBmb2xsb3dp bmcgYXJlIGV4YW1wbGVzIHRoYXQgaGF2ZSBiZWVuIGNvbmRlbnNlZCBmcm9tIHRoZQ0KICBbZGlz a3V2Ym94IFJFQURNRS5tZF0g4oCmDQoNCg0KW2Rpc2t1dmJveCBSRUFETUUubWRdIDxodHRwczov L2dpdGh1Yi5jb20vZGlza3V2L2Rpc2t1dmJveCNkaXNrdXYtYm94Pg0KDQpVc2luZyBpbiBEdW5l IGNyYW0gdGVzdHMNCuKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKU hOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhA0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIg JCBpbnN0YWxsIC1kIGEvYi9jL2QvZS9mDQogIOKUgiAkIGluc3RhbGwgLWQgYS9iMi9jMi9kMi9l Mi9mMg0KICDilIIgJCBpbnN0YWxsIC1kIGEvYjIvYzMvZDMvZTMvZjMNCiAg4pSCICQgaW5zdGFs bCAtZCBhL2IyL2MzL2Q0L2U0L2Y0DQogIOKUgiAkIGluc3RhbGwgLWQgYS9iMi9jMy9kNC9lNS9m NQ0KICDilIIgJCBpbnN0YWxsIC1kIGEvYjIvYzMvZDQvZTUvZjYNCiAg4pSCICQgdG91Y2ggYS9i L3gNCiAg4pSCICQgdG91Y2ggYS9iL2MveQ0KICDilIIgJCB0b3VjaCBhL2IvYy9kL3oNCiAg4pSC IA0KICDilIIgJCBkaXNrdXZib3ggdHJlZSBhIC0tbWF4LWRlcHRoIDEwIC0tZW5jb2RpbmcgVVRG LTgNCiAg4pSCIGENCiAg4pSCIOKUnOKUgOKUgCBiLw0KICDilIIg4pSCICAg4pSc4pSA4pSAIGMv DQogIOKUgiDilIIgICDilIIgICDilJzilIDilIAgZC8NCiAg4pSCIOKUgiAgIOKUgiAgIOKUgiAg IOKUnOKUgOKUgCBlLw0KICDilIIg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSU4pSA4pSAIGYv DQogIOKUgiDilIIgICDilIIgICDilIIgICDilJTilIDilIAgeg0KICDilIIg4pSCICAg4pSCICAg 4pSU4pSA4pSAIHkNCiAg4pSCIOKUgiAgIOKUlOKUgOKUgCB4DQogIOKUgiDilJTilIDilIAgYjIv DQogIOKUgiAgICAg4pSc4pSA4pSAIGMyLw0KICDilIIgICAgIOKUgiAgIOKUlOKUgOKUgCBkMi8N CiAg4pSCICAgICDilIIgICAgICAg4pSU4pSA4pSAIGUyLw0KICDilIIgICAgIOKUgiAgICAgICAg ICAg4pSU4pSA4pSAIGYyLw0KICDilIIgICAgIOKUlOKUgOKUgCBjMy8NCiAg4pSCICAgICAgICAg 4pSc4pSA4pSAIGQzLw0KICDilIIgICAgICAgICDilIIgICDilJTilIDilIAgZTMvDQogIOKUgiAg ICAgICAgIOKUgiAgICAgICDilJTilIDilIAgZjMvDQogIOKUgiAgICAgICAgIOKUlOKUgOKUgCBk NC8NCiAg4pSCICAgICAgICAgICAgIOKUnOKUgOKUgCBlNC8NCiAg4pSCICAgICAgICAgICAgIOKU giAgIOKUlOKUgOKUgCBmNC8NCiAg4pSCICAgICAgICAgICAgIOKUlOKUgOKUgCBlNS8NCiAg4pSC ICAgICAgICAgICAgICAgICDilJzilIDilIAgZjUvDQogIOKUgiAgICAgICAgICAgICAgICAg4pSU 4pSA4pSAIGY2Lw0KICDilJTilIDilIDilIDilIANCg0KDQpVc2luZyBpbiBPcGFtIGBidWlsZCcg c3RlcHMNCuKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKU hOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhOKUhA0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDi lIIgYnVpbGQ6IFsNCiAg4pSCICAgWyJkaXNrdXZib3giICJjb3B5LWZpbGUtaW50byIgImFzc2V0 cy9pY29uLnBuZyIgImFzc2V0cy9wdWJsaWMuZ3BnIiAiJXtfOnNoYXJlfSUiXQ0KICDilIIgXQ0K ICDilJTilIDilIDilIDilIANCg0KDQpVc2luZyBpbiBEdW5lIHJ1bGVzDQrilITilITilITilITi lITilITilITilITilITilITilITilITilITilITilITilITilITilITilIQNCg0KICDilIzilIDi lIDilIDilIANCiAg4pSCIChydWxlDQogIOKUgiAgKHRhcmdldHMgZGlza3V2Ym94LmNvcnJlY3Rl ZC5tbCBkaXNrdXZib3guY29ycmVjdGVkLm1saSkNCiAg4pSCICAoZGVwcw0KICDilIIgICAoOmxp Y2Vuc2UgJXtwcm9qZWN0X3Jvb3R9L2V0Yy9saWNlbnNlLWhlYWRlci50eHQpDQogIOKUgiAgICg6 Y29uZiAgICAle3Byb2plY3Rfcm9vdH0vZXRjL2hlYWRhY2hlLmNvbmYpKQ0KICDilIIgIChhY3Rp b24NCiAg4pSCICAgKHByb2duDQogIOKUgiAgICAocnVuIGRpc2t1dmJveCBjb3B5LWZpbGUgLW0g NjQ0IGRpc2t1dmJveC5tbCAgZGlza3V2Ym94LmNvcnJlY3RlZC5tbCkNCiAg4pSCICAgIChydW4g ZGlza3V2Ym94IGNvcHktZmlsZSAtbSA2NDQgZGlza3V2Ym94Lm1saSBkaXNrdXZib3guY29ycmVj dGVkLm1saSkNCiAg4pSCICAgIChydW4gaGVhZGFjaGUgLWggJXtsaWNlbnNlfSAtYyAle2NvbmZ9 ICV7dGFyZ2V0c30pDQogIOKUgiAgICAocnVuIG9jYW1sZm9ybWF0IC0taW5wbGFjZSAtLWRpc2Fi bGUtY29uZi1maWxlcyAtLWVuYWJsZS1vdXRzaWRlLWRldGVjdGVkLXByb2plY3QgJXt0YXJnZXRz fSkpKSkNCiAg4pSU4pSA4pSA4pSA4pSADQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQDQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEg bWVzc2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0 IFt0aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQog IElmIHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBt YXkgc3Vic2NyaWJlDQogIFtvbmxpbmVdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQg bWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0K W3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNT IGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24v Y3duLnJzcz4NCg0KW29ubGluZV0gPGh0dHA6Ly9saXN0cy5pZHlsbC5vcmcvbGlzdGluZm8vY2Ft bC1uZXdzLXdlZWtseS8+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9t bWUubmV0Lz4NCg0K --==-=-= 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 05 to 12, 2022.

LexiFi is hiring!

Alain Frisch announced

=F0=9F=93=A2 LexiFi is hiring!

=E2=9C=94=EF=B8=8F Software Engineer (full-time): https://lnkd.in/evhkxTg

=E2=9C=94=EF=B8=8F Software Development Internship: https://lnkd.in/gb-bdDA9

LexiFi is a software editor, based in Paris. We have been happily using OCa= ml =F0=9F=90=AA for more than 20 years in our entire software stack, from backend components to UI (web & native) front-end,= and we contribute back to the OCaml community (check out our blog post : https://www.lexifi.com/blog/ocaml/ocaml-open-source/)

Don't hesitate to contact me directly if you want to learn more about the p= ositions before applying!

D=C3=A9veloppeur principal =C3=A0 plein temps d'Alt-Ergo chez = OCamlPro

Fabrice Le Fessant announced

Alt-Ergo est l'un des solveurs SMT les plus efficaces pour la v=C3=A9rifica= tion formelle de code. Il est ainsi utilis=C3=A9 derri=C3=A8re des ateliers tels que Why3, Frama-C et Spark. Initialement d= =C3=A9velopp=C3=A9 par Sylvain Conchon au LRI, il est aujourd'hui maintenu par OCamlPro, gr=C3=A2ce aux financements du Club Alt-= Ergo (AdaCore, Trust-in-Soft, Thal=C3=A8s, MERCE, CEA List), =C3=A0 des contrats bilat=C3=A9raux d'=C3=A9volution et =C3=A0 d= es projets collaboratifs.

OCamlPro souhaite aujourd'hui recruter un d=C3=A9veloppeur principal =C3=A0= temps plein pour Alt-Ergo, pour compl=C3=A9ter son =C3=A9quipe m=C3=A9thodes formelles et acc=C3=A9l=C3=A9rer l'=C3=A9volution= d'Alt-Ergo. Disposant d'une exp=C3=A9rience dans les m=C3=A9thodes formelles, ses missions seront :

  • de d=C3=A9couvrir le projet Alt-Ergo et tous ses composants (prouveur, = interface graphique, etc.) et d'en comprendre le fonctionnement =C3=A0 trav= ers l'exploration du code et la lecture d'articles scientifiques;
  • d'=C3=A9laborer la roadmap de maintenance =C3=A9volutive d'Alt-Ergo, en= collaboration avec les membres du Club Alt-Ergo, et de proposer des am=C3= =A9liorations qui pourront =C3=AAtre financ=C3=A9es au travers de contrats = bilat=C3=A9raux ou de projets collaboratifs;
  • de participer avec l'=C3=A9quipe =C3=A0 la maintenance corrective d'Alt= -Ergo et de fournir du support aux membres du Club Alt-Ergo;
  • de participer =C3=A0 l'encadrement de stages et de th=C3=A8ses CIFRE au= tour d'Alt-Ergo et des solveurs SMT en g=C3=A9n=C3=A9ral;
  • de suivre l'actualit=C3=A9 des solveurs SMTs et des travaux scientifiqu= es connexes, et de maintenir des collaborations avec les experts acad=C3=A9= miques du domaine;

Int=C3=A9gr=C3=A9 au sein de l'=C3=A9quipe M=C3=A9thodes Formelles d'OCamlP= ro, il b=C3=A9n=C3=A9ficiera de leur exp=C3=A9rience et leur fera b=C3=A9n= =C3=A9ficier de son expertise croissante dans l'utilisation d'Alt-Ergo. Outre la mainten= ance d'Alt-Ergo, l'=C3=A9quipe M=C3=A9thodes Formelles d'OCamlPro participe =C3=A0 diverses activit=C3=A9s:

  • D=C3=A9veloppement d'outils open-source pour les m=C3=A9thodes formelle= s, tels que Dolmen, Matla, etc.
  • Expertises sur WhyML, TLA, Coq, et autres langages de sp=C3=A9cificatio= n et de v=C3=A9rification;
  • Certification de logiciels pour les Crit=C3=A8res Communs (EAL6 et plus= )
  • Sp=C3=A9cification et v=C3=A9rification formelle de smart contracts (So= lidity, etc.)

Les bureaux d'OCamlPro sont dans le 14=C3=A8me arrondissement de Paris (Al= =C3=A9sia). L'entreprise est connue pour son =C3=A9quipe sympathique, son excellence technique, sa productivit=C3=A9, ses valeurs et= son =C3=A9thique.

Si ce poste vous int=C3=A9resse, n'h=C3=A9sitez pas =C3=A0 envoyer votre CV= =C3=A0:

contact@ocamlpro.com

Pour plus d'informations sur OCamlPro:

https://www.ocamlpro.com/

Pour plus d'informations sur Alt-Ergo:

https://alt-ergo.ocamlpro.com/

Pour plus d'informations sur le Club Alt-Ergo:

https://www.ocamlpro.com= /club-alt-ergo

Using an external JavaScript file in js_of_ocaml

John Whitington asked

I am a beginner at both Javascript and js_of_ocaml, so I may b= e mixing up all sorts of mistakes and misconceptions here.

I have compiled up an existing project, my command line PDF tools, using js_of_ocaml, and all is well:

$ node cpdf.js -info hello.pdf
Encryption: Not encrypted
Permissions:
Linearized: false
Version: 1.1
Pages: 1

Like magic! But I had to comment out the parts of my code which use externa= l C code of course - that is zlib and some encryption primitives. So now I wish to bind javascript libraries for those= . I am experimenting with a simple library of my own, first, which is given on the command line to js_of_ocaml as foomod.js:

foo =3D 42;

I can get to this global variable easily from OCaml:

let foo =3D Js.Unsafe.global#
exports.foo =3D 42;

How can I get to that? Giving foomod.js on the js_of_oca= ml command line includes the contents of foomod.js in some way, but does not contain the string foomod, so I'm not s= ure how to get to the foomod's variables and functions. How to I access them? In the node REPL, I can simply do:

> foomod =3D require('./foomod.js');
{ foo; 42 }
> foomod.foo;
42

I have read the js_of_ocaml help page on how to bind JS module= s:

https://= ocsigen.org/js_of_ocaml/latest/manual/bindings

I imagine if I could get over this hump, all the rest of the information I = need will be there.

Nicol=C3=A1s Ojeda B=C3=A4r replied

Not exactly what you asked, but if you just want to provide a JS version of= some C primitive

external foo : unit ->=
; int =3D "caml_foo"

you can do this by writing the following in your .js file:

//Provides: caml_foo
function caml_foo() {
  return 42;
}

Then js_of_ocaml will automatically replace calls to the exter= nal function by a call to its JS implementation.

This is the same mechanism used by js_of_ocaml to implement it= s own JS version of the OCaml runtime, see eg

https://github.com/ocsi= gen/js_of_ocaml/blob/3850a67b1cb00cfd2ee4399cf1e2948062884b92/runtime/bigar= ray.js#L328-L335

diskuvbox: small set of cross-platform CLI tools

jbeckford announced

TLDR:

$ opam update
$ opam install diskuvbox

$ diskuvbox copy-dir --mode 755 src1/ src2/ dest/
$ diskuvbox copy-file --mode 400 src/a dest/b
$ diskuvbox copy-file-into src1/a src2/b dest/
$ diskuvbox touch-file x/y/z

$ diskuvbox find-up . _build
Z:/source/_build

$ diskuvbox tree --max-depth 2 --encoding=3DUTF-8 .
.
=E2=94=9C=E2=94=80=E2=94=80 CHANGES.md
=E2=94=9C=E2=94=80=E2=94=80 README.md
=E2=94=9C=E2=94=80=E2=94=80 _build/
=E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 default/
=E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 install/
=E2=94=82   =E2=94=94=E2=94=80=E2=94=80 log

Problem: When writing cram tests, Dune rules and Opam build steps, o= ften we default to using GNU binaries (/usr/bin/*) available on Linux (ex. /usr/bin/cp -R). Unfortunately these commands rarely work on Windows, and as a consequence Windows OCaml developers are forced to maintain Cygwin or MSY= S2 installations to get GNU tooling.

Solution: Provide some of the same functionality for Windows and mac= OS that the GNU binaries in /usr/bin/* do in Linux.

diskuvbox is a single binary that today provides an analog for= a very small number of binaries that I have needed in the Diskuv Windows OCaml distribution. It is liberally licensed under Ap= ache v2.0. With your PRs it could emulate much more!

diskuvbox has CI testing for Windows, macOS and Linux. Usage a= nd help are available in the diskuvbox README: https://github.c= om/diskuv/diskuvbox#diskuv-box

diskuvbox also has a OCaml library, but consider the API un= stable until version 1.0.

Alternatives:

  • There are some shell scripting tools like shexp and feather that give you POSIX pipes in OCaml-friendly syntax. I f= eel these complement Diskuv Box.
  • Dune exposes (copy) to copy a file in Dune rules; theoreti= cally more operations could be added.

Internally diskuvbox is a wrapper on the excellent bos - Basic OS interaction library.

Acknowledgements

The first implementations of Diskuv Box were implemented with the assistanc= e of the OCaml Software Foundation (OCSF), a sub-foundation of the INRIA = Foundation.

Two OCaml libraries (bos = and cmdliner) are essential to Diskuv Box; these libraries were created by Daniel B=C3=BCnzli (@dbuenzli) .

Examples

The following are examples that have been condensed from the diskuvbox README.md Ȃ= 6;

Using in Dune cram tests
$ install -d a/b/c/d/e/f
$ install -d a/b2/c2/d2/e2/f2
$ install -d a/b2/c3/d3/e3/f3
$ install -d a/b2/c3/d4/e4/f4
$ install -d a/b2/c3/d4/e5/f5
$ install -d a/b2/c3/d4/e5/f6
$ touch a/b/x
$ touch a/b/c/y
$ touch a/b/c/d/z

$ diskuvbox tree a --max-depth 10 --encoding UTF-8
a
=E2=94=9C=E2=94=80=E2=94=80 b/
=E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 c/
=E2=94=82   =E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 d/
=E2=94=82   =E2=94=82   =E2=94=82   =E2=94=9C=E2=94=80=E2=94=80 e/
=E2=94=82   =E2=94=82   =E2=94=82   =E2=94=82   =E2=94=94=E2=94=80=E2=94=80=
 f/
=E2=94=82   =E2=94=82   =E2=94=82   =E2=94=94=E2=94=80=E2=94=80 z
=E2=94=82   =E2=94=82   =E2=94=94=E2=94=80=E2=94=80 y
=E2=94=82   =E2=94=94=E2=94=80=E2=94=80 x
=E2=94=94=E2=94=80=E2=94=80 b2/
    =E2=94=9C=E2=94=80=E2=94=80 c2/
    =E2=94=82   =E2=94=94=E2=94=80=E2=94=80 d2/
    =E2=94=82       =E2=94=94=E2=94=80=E2=94=80 e2/
    =E2=94=82           =E2=94=94=E2=94=80=E2=94=80 f2/
    =E2=94=94=E2=94=80=E2=94=80 c3/
        =E2=94=9C=E2=94=80=E2=94=80 d3/
        =E2=94=82   =E2=94=94=E2=94=80=E2=94=80 e3/
        =E2=94=82       =E2=94=94=E2=94=80=E2=94=80 f3/
        =E2=94=94=E2=94=80=E2=94=80 d4/
            =E2=94=9C=E2=94=80=E2=94=80 e4/
            =E2=94=82   =E2=94=94=E2=94=80=E2=94=80 f4/
            =E2=94=94=E2=94=80=E2=94=80 e5/
                =E2=94=9C=E2=94=80=E2=94=80 f5/
                =E2=94=94=E2=94=80=E2=94=80 f6/
Using in Opam build steps
build: [
  ["diskuvbox" "copy-file-into" "assets/icon.png" "assets/public.gpg" "%{_:=
share}%"]
]
Using in Dune rules
(rule
 (targets diskuvbox.corrected.ml diskuvbox.corrected.mli)
 (deps
  (:license %{project_root}/etc/lice=
nse-header.txt)
  (:conf    %{project_root}/etc/head=
ache.conf))
 (action
  (progn
   (run diskuvbox copy-file -m 644 diskuvbox.ml  diskuvbox.corrected.ml)
   (run diskuvbox copy-file -m 644 diskuvbox.mli diskuvbox.corrected.mli)
   (run headache -h %{license} -c %{conf} %{targets})
   (run ocamlformat --inplace --disable-conf-files --enable-outside-detecte=
d-project %{targets}))))

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