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 sympa.inria.fr (Postfix) with ESMTPS id D86447FCCB for ; Mon, 27 Apr 2015 19:38:13 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of alain.frisch@lexifi.com) identity=pra; client-ip=85.233.204.164; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="alain.frisch@lexifi.com"; x-sender="alain.frisch@lexifi.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of alain.frisch@lexifi.com) identity=mailfrom; client-ip=85.233.204.164; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="alain.frisch@lexifi.com"; x-sender="alain.frisch@lexifi.com"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mx20.yaziba.net) identity=helo; client-ip=85.233.204.164; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="alain.frisch@lexifi.com"; x-sender="postmaster@mx20.yaziba.net"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CaAQChcj5VnKTM6VVcg1+DdsUAhzk7EQEBAQEBAQERAQEBAQEICwkJIS6EShV2AgUhAhECTA0IAQGIKwmkGo9WlC0EgSGSC4FFBZVWgj+DeYc5hGaJQAKEGYMxAQEB X-IPAS-Result: A0CaAQChcj5VnKTM6VVcg1+DdsUAhzk7EQEBAQEBAQERAQEBAQEICwkJIS6EShV2AgUhAhECTA0IAQGIKwmkGo9WlC0EgSGSC4FFBZVWgj+DeYc5hGaJQAKEGYMxAQEB X-IronPort-AV: E=Sophos;i="5.11,658,1422918000"; d="scan'208";a="137815516" Received: from mx20.yaziba.net ([85.233.204.164]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ADH-AES256-SHA; 27 Apr 2015 19:38:13 +0200 Received: from mta10.int.yaziba.net (unknown [10.4.20.30]) by mx20.yaziba.net (mx10.yaziba.net) with ESMTP id BD1C71A7803 for ; Mon, 27 Apr 2015 19:38:12 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mta10.int.yaziba.net (Postfix) with ESMTP id 0F3ECCA653 for ; Mon, 27 Apr 2015 19:38:13 +0200 (CEST) X-Virus-Scanned: amavisd-new at mta10.int.yaziba.net Received: from mta10.int.yaziba.net ([127.0.0.1]) by localhost (mta10.int.yaziba.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8kY9Th1cFUVB for ; Mon, 27 Apr 2015 19:38:12 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mta10.int.yaziba.net (Postfix) with ESMTP id E184ECA65C for ; Mon, 27 Apr 2015 19:38:12 +0200 (CEST) X-Virus-Scanned: amavisd-new at mta10.int.yaziba.net Received: from mta10.int.yaziba.net ([127.0.0.1]) by localhost (mta10.int.yaziba.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id f3A8TZskjAML for ; Mon, 27 Apr 2015 19:38:12 +0200 (CEST) Received: from [10.0.48.241] (unknown [185.23.92.144]) by mta10.int.yaziba.net (Postfix) with ESMTPSA id C4D78CA653 for ; Mon, 27 Apr 2015 19:38:12 +0200 (CEST) Message-ID: <553E7400.60702@lexifi.com> Date: Mon, 27 Apr 2015 19:38:08 +0200 From: Alain Frisch Organization: LexiFi User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: caml-list Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-DRWEB-SCAN: ok X-VRSPAM-SCORE: 50 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrfeektddrieejgdduudeiucetufdoteggodetrfcurfhrohhfihhlvgemucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddtnecuogetfeejfedqtdegucdlhedtmdenucfjughrpefkfffhohgfggfvufgtgfesthejrgdttdefjeenucfhrhhomheptehlrghinhcuhfhrihhstghhuceorghlrghinhdrfhhrihhstghhsehlvgigihhfihdrtghomheqnecuffhomhgrihhnpehgihhthhhusgdrtghomh X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht Subject: [Caml-list] gen_js_api: generating Javascript bindings from OCaml interfaces Dear all, LexiFi is currently experimenting with the js_of_ocaml compiler in order to create some browser-side applications in OCaml. In this context, we have started a new project called gen_js_api which aims at simplifying the creation of bindings to Javascript libraries. The approach is quite different from js_of_ocaml's native FFI (which relies on language extensions). In gen_js_api, authors of bindings define the expected OCaml interface, annotated with light attributes to define the actual mapping to Javascript; and client of generated bindings work with native OCaml types, without requiring any language extension, nor any knowledge of how js_of_ocaml represents OCaml values in Javascript. gen_js_api has reached a state where actual bindings can be written, and it is reasonably well documented. It is now a good time to look at the project if you're interested in this topic. Of course, feel free to comment on the project or contribute to it. Project page: https://github.com/alainfrisch/gen_js_api Alain