8 | Henry, G. Typer la sérialisation sans sérialiser les typesUniversité Paris Diderot - Paris 7 2011. |
15 | Serrano, M. and Queinnec, C. HTML5 Video portable avec Hophttp://www.programmez.comGnu Linux Magazine France129Jan 2010. |
5 | Canou, B. Programmation Web TypéeUniversité Pierre et Marie Curie (UPMC - Paris 6)Oct 2011. |
12 | Serrano, M. HopTeX - Compiling HTML to LaTeX with CSShttp://www.inria.fr/mimosa/Manuel.Serrano/publi/serrano-scheme11a.pdfProceedings of the Scheme'11 workshopPortland, USAOct 2011. |
9 | Luo, Z. and Rezk, T. and Serrano, M. Automated Code Injection Prevention for Web ApplicationsProceedings of the first Conference on Theory of Security and Applications (TOSCA'11)Lecture Notes on Computer Science6993Saarbrücken, GermanyApr 2011186--204. |
14 | Serrano, M. and Queinnec, C. A multi-tier semantics for HopHigher Order and Symbolic Computation 2010. |
3 | Boudol, G. et al.Towards Reasoning for Web Applications: an Operational Semantics for HopProceedings of the first Workshop on Analysis and Programming Languages for Web Applications and Cloud ApplicationsToronto, CanadaJun 2010. |
11 | Serrano, M. HSS: a Compiler for Cascading Style Sheets10th ACM Sigplan Int'l Conference on Principles and Practice of Declarative Programming (PPDP)Jul 2010. |
10 | Serpette, B. and Serrano, M. An Interpreter for Server-Side Hophttp://www.inria.fr/mimosa/Manuel.Serrano/publi/ss-dls11.pdfProceedings of the DLS'11 symposiumPortland, USAOct 2011. |
2 | Berry, G. and Nicolas, C. and Serrano, M. HipHop: A Synchronous Reactive Extension for Hophttp://plastic.host.adobe.com/plastic2.pdfProceedings of the PLASTIC'11 workshopPortland, USAOct 2011. |
1 | Balat, V. and Chambart, P. and Henry, G. Client-server Web applications with Ocsigenhttp://hal.archives-ouvertes.fr/hal-00691710WWW2012 dev track proceedingsLyon, FranceApr 201259. |
6 | Canou, B. and Chailloux, E. and Vouillon, J. How to Run your Favorite Language in Web Browsershttp://hal.archives-ouvertes.fr/hal-00694031WWW2012 dev track proceedingsLyon, FranceApr 2012-. |
7 | Chailloux, E. and Serpette, P. B. Séparation des couleurs dans un lambda-calcul bichromehttp://hal.inria.fr/hal-00665958JFLA - Journées Francophones des Langages Applicatifs - 2012Carnac, FranceFeb 2012. |
4 | Boudol, G. et al.Reasoning about Web Applications: An Operational Semantics for HOPhttp://www.inria.fr/mimosa/Manuel.Serrano/publi/blrs-toplas12.pdfACM Transactions on Programming Languages and Systems (TOPLAS)342New York, NY, USA 2012. |
13 | Serrano, M. and Berry, G. Multitier Programming in Hop - A first step toward programming 21st-century applicationshttp://cacm.acm.org/magazines/2012/8/153796-multitier-programming-in-hop/abstractCommunications of the ACM558Aug 201253--59. |
The goal of the PWD project is to propose new programming languages for developing new applications on the Web. The HOP programming language, that is developed at INRIA Sophia-Antipolis, and the Eliom framework of the Ocsigen project, developed at PPS, will serve as a basis for these studies. Some of the proposed tasks will consist in studying unexplored aspects of these languages such as the formal semantics of the HOP programming language or its constructions for dealing with security. Some tasks will consist in extending them with new facilities (such as the dynamic services discovery). Others tasks will consist in improving and optimizing their implementations. The last task consisting in developing innovative Web applications will aim at validating the design and implementation of our languages. More generally it will also be aimed at validating the overall design enforced by this new family of languages.
Since the beginning of the ANR PWD project, several versions of HOP, Ocsigen, and Obrowser have been publicly released. The main releases have been:
The new major release hop-2.4.0 is planned for October 2012.
The next step is likely to be incorporating the physical environment into the Web. Recent electronic devices are equipped with various sensors (GPS, cameras, microphones, metal detectors, speech commands, thermometers, motion detection, and so on) and communication means (IP stack, telephony, SMS, Bluetooth), which enable applications to interact with the real world. Web browsers integrate these features one after the other, making the Web runtime environment richer every day. The future is appealing, but one difficulty remains: current programming methods and languages are not ideally suited for implementing rich Web applications. This is not surprising as most have been invented in the 20th century, before the Web became what it is now.
Traditional programming languages have trouble dealing with the asymmetric client-server architecture of Web applications. Ensuring the semantic coherence of distributed client-server execution is challenging, and traditional languages have no transparent support for physical distribution. Thus, programmers need to master a complex gymnastics for handling distributed applications, most often using different languages for clients and servers. JavaScript is the dominant Web language but was conceived as a browser only client language. Servers are usually programmed with quite different languages such as Java, PHP, Ruby, etc. Recent experiments such as Node.js propose using JavaScript on the server, which makes the development more coherent; however, harmonious composition of independent components is still not ensured.
In 2006, three different projects namely, GWT from Google, Links from the University of Edinburgh, and HOP from INRIA, offered alternative methods for programming Web applications. They all proposed that a Web application should be programmed as a single code for the server and client, written in a single unified language. This principle is known as multitier programming.
Links is an experimental languages in which the server holds no state and functions can be symmetrically called from both sides, allowing them to be declared on either the server or the client. These features are definitely interesting for exploring new programming ideas, but they are difficult to implement efficiently, making the platform difficult to use for realistic applications.
GWT is more pragmatic. It maps traditional Java programming into the Web. A GWT program looks like a traditional Java/Swing program compiled to Java bytecode for the server side and to JavaScript for the client side. Java cannot be considered as the unique language of GWT, however. Calling external APIs relies on Javascipt inclusion in Java extensions. GUIs are based on static components declared in external HTML files and on dynamic parts generated by the client-side execution. Thus, at least Java, Javascript, and HTML are directly involved.
The HOP language, presented in 13, takes another path relying on a different idea: incorporating all the required Web-related features into a single language with a single homogeneous development and execution platform, thus uniformly covering all the aspects of a Web application: client-side, server-side, communication, and access to third-party resources. HOP embodies and generalizes both HTML and JavaScript functionalities in a Scheme-based platform that also provides the user with a fully general algorithmic language. Web services and APIs can be used as easily as standard library functions, whether on the server side or client side.
In the article 4 we have proposed a small-step operational semantics to support reasoning about Web applications written in the multitier language HOP. This semantics covers both server side and client side computations, as well as their interactions, and includes creation of Web services, distributed client-server communications, concurrent evaluation of service requests at server side, elaboration of HTML documents, DOM operations, evaluation of script nodes in HTML documents and actions from HTML pages at client side. We also model the browser same origin policy (SOP) in the semantics. We propose a safety property by which programs do not get stuck due to a violation of the SOP and a type system to enforce it.
HOP is a SCHEME-based language and system to build rich multi-tier web applications. We present HIPHOP, a new language layer within HOP dedicated to request and event orchestration 2. HIPHOP follows the synchronous reactive model of the Esterel and ReactiveC languages, originally developed for embedded systems programming. It is based on synchronous concurrency and preemption primitives, which are known to be key components for the modular design of complex temporal behaviors. Although the language is concurrent, the generated code is purely sequential and thread-free; HIPHOP is translated to HOP for the server side and to straight JavaScript for the client side. With a music playing example, we show how to modularly buid non-trivial orchestration code with HIPHOP.
HOP is a Scheme-based multi-tier programming language for the Web. The client-side of a program is compiled to JavaScript, while the server-side is executed by a mix of natively compiled code and interpreted code. At the time where HOP programs were basic scripts, the performance of the server-side interpreter was not a concern; an inefficient interpreter was acceptable. As HOP expanded, HOP programs got larger and more complex. A more efficient interpreter was necessary. This new interpreter is described in 10. It is compact, its whole implementation counting no more than 2.5 KLOC. It is more than twice faster than the old interpreter and consumes less than a third of its memory. Although it cannot compete with static or JIT native compilers, our experimental results show that it is amongst the fastest interpreters for dynamic languages.
The article 11 presents HSS, a compiler for CSS. It is first argued that generating CSS improves portability and maintainability of CSS files. This claim is supported by realistic examples. Then, the HSS compilation algorithm is presented. It is simple enough to be easily adapted to most web development kits.
HSS can be used as a stand-alone HSS-to-CSS compiler in the goal of enriching CSS with user defined variables, functions, and element types. It can also be used with the Hop web development kit in which case, working hand in hand with the Hop programming language, it can be used to implement skinning or theming of web applications.
We propose 3 a small-step operational semantics to support reasoning about web applications written in the multi-tier language HOP. The semantics covers both server side and client side computations, as well as their interactions, and includes creation of web services, distributed client-server communications, concurrent evaluation of service requests at server side, elaboration of HTML documents, DOM operations, evaluation of script nodes in HTML documents and actions from HTML pages at client side.
Hop is a multi-tier programming language where the behavior of interacting servers and clients are expressed by a single program. Hop adheres to the standard web programming style where servers elaborate HTML pages containing JavaScript code. This JavaScript code responds locally to user's interactions but also (following the so-called Ajax style) requests services from remote servers. These services bring back new HTML fragments containing additional JavaScript code replacing or modifying the state of the client.
The paper 14 presents a continuation-based denotational semantics for a sequential subset of Hop. Though restricted to a single server and a single client, this semantics takes into account the key feature of Hop namely that the server elaborates client code to be run in the client's browser. This new client-code dynamically requests services from the server which, again, elaborate new client code to be run in the client's browser.
This semantics details the programming model advocated by Hop and provides a sound basis for future studies such as security of web applications and web continuations.
We study common security problems related to integrity violations in web applications. We are interested in providing formal bases to prove that web applications's (and more generally generated mashups's)
- trusted components will be code injection free at run-time - untrusted components's influence to trusted components is limited to a set of given authorized resources.We investigate formalization of these properties by means of web applications abstract semantics and discuss correct implementations to enforce them. We have incorporated the proposed enforcement mechanisms as additional modular compilation stages in HOP, a full-fledged multi-tier language to write web applications. This work is presented in 9.
The article 12 presents HopTeX, a new application for authoring Html and LaTeX documents. The content of the document can is either be expressed in Html or in a blending of Html and a dedicated wiki syntax, for the sake of conciseness and readability. The rendering of the document is expressed by a set of CSS rules. The main originality of HopTeX is to consider LaTeX as a new media type for Html and to express the compilation from Html to LaTeX by the means of dedicated style sheet rules.
HopTeX can then be used to generate high quality documents for both paper printed version and electronic version. The online version of this paper is available at the HopTeX web page. It can be read using a regular Web browser or using Smartphone browsers.
HopTeX is implemented in HOP, a multi-tier programming language for the Web 2.0. This implementation extensively relies on two facilities generally only available on the client-side that HOP also supports on the server-side of the application: DOM manipulations and CSS server-side resolutions.
As part of Benjamin Canou's thesis 5, we proposed a high level and type-safe API for document manipulations. The goal was to be safer and more high-level than the browser's DOM. In particular, we aimed at eliminating the implicit moves performed by the DOM to maintain the tree structure which limit the possibilities of static typing.
First, we gave a minimal formal model similar to the DOM. Upon this first model, we built an alternative document API in which moves are replaced by implicit deep copy operations.
To prove the validity of our approach, we designed on top of this document API a language based on ML equiped with document manipulation features, that are well typed thanks to the use of our alternative document model.
An implementation of the language is ongoing, and scientific publications are to be submitted soon.
Paper submitted.
Web sites are evolving into ever more complex distributed applications. But current Web programming tools are not fully adapted to this evolution, and force programmers to worry about too many inessential details. We want to define an alternative programming style better fitted to that kind of applications. To do that, we propose an analysis of Web interaction in order to break it down into very elementary notions, based on semantic criteria instead of technological ones. This allows defining a common vernacular language to describe the concepts of current Web programming tools, but also some other new concepts. We use this to define a new service identification mechanism.
This results in a significant gain of expressiveness. The understanding and separation of these notions also makes it possible to get strong static guarantees, that can help a lot during the development of complex applications, for example by making impossible the creation of broken links. Most of the ideas we propose have been implemented in the Ocsigen Web programming framework. We give a quick outline of that implementation.
Paper submitted.
We present the design and implementation of a compiler from OCaml bytecode to Javascript. We believe that taking bytecode as input instead of a high-level language is a sensible choice. Virtual machines provide a very stable API. Such a compiler is thus easy to maintain. It is also convenient to use: it can just be added to an existing installation of the development tools. Already compiled libraries can be used directly, with no need to reinstall anything. Finally, some virtual machines are the target of several languages. A bytecode to Javascript compiler would make it possible to retarget all these languages to Web browsers at once.We have listed and resumed the state of each deliverable:
1 | Balat, V. and Chambart, P. and Henry, G. Client-server Web applications with Ocsigenhttp://hal.archives-ouvertes.fr/hal-00691710WWW2012 dev track proceedingsLyon, FranceApr 201259. |
2 | Berry, G. and Nicolas, C. and Serrano, M. HipHop: A Synchronous Reactive Extension for Hophttp://plastic.host.adobe.com/plastic2.pdfProceedings of the PLASTIC'11 workshopPortland, USAOct 2011. |
3 | Boudol, G. et al.Towards Reasoning for Web Applications: an Operational Semantics for HopProceedings of the first Workshop on Analysis and Programming Languages for Web Applications and Cloud ApplicationsToronto, CanadaJun 2010. |
4 | Boudol, G. et al.Reasoning about Web Applications: An Operational Semantics for HOPhttp://www.inria.fr/mimosa/Manuel.Serrano/publi/blrs-toplas12.pdfACM Transactions on Programming Languages and Systems (TOPLAS)342New York, NY, USA 2012. |
5 | Canou, B. Programmation Web TypéeUniversité Pierre et Marie Curie (UPMC - Paris 6)Oct 2011. |
6 | Canou, B. and Chailloux, E. and Vouillon, J. How to Run your Favorite Language in Web Browsershttp://hal.archives-ouvertes.fr/hal-00694031WWW2012 dev track proceedingsLyon, FranceApr 2012-. |
7 | Chailloux, E. and Serpette, P. B. Séparation des couleurs dans un lambda-calcul bichromehttp://hal.inria.fr/hal-00665958JFLA - Journées Francophones des Langages Applicatifs - 2012Carnac, FranceFeb 2012. |
8 | Henry, G. Typer la sérialisation sans sérialiser les typesUniversité Paris Diderot - Paris 7 2011. |
9 | Luo, Z. and Rezk, T. and Serrano, M. Automated Code Injection Prevention for Web ApplicationsProceedings of the first Conference on Theory of Security and Applications (TOSCA'11)Lecture Notes on Computer Science6993Saarbrücken, GermanyApr 2011186--204. |
10 | Serpette, B. and Serrano, M. An Interpreter for Server-Side Hophttp://www.inria.fr/mimosa/Manuel.Serrano/publi/ss-dls11.pdfProceedings of the DLS'11 symposiumPortland, USAOct 2011. |
11 | Serrano, M. HSS: a Compiler for Cascading Style Sheets10th ACM Sigplan Int'l Conference on Principles and Practice of Declarative Programming (PPDP)Jul 2010. |
12 | Serrano, M. HopTeX - Compiling HTML to LaTeX with CSShttp://www.inria.fr/mimosa/Manuel.Serrano/publi/serrano-scheme11a.pdfProceedings of the Scheme'11 workshopPortland, USAOct 2011. |
13 | Serrano, M. and Berry, G. Multitier Programming in Hop - A first step toward programming 21st-century applicationshttp://cacm.acm.org/magazines/2012/8/153796-multitier-programming-in-hop/abstractCommunications of the ACM558Aug 201253--59. |
14 | Serrano, M. and Queinnec, C. A multi-tier semantics for HopHigher Order and Symbolic Computation 2010. |
15 | Serrano, M. and Queinnec, C. HTML5 Video portable avec Hophttp://www.programmez.comGnu Linux Magazine France129Jan 2010. |