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 A7037800EF for ; Tue, 7 Mar 2017 20:13:38 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=andre@digirati.com.br; spf=Pass smtp.mailfrom=andre@digirati.com.br; spf=Pass smtp.helo=postmaster@mta112.f1.k8.com.br Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of andre@digirati.com.br) identity=pra; client-ip=187.73.32.184; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="andre@digirati.com.br"; x-sender="andre@digirati.com.br"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of andre@digirati.com.br designates 187.73.32.184 as permitted sender) identity=mailfrom; client-ip=187.73.32.184; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="andre@digirati.com.br"; x-sender="andre@digirati.com.br"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of postmaster@mta112.f1.k8.com.br designates 187.73.32.184 as permitted sender) identity=helo; client-ip=187.73.32.184; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="andre@digirati.com.br"; x-sender="postmaster@mta112.f1.k8.com.br"; x-conformance=sidf_compatible; x-record-type="v=spf1" IronPort-PHdr: =?us-ascii?q?9a23=3ANMkO8xccHFIYz2Z7S1NOG6+GlGMj4u6mDksu8pMi?= =?us-ascii?q?zoh2WeGdxc2yYx7h7PlgxGXEQZ/co6odzbGH7ua8AydZu83J8ChbNscTB1ld0Y?= =?us-ascii?q?RetjdjKfDGIHWzFOTtYS0+EZYKf35e1Fb/D3JoHt3jbUbZuHy44G1aMBz+MQ1o?= =?us-ascii?q?Ora9QdaK3Izkn9y1rpbaZgEAmSGwe6g6eB6/qAGUssgNnaNjLLwww13HuC0bVf?= =?us-ascii?q?5RwDZBI16Jkl7a79uw9Zgrpy1Wt+gs38JBXqTgdrg5C7dfCXIsKTZmt4XQqRDf?= =?us-ascii?q?QF7XtTMnWWIMn08QDg=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DnEgDiBb9Yh7ggSbtdHgYMGQYMhAcDJ?= =?us-ascii?q?2CDX6w6hFOCDSqETYNTQRYBAQEBAQEBAQEBARIBAQEKCwkIKC+CMyCCbB0BATh?= =?us-ascii?q?cAiILAgEvDAEIAQGJfQyvS2iCJoMIAQEFiAsHAwWIU4cogmIMLoJfnDWDeIIJd?= =?us-ascii?q?YtbT4lSE4EShT0CSJJzJgNsRSIVCBYWhE81IIIJW4oTAQEB?= X-IPAS-Result: =?us-ascii?q?A0DnEgDiBb9Yh7ggSbtdHgYMGQYMhAcDJ2CDX6w6hFOCDSq?= =?us-ascii?q?ETYNTQRYBAQEBAQEBAQEBARIBAQEKCwkIKC+CMyCCbB0BAThcAiILAgEvDAEIA?= =?us-ascii?q?QGJfQyvS2iCJoMIAQEFiAsHAwWIU4cogmIMLoJfnDWDeIIJdYtbT4lSE4EShT0?= =?us-ascii?q?CSJJzJgNsRSIVCBYWhE81IIIJW4oTAQEB?= X-IronPort-AV: E=Sophos;i="5.36,258,1486422000"; d="asc'?scan'208";a="263574129" Received: from mta112.f1.k8.com.br ([187.73.32.184]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Mar 2017 20:13:36 +0100 Received: from [10.200.12.21] (unknown [201.76.188.234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtpz.f1.k8.com.br (Postfix) with ESMTPSA id 9AB3280170 for ; Tue, 7 Mar 2017 19:13:31 +0000 (UTC) X-DKIM: OpenDKIM Filter v2.6.8 smtpz.f1.k8.com.br 9AB3280170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=digirati.com.br; s=default; t=1488914011; bh=VbjKYUTTyoNARziepJGcjj1uaEeGCbwUCrpv2JQeANs=; h=To:From:Subject:Date; b=DJi217XlHPRy34T57AKHY8TvYQeDT6ajgLf8mwTVrChf4zcUeM6YHx3yB81lBMDE+ 6aQ2K2p5NQAW5XXdMM6efvG4pv6mgocK11ZNFwX4ZlNiTvn591hxzBidrBfG4bDMo4 m9MPJOd3P6Qz1/VeIO5zy9lG8lc6UHegpz1Tu0gw= To: caml users From: Andre Nathan Message-ID: Date: Tue, 7 Mar 2017 16:13:26 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="IKmqTgcigfMN2LNiJOmTLMe3opHPoSoX7" Subject: [Caml-list] [ANN] libbin_prot, php-bin_prot, ppx_bin_prot_interop This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --IKmqTgcigfMN2LNiJOmTLMe3opHPoSoX7 Content-Type: multipart/mixed; boundary="jOe54BxnC1fKunWwoIXuXdHo7ru8E4N8i"; protected-headers="v1" From: Andre Nathan To: caml users Message-ID: Subject: [ANN] libbin_prot, php-bin_prot, ppx_bin_prot_interop --jOe54BxnC1fKunWwoIXuXdHo7ru8E4N8i Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi We have plans to make use of Jane Street's bin_prot-based RPC libraries for some future projects, but one requirement is that we must interoperate with clients written in other languages, namely PHP. So I've been working on these 3 projects to make this possible: * libbin_prot [1] is a C port of (most of) bin_prot, with added support for RPC clients. This was written to avoid having to implement bin_prot multiple times in other languages - one can just write bindings to the C library. * php-bin_prot [2] is a PHP extension binding libbin_prot. It supports both PHP 5 and 7. * ppx_bin_prot_interop [3] is a PPX rewriter that generates PHP code from OCaml type definitions. It's written in a way that it should be easy enough to add support for other languages, as it builds a sort-of-AST that just has to be converted to strings in the proper language syntax. It's a bit hackish but gets the job done. The repository includes an example with an OCaml RPC server and a PHP client. ppx_bin_prot_interop is not on OPAM yet because I'm relying on the latest jbuilder version that is only available on Jane Street's repository [4] as of now. You should still be able to use it via "opam pin" if you want to give it a try. [1] https://github.com/andrenth/libbin_prot [2] https://github.com/andrenth/php-bin_prot [3] https://github.com/andrenth/ppx_bin_prot_interop [4] opam repo add janestreet https://github.com/janestreet/opam-repository.git Now that OCaml can talk to PHP, world domination should not be too far. Cheers, Andre --jOe54BxnC1fKunWwoIXuXdHo7ru8E4N8i-- --IKmqTgcigfMN2LNiJOmTLMe3opHPoSoX7 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYvwZWAAoJED4JW1qwFY2c+EUH/1/gsRvMzpSS7NR8IKi0EJ28 rFwyK+w09mC24GIlJ7/MZT5e6mu6dHvfQuVOmqhYaUL7eeLjLHw2F2KIaFzaBRMO DzvMUsqHctpKVPMhT4C/vzpNErM9Fmgo5BH5JvSrnEcWJC2x3Uk7vdGkSY9wWozI d+cJ6wBEHGs9fyfGxLXnJRFFCoop1seL7b6jikBwPca/PtXzt3WYAg0AHna59Esw eOyxKqUEc0f9XPZGmu8VJbEtIRBfZ1a/9s50a8MFpK+GBkT96wYDuRCYBJqsGzeC /wdcJcgVZH0VuOO7Fzqoa7mpmiavbyjKqMaQLCVDwP2TLoNKUo41llDmJuf72JA= =sID9 -----END PGP SIGNATURE----- --IKmqTgcigfMN2LNiJOmTLMe3opHPoSoX7--