From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr 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 CDE567FCCB for ; Wed, 8 Apr 2015 20:20:56 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of dario.teixeira@nleyten.com) identity=pra; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="dario.teixeira@nleyten.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of dario.teixeira@nleyten.com) identity=mailfrom; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="dario.teixeira@nleyten.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@relay5-d.mail.gandi.net) identity=helo; client-ip=217.70.183.197; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="dario.teixeira@nleyten.com"; x-sender="postmaster@relay5-d.mail.gandi.net"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0D/AQBGcSVVnMW3Rtlcg1phgxDCMoUvgXo8EAEBAQEBAQERAQEBAQEGDQkJFC5BBYQDFVUhAiYCXxuIJgmmXo9VlmEEgSGRdYFFBZRsgieYQQKBc4IfgjJ/AQEB X-IPAS-Result: A0D/AQBGcSVVnMW3Rtlcg1phgxDCMoUvgXo8EAEBAQEBAQERAQEBAQEGDQkJFC5BBYQDFVUhAiYCXxuIJgmmXo9VlmEEgSGRdYFFBZRsgieYQQKBc4IfgjJ/AQEB X-IronPort-AV: E=Sophos;i="5.11,545,1422918000"; d="scan'208";a="132246248" Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ADH-AES256-SHA; 08 Apr 2015 20:20:39 +0200 Received: from mfilter2-d.gandi.net (mfilter2-d.gandi.net [217.70.178.140]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id E55D641C04E for ; Wed, 8 Apr 2015 20:20:38 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter2-d.gandi.net Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by mfilter2-d.gandi.net (mfilter2-d.gandi.net [10.0.15.180]) (amavisd-new, port 10024) with ESMTP id 2ALNeqHiLILQ for ; Wed, 8 Apr 2015 20:20:37 +0200 (CEST) X-Originating-IP: 10.58.1.142 Received: from webmail.gandi.net (unknown [10.58.1.142]) (Authenticated sender: dario.teixeira@nleyten.com) by relay5-d.mail.gandi.net (Postfix) with ESMTPA id 9041A41C064 for ; Wed, 8 Apr 2015 20:20:37 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Date: Wed, 08 Apr 2015 19:20:37 +0100 From: Dario Teixeira To: caml-list Message-ID: <2f9c74beafcf41f3ab30324fb1ece739@nleyten.com> X-Sender: dario.teixeira@nleyten.com User-Agent: Roundcube Webmail/0.9.5 Subject: [Caml-list] META file standards for ppx extensions Hi, I think we need to standardise the naming and structure of META files associated with ppx extensions. Case in point: I was hoping to start using sedlex instead of ulex, because the latter has been deprecated for a while now and all the cool kids are switching to the former. However, sedlex currently ships with a broken META file that severely restricts its usefulness [1]. Therefore, in order to avoid similar problems with other ppx extensions and to foster some uniformity in the ecosystem, here's what I suggest: a) Suppose you have a ppx extension called 'foobar' that relies on a runtime library foobar.cma (and native code counterparts, which I'll omit from now on). The top-level declarations in foobar's META should reference foobar.cma, but should *not* include a ppx declaration. The ppx declaration should be part of a 'ppx' sub-package. b) If the ppx extension 'foobar' does not have a runtime library, then the top-level declarations in the META file should consist only of generic version and description information. The actual ppx declaration should be part of a 'ppx' sub-package, as in a). There is obviously an alternative approach where the ppx invocations are located at the top-level and any potential runtime libraries are moved into a 'lib' sub-package. I prefer the approach outlined above, however, as it makes ppx invocations explicit and follows the 'syntax' sub-package tradition from Camlp4's glory days. Thoughts or suggestions? Best regards, Dario Teixeira [1] https://github.com/alainfrisch/sedlex/issues/22