Citations

To cite the HipHopSec software, please use the following Biblatex entry.

@software{ HipHop.js
   title = {(A)Sychronous {R}eactive {W}eb {P}rogramming},
   author = {Berry, G{\'e}rard  and Serrano, Manuel},
   year = {2020},
   institution = {Inria},
   url = {http://hop.inria.fr/hiphop}
}

References

Serrano M., Findler R. Dynamic Property Caches, a Step towards Faster JavaScripts Proxy Objects Proceedings of the 29th Compiler Construction Conference (CC'20), San Dieo, USA, feb, 2020
pdf
Inline caches and hidden classes are two essential components for closing the performance gap between static languages such as Java, Scheme, or ML and dynamic languages such as JavaScript or Python. They rely on the observation that for a particular object access located at a particular point of the program, the shapes, usually referred to as the hidden classes, of accessed objects are likely to be the same. Taking benefit of that invariant, they replace the expensive lookup the semantics of these languages normally demand with one test, the inline cache, and a memory read indexed by an offset computed during the last cache miss. These optimizations are essential but they are not general enough to cope with JavaScript's proxies. In particular, when the property name is itself unknown statically, inline cache-based optimizations always take a slow path. In this paper, we show how to generalize inline caches to cope with an unknown property name. The paper first discusses the general principle of the extension and then presents the experimental results we collected using a modified version of the Hop JavaScript compiler, demonstrating how the optimization is crucial for improving the performance of proxy objects (as they naturally use dynamic property names extensively). The evaluation report shows that the modified Hop outperforms all other implementations of the language, including the most efficient commercial ones, by a factor ranging from 2 times to 100 times. Even better, our optimizations are applicable to existing compilers as they require only straightforward changes to runtime data structures; no complex analyses are required.
Florence Spencer Esterel Calculus , Chicago, IL, USA, May, 2020
Berry. G. , Serrano M. HipHop.js: (A)Synchronous Web Reactive Programming Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), London, UK, , 2020
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.