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 mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by sympa.inria.fr (Postfix) with ESMTPS id 787EF7EE56 for ; Mon, 10 Dec 2012 18:33:40 +0100 (CET) Received-SPF: None (mail1-smtp-roc.national.inria.fr: no sender authenticity information available from domain of benusb@gmail.com) identity=pra; client-ip=209.85.210.172; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="benusb@gmail.com"; x-sender="benusb@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail1-smtp-roc.national.inria.fr: domain of benusb@gmail.com designates 209.85.210.172 as permitted sender) identity=mailfrom; client-ip=209.85.210.172; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="benusb@gmail.com"; x-sender="benusb@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail1-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ia0-f172.google.com) identity=helo; client-ip=209.85.210.172; receiver=mail1-smtp-roc.national.inria.fr; envelope-from="benusb@gmail.com"; x-sender="postmaster@mail-ia0-f172.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtUBALkbxlDRVdKsm2dsb2JhbABEvnkIFg4BAQEBAQgJCwkUJ4JMGQE5Aw0FEF0SAQUBIgGIEQMPDJkijy6EaScNiU4BBQyMPoQ4A5AmhWCBHI1MFimBV4I+gWw X-IronPort-AV: E=Sophos;i="4.84,252,1355094000"; d="scan'208";a="185469637" Received: from mail-ia0-f172.google.com ([209.85.210.172]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 10 Dec 2012 18:33:39 +0100 Received: by mail-ia0-f172.google.com with SMTP id z13so5189837iaz.31 for ; Mon, 10 Dec 2012 09:33:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type:content-transfer-encoding; bh=QuyFLRgwkZtVE8cedjJd2naTXT4DLJEZOxLaTP1Zi5o=; b=Jl/FC/kX8tjxFniDH21ikdXpMF5NsdfBhDelptuzqsx9hy/QpuR+m9G8GAxbXcZCC+ lR/QBidy1CKuJ38WUPt+CcoD8/3v/DpTDZROwqWZfedwZ4B6fFax25pjvewb1Rfphlk3 MoEPe7QfIrDyRrNLPXA5SDYoLXcWDTk0tcg/a9QpilgENprbewijDlpkO8V9LAtWSOYW K5hDG90xPjcHlGT3eoVm5589okDLigdSy2/QNFCS/Zrw/9YXh7dG1TGma+Nz6RjBQ5P8 NsIP//CxybPNEGlqxxm2CDNIWqrD3EAaxJRP7DqBxab9eQw2YygF9GnNa+XBMPPlEOMj JEnA== MIME-Version: 1.0 Received: by 10.50.195.134 with SMTP id ie6mr6898108igc.45.1355160818581; Mon, 10 Dec 2012 09:33:38 -0800 (PST) Sender: benusb@gmail.com Received: by 10.50.39.109 with HTTP; Mon, 10 Dec 2012 09:33:38 -0800 (PST) Date: Mon, 10 Dec 2012 18:33:38 +0100 X-Google-Sender-Auth: IIqK8nqxeBKVNpFS-ZKWRiUV1Xs Message-ID: From: Benedikt Becker To: caml users , ocsigen@sympa.mancoosi.univ-paris-diderot.fr Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Validation-by: zol@benozol.de Subject: [Caml-list] [ANN] Ocsigen: Eliom 3 Dear OCamlers, we are celebrating Ada's birthday by bringing out a major update of Eliom - the advanced framework for client/server web applications in OCaml - and some minor updates for Ocsigenserver and Tyxml. Here is a list of major new features (and short code snippets can be found at the end of this email): * The tightest integration of client value within the server code ever made possible in a major statically typed programming language [1] * Easy access to top-level server values - and (Lwt-)functions - from within the client code [2] * Access to other users' states of Eliom references * Improved support of Eliom's source files in the compilation tools eliom{c,opt,dep} * A new tool, eliom-destillery, for creating basic projects fast & easy The manual, a cheat-sheet, a comprehensive tutorial, and the API-documentation of the various Ocsigen projects are available on * http://ocsigen.org The probably simplest and most generic way to install Eliom is by using OPAM. But also Debian packages are already available (in experimental, thanks St=E9phane!), Gentoo-ebuilds are on their way, the Ocsigen-bundle is still at hand, and the archives can be found at * http://ocsigen.org/eliom/install And maybe you may want to become social with us on * https://twitter.com/ocsigen * https://plus.google.com/u/0/105890612060116987398/posts * https://www.facebook.com/pages/Ocsigen/289974521051526 Enjoy! -- The Ocsigen-team [1] {server{ (* This marks server-side code *) let value_history_on_client =3D {ref string{ ref [] }} (* A client value within the server code *) let _ =3D My_app.register_service ~path ~get_params (fun value () -> (* Push the GET parameter to the client's history a side effect *) ignore {unit{ %value_history_on_client :=3D %value :: ! %value_history_on_client }}; Lwt.return html) }} [2] {server{ let f =3D server_function Json.t (fun x -> Printf.eprintf "Client says: %s\n%!" x; Lwt.return ()) }} {client{ (* This marks client-side code *) (* %f makes the server's value f, a client-ready server function, available in the client code *) ... %f "hello!" ... }}