Manuel Serrano
inria > sophia > indes
-- Web Programming







[16]Krishnamurthy, J. and Serrano, M. -- Causality Error Tracing in HipHop.Js -- 23rd International Symposium on Principles and Practice of Declarative Programming (PPDP), New York, NY, USA, 2021, pp. 1--13.
[ https://doi.org/10.1145/3479394.3479408 | pdf ]
HipHop.js is a synchronous reactive DSL for JavaScript built on top of Hop.js. HipHop.js follows the model of perfect synchrony introduced in the Esterel programming language, this may lead to classical causality error cycles, which might be difficult to isolate and to fix. In this work, we discuss in detail the support for debugging causality errors in HipHop.js. First, we provide illustrative examples explaining the origin and formation of causality errors and the difficulties faced in debugging them. Then, we present the techniques and algorithms used to construct precise error messages that direct programmers to the source of errors. We illustrate the effectiveness of the proposed methods on a real world example. Recent reactive technologies and programming languages like FRP, ReactiveX, etc., used in game and GUI development too encounter causality errors, and we feel that our approach used in HipHop.js can help them in debugging in a better way.
[23]Berry, G. and Serrano, M. -- HipHop.js: (A)Synchronous Web Reactive Programming -- Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), London, UK, 2020, pp. 533--545.
[ http://www-sop.inria.fr/members/Manuel.Serrano/publi/bs-pldi20.pdf ]
We present HipHop.js, a synchronous reactive language that adds synchronous concurrency and preemption to Inspired from Esterel, HipHop.js simplifies the programming of non-trivial temporal behaviors as found in complex web interfaces or IoT controllers and the cooperation between synchronous and asynchronous activities. HipHop.js is compiled into plain sequential and executes on unmodified runtime environments. We use three examples to present and discuss HipHop.js: a simple web login form to introduce the language and show how it differs from and two real life examples, a medical prescription pillbox and an interactive music system that show why concurrency and preemption help programming such temporal applications.
[29]Serrano, M. and Prunet, V. -- A Glimpse of Hopjs -- 21th Sigplan Int'l Conference on Functional Programming (ICFP), Nara, Japan, Sep, 2016, pp. 188--200.
[ pdf ]
Hop.js is a multitier programming environment for JavaScript. It allows a single JavaScript program to describe the client-side and the server-side components of a web application. Its runtime environment ensures consistent executions of the application on the server and on the client.

This paper overviews the Hop.js design. It shows the JavaScript extensions that makes it possible to conceive web applications globally. It presents how Hop.js interacts with the outside world. It also briefly presents the Hop.js implementation. It presents the Hop.js web server implementation, the handling of server-side parallelism, and the JavaScript and HTML compilers.
[9]Serrano, M. -- A Multitier Debugger for Web Applications -- Proceedings of the 10th WEBIST conference (WEBIST), Barcelona, Spain, Apr, 2014, pp. 33--47.
[ pdf | html ]
Debugging Web applications is difficult because of their distributed nature but also because of the programming languages and tools commonly used to develop them. Taking benefit of the multitier aspect of the Hop programming language, we have built a new debugger for Web applications that copes with the server-side and the client-side of the executions. Its advantage over most debuggers for the Web is that it reports the full stack trace containing all the server-side and client-side frames that have conducted to an error. An error is reported on its actual position on the source code, wherever it occurs on the server or on the client. To help detecting errors as early as possible, the Hop debugger is accompanied with a debugging execution mode where types are checked before data structures are accessed, argument numbers are verified before functions are called, and array bounds are checked before vectors are accessed. Combining the debugger and the debugging mode makes errors of Web applications easier to understand and easier to localize. Hopefully they also become easier to fix.
[33]Berry, G. and Serrano, M. -- Hop and HipHop : Multitier Web Orchestration -- Proceedings of the ICDCIT 2014 conference, Feb, 2014, pp. 1--13.
[ pdf ]
Rich applications merge classical computing, client-server concurrency, web-based interfaces, and the complex time- and event-based reactive programming found in embedded systems. To handle them, we extend the Hop web programming platform by HipHop, a domain-specific language dedicated to event-based process orchestration. Borrowing the synchronous reactive model of Esterel, HipHop is based on synchronous concurrency and preemption primitives that are known to be key components for the modular design of complex reactive behaviors. HipHop departs from Esterel by its ability to handle the dynamicity of Web applications, thanks to the reflexivity of Hop. Using a music player example, we show how to modularly build a non-trivial Hop application using HipHop orchestration code.
[28]Serrano, M. and Berry, G. -- Multitier Programming in Hop - A first step toward programming 21st-century applications -- Communications of the ACM (CACM), 55(8), Aug, 2012, pp. 53--59.
[ http://cacm.acm.org/magazines/2012/8/153796-multitier-programming-in-hop/abstract ]
[12]Boudol, G. et al. -- Reasoning about Web Applications: An Operational Semantics for HOP -- ACM Transactions on Programming Languages and Systems (TOPLAS), 34(2), New York, NY, USA, 2012, pp. 1--40.
[ pdf ]
[44]Serrano, M. and Queinnec, C. -- A multi-tier semantics for Hop -- Higher Order and Symbolic Computation (HOSC), 23(4), 2012, pp. 409-431.
Hop is a multi-tier programming language where a single program specifies servers and clients behaviors altogether. 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.This paper 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 nature of the web where the server elaborates some JavaScript code to be run in the client's browser. This new client-code dynamically requests services from the server which, again, elaborate new JavaScript 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 web continuations and concurrency.
[27]Luo, Z. and Rezk, T. and Serrano, M. -- Automated Code Injection Prevention for Web Applications -- Proceedings of the first Conference on Theory of Security and Applications (TOSCA), Lecture Notes on Computer Science, Saarbrücken, Germany, Apr, 2011, pp. 186--204.
[ pdf ]
[73]Serrano, M. -- HSS: a Compiler for Cascading Style Sheets -- 12th Sigplan Int'l Conference on Principles and Practice of Declarative Programming (PPDP), Hagenberg, Austria, Jul, 2010, pp. 109--118.
[ pdf ]
This article 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.
[72]Boudol, G. et al. -- Towards Reasoning for Web Applications: an Operational Semantics for Hop -- Proceedings of the first Workshop on Analysis and Programming Languages for Web Applications and Cloud Applications (APLWACA), Toronto, Canada, Jun, 2010, pp. 3-14.
[ pdf ]
We propose 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.
[76]Serrano, M. and Queinnec, C. -- HTML5 Video portable avec Hop -- Jan, 2010.
[11]Serrano, M. -- HOP, a Fast Server for the Diffuse Web -- proceedings of the 11th international conference on Coordination Models and Languages (COORDINATION) (invited paper), Lisbon, Portugal, Jun, 2009, pp. 1--26.
[ pdf ]
The diffuse Web is an alternative way of using the Web 2.0 infrastructure for building personal diffuse applications. Systems that let users tune the temperature of their house with a cell-phone, check that the shutters are closed with a PDA, or select the music to be played on a Hi-Fi system with a PC are examples of the targeted applications.Diffuse Web applications have similarities with Web 2.0 applications: they rely on fast bi-directional interactions between servers and clients, and they make extensive use of non-cachable dynamic contents. On the other hand, diffuse applications have also an important difference with respect to traditional Web applications: they generally do not need to deal with a huge number of simultaneous users. That is, diffuse Web applications are built on top of standard technologies but they use it differently. Therefore they demand different optimizations and tunings.HOP (http://hop.inria.fr) is a platform designed for building and running diffuse Web applications. Its software development kit contains two compilers, one interpreter, and a bootstrapped Web server. That is, the HOP Web server is implemented in HOP. This paper shows that this implementation strategy allows HOP to dramatically outperform the popular mainstream Web servers for delivering dynamic contents. Contrary to most servers, HOP delivers static and dynamic contents at a comparable pace. The paper details the implementation of the HOP Web server.
[48]Serrano, M. -- Anatomy of a Ubiquitous Media Center -- Proceedings of the Sixteenth Annual Multimedia Computing and Networking (MMCN'09), San Jose, CA, USA, Jan, 2009.
[ pdf ]
The Web is such a rich architecture that it is giving birth to new applications that were unconceivable only few years ago in the past. Developing these applications being different from developing traditional applications, generalist programming languages are not well suited. To help face this problem, we have conceived the HOP programming language whose syntax and semantics are specially crafted for programming Web applications. In order to demonstrate that HOP, and its SDK, can be used for implementing realistic applications, we have started to develop new innovative applications that extensively rely on the infrastructure offered by the Web and that use features unique to HOP. We have initiated this effort with a focus on multimedia applications.

Using HOP we have implemented a distributed audio system. It supports a flexible architecture that allows new devices to catch up with the application any time: a cell phone can be used to pump up the volume, a PDA can be used to browse over the available musical resources, a laptop can be used to select the output speakers, etc. This application is intrinsically complex to program because, i- it is distributed (several different devices access and control shared resources such a music repositories and sound card controllers), ii- it is dynamic (new devices may join or quit the application at any time), and iii- it involves different heterogeneous devices with different hardware architectures and different capabilities.
[39]Serrano, M. and Queinnec, C. -- Une galerie de photos sur le Web avec HOP -- Feb, 2008.
[ http://www.programmez.com ]
[40]Serrano, M. and Queinnec, C. -- Hop, un langage de programmation pour le Web -- Jan, 2008.
[ http://www.programmez.com ]
[69]Loitsch, F. and Serrano, M. -- Hop Client-Side Compilation -- Seton Hall University, Intellect Bristol, UK/Chicago, USA, 2008, pp. 141--158.
[3]Serrano, M. -- Programming Web Multimedia Applications with Hop (short companion paper to the award) -- Proceedings of the ACM Sigmm and ACM Siggraph conference on Multimedia, Best Open Source Software, Augsburg, Germany, Sep, 2007, pp. 1001-1004.
[ pdf ]
Hop is a new execution platform for running interactive and multimedia applications on the Web. It is aimed at executing applications such as Web agendas, Web galleries, Web music players, etc. Hop consists of: i) a new programming language specially designed for addressing the distributed aspects of Web programming, ii) a rich set of libraries for dealing with music files, sounds, pictures, photographs, etc., iii) a full-fledged Web server for executing the server-side components of the applications.

In this paper we illustrate Hop's skills for programming multimedia applications in two examples. We show that, with 50 lines of code, an operational photograph gallery can be implemented and we show that with approximatively 30 lines of code an operational podcast receiver can be built.

[64]Serrano, M. -- The HOP platform -- proceedings of the International Lisp Conference'07 (invited presentation), Cambridge, UK, Jun, 2007.
[71]Loitsch, F. and Serrano, M. -- Hop Client-Side Compilation -- Proceedings of the 8th Symposium on Trends on Functional Languages, New York, USA, Apr, 2007.
[ http://cs.shu.edu/tfp2007/draftProcDocument.pdf | pdf ]
HOP is a new language for programming interactive Web applications. It aims to replace HTML, JavaScript, and server-side scripting languages (such as PHP, JSP, ...) with a unique language that unites client-side interactions and server-side computations. A HOP execution platform is made of two compilers. One that compiles the code executed by the server, and one that compiles the code executed by the client. T his paper presents the latter. In order to ensure compatibility of HOP graphical user interfaces with popular plain Web browsers, the client-side HOP compiler has to generate regular HTML and JavaScript code. Since the HOP language is built on top of the Scheme programming language, compiling HOP to JavaScript is nearly equivalent to compiling Scheme to JavaScript. The compiler we have designed supports the whole Scheme core language. In particular it optimizes tail-recursive calls. We show in this paper that this compiler is efficient because with optimizations for obvious tail recursive calls the generated code runs roughly at the same speed as equivalent hand-written JavaScript code. With support for all tail calls the generated code typically runs at most 2.1 times slower than without. The techniques presented in this paper can be applied to most strict functional languages such as ML and Lisp.
[8]Serrano, M. and Gallesio, E. and Loitsch, F. -- HOP, a language for programming the Web 2.0 -- Proceedings of the First Dynamic Languages Symposium (DLS), Portland, Oregon, USA, Oct, 2006, pp. 975--985.
[ pdf | html ]
Hop is a new higher-order language designed for programming interactive web applications such as web agendas, web galleries, music players, etc. It exposes a programming model based on two computation levels. The first one is in charge of executing the logic of an application while the second one is in charge of executing the graphical user interface. Hop separates the logic and the graphical user interface but it packages them together and it supports strong collaboration between the two engines. The two execution flows communicate through function calls and event loops. Both ends can initiate communications. The paper presents the main constructions of Hop. It sketches its implementation and it presents an example of a simple web application written in Hop.
[50]Serrano, M. -- The HOP Development Kit -- proceedings of the Seventh ACM sigplan Workshop on Scheme and Functional Programming (invited paper), Portland, Oregon, USA, Sep, 2006.
[ pdf | html ]
Hop, is a language dedicated to programming reactive and dynamic applications on the web. It is meant for programming applications such as web agendas, web galleries, web mail clients, etc. While a previous paper (Hop, a Language for Programming the Web 2.0, available at http://hop.inria.fr) focused on the linguistic novelties brought by Hop, the present one focuses on its execution environment. That is, it presents Hop's user libraries, its extensions to the HTML-based standards, and its execution platform, the Hop web broker.

This Html page has been produced by Skribe.
Last update Mon Sep 30 16:36:16 2024.