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 4DD777EE9C; Wed, 30 Nov 2016 17:53:03 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=alain.frisch@lexifi.com; spf=None smtp.mailfrom=alain.frisch@lexifi.com; spf=None smtp.helo=postmaster@vrout10.yaziba.net 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=185.56.204.34; 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=185.56.204.34; 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@vrout10.yaziba.net) identity=helo; client-ip=185.56.204.34; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="alain.frisch@lexifi.com"; x-sender="postmaster@vrout10.yaziba.net"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AfzuGBxKiz4WaUnGMFtmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgUKfrxwZ3uMQTl6Ol3ixeRBMOAuqkC0Lud7PGoGTRZp83e4DZaKN0EfiRGoP?= =?us-ascii?q?tVtjRoONSCB0z/IayiRA0BN+MGamVY+WqmO1NeAsf0ag6aiHSz6TkPBke3blIt?= =?us-ascii?q?dazdU7TfhMWv1u2054abI0AR3GL8MvtOK0Cxph7QucQQqYpkMKc4jBXT5jNvUO?= =?us-ascii?q?1TwStNLFOXnhDzruOx54Irpy9ZvvZk889bTY37eb45RPpWFmJ1HXoy4ZjCsRDC?= =?us-ascii?q?S0Oh/HoHWWVexhNMCgnDqh/gX4z6sgP+u/p81ijcNsrzG+NnEQ++5rtmHUe7wB?= =?us-ascii?q?wMMCQ0pSSO0pR9?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CVAQCcAz9YhyLMOLldHAEBBAEBCgEBF?= =?us-ascii?q?wEFAQsBgw4BAQEBAXelXpRoggglhXOCSRIBAQEBAQEBAQEBARIBAQEKCwkJHTB?= =?us-ascii?q?CAQEDCQSBXwQBFQEEgkAVbggCJgJLFAEMCAEBEIhdAQmseYIpi1EgBYELhTOBf?= =?us-ascii?q?QiKI4JdBZpXgXiEU4pEAoFwiBWGK4dZgjqHagIlA4ElhAmBaYRYO4I5gU8BAQE?= X-IPAS-Result: =?us-ascii?q?A0CVAQCcAz9YhyLMOLldHAEBBAEBCgEBFwEFAQsBgw4BAQE?= =?us-ascii?q?BAXelXpRoggglhXOCSRIBAQEBAQEBAQEBARIBAQEKCwkJHTBCAQEDCQSBXwQBF?= =?us-ascii?q?QEEgkAVbggCJgJLFAEMCAEBEIhdAQmseYIpi1EgBYELhTOBfQiKI4JdBZpXgXi?= =?us-ascii?q?EU4pEAoFwiBWGK4dZgjqHagIlA4ElhAmBaYRYO4I5gU8BAQE?= X-IronPort-AV: E=Sophos;i="5.31,574,1473112800"; d="scan'208";a="247506307" Received: from vrout10-bl.yaziba.net (HELO vrout10.yaziba.net) ([185.56.204.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 30 Nov 2016 17:52:38 +0100 Received: from mtaout10.int.yaziba.net (mtaout10.int.yaziba.net [10.4.20.36]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by vrout10.yaziba.net (mx10.yaziba.net) with ESMTPS id 6858751FF2; Wed, 30 Nov 2016 17:52:38 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mtaout10.int.yaziba.net (Postfix) with ESMTP id 6C2B716045A; Wed, 30 Nov 2016 17:52:38 +0100 (CET) X-Virus-Scanned: amavisd-new at Received: from mtaout10.int.yaziba.net ([127.0.0.1]) by localhost (mtaout10.int.yaziba.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Yy5vtuglcCyu; Wed, 30 Nov 2016 17:52:38 +0100 (CET) Received: from [10.0.210.40] (unknown [185.23.92.144]) by mtaout10.int.yaziba.net (Postfix) with ESMTPSA id 5165B160315; Wed, 30 Nov 2016 17:52:38 +0100 (CET) To: ocsigen@inria.fr, OCaml Mailing List From: Alain Frisch Message-ID: <96757896-e79c-f940-fc3a-090fc1419df2@lexifi.com> Date: Wed, 30 Nov 2016 17:52:38 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-DRWEB-SCAN: ok X-VRSPAM-SCORE: -100 X-VRSPAM-STATE: legit X-VRSPAM-CAUSE: gggruggvucftvghtrhhoucdtuddrfeelfedrfeelgdelfecutefuodetggdotefrucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepvffhuffkffgfgggtgfesthejredttdefjeenucfhrhhomheptehlrghinhcuhfhrihhstghhuceorghlrghinhdrfhhrihhstghhsehlvgigihhfihdrtghomheqnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucfkphepudekhedrvdefrdelvddrudeggeenucfrrghrrghmpehmohguvgepshhmthhpohhuth X-VRSPAM-EXTCAUSE: mhhouggvpehsmhhtphhouhht Subject: [Caml-list] Announce: ocaml-vdom (pre-release) Dear all, You might be interested in the ocaml-vdom project which has been used by LexiFi for some time and open-sourced recently. It contains two components which we use to create our browser-side UIs with js_of_ocaml and which might be useful to the community: - Bindings to the DOM and other browser APIs, implemented with gen_js_api. (Partial bindings, expanded on demand.) - An implementation of a "virtual DOM" and the "Elm architecture", i.e. a programming model where the UI is specified by a state type, a view function (producing a functional version of the DOM), and an update function that modifies the state based on messages (generated by UI events or external interactions). Project page: https://github.com/LexiFi/ocaml-vdom -- Alain