Virtual Machine Support for Reactive Programming

Virtual Machine Support for Reactive Programming

Just in time compiler – interpreter optimization

Bachelor Thesis, Master Thesis

Over the last few years, reactive programming (RP) has gained the attention of researchers and practitioners for the potential to express otherwise complex reactive behavior in intuitive and declarative way. Implementations of RP have been proposed in several widespread languages, including Java, Python, Ruby, Javascript and Scala. Recently, concepts inspired by RP have been applied to production frameworks like Microsoft Reactive Extensions (Rx), which received great attention after the success story of the Netflix streaming media provider. Finally, a lot of attention in the frontend developers community is revealed by the increasing number of libraries that implement RP principles, among the others React.js, Bacon.js, Knockout, Meteor and Reactive.coffee.

Performance remains, however, a major limitation of RP. Most RP implementations are based on libraries where the language runtime is agnostic to reactive abstractions. As a result, a number of aspects like change propagation, dependency tracking and memory management that could be specifically optimized can only benefit from general purpose optimization such as those provided by out of the box just in time compilers. Optimization at the virtual machine level has the potential to address these issues.

Research objective
The candidate will design and implement a language runtime for RP based on the Oracle Truffle language optimization systems and Oracle's experimental Graal just in time compiler (https://wiki.openjdk.java.net/display/Graal/Publications+and+Presentations). The goal is to leverage just in time compiler optimization to achieve with RP a performance comparable to the one of the Observer design pattern.

Expected gain of knowledge
The candidate will acquire skills in the development of RP languages, Virtual Machines, just in time compilation, Oracle's Truffle and Graal systems, interpreter optimization. Java programming is a prerequisite for the thesis.

Publications

  • Sirish Chandrasekaran, Owen Cooper, Amol Deshpande, Michael J. Franklin, Joseph M. Hellerstein, Wei Hong, Sailesh Krishnamurthy, Samuel R. Madden, Fred Reiss, and Mehul A. Shah.: Flapjax: A Programming Language for Ajax Applications. ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications, 2009
  • Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, Mario Wolczko: One VM to Rule Them All. In Proceedings of Onward!, ACM Press, 2013.