Distributed functional reactive programming on actor-based runtime

Reactive programming over a network is a challenging task because efficient elimination of temporary violations of data flow invariants, known as glitches, in a distributed setting is still an open issue. In this paper, we propose a method for constructing a distributed reactive programming system of which runtime guarantees the properties of single source glitch-freedom and the robustness against out-of-order messages. Based on the method, we developed a purely functional reactive programming language XFRP whose compiler produces Erlang code. Using some examples, we show that the proposed method is beneficial for constructing distributed reactive applications without suffering from inconsistencies.

[1]  Patrick Eugster,et al.  REBLS'14: 2014 Workshop Reactive and Event-based Languages & Systems (Post Conf. Workshop Summary) , 2014, SPLASH '14.

[2]  Shriram Krishnamurthi,et al.  Flapjax: a programming language for Ajax applications , 2009, OOPSLA 2009.

[3]  Joeri De Koster,et al.  Tackling the awkward squad for reactive programming: the actor-reactor model , 2017, REBLS@SPLASH.

[4]  Takuo Watanabe,et al.  Emfrp: a functional reactive programming language for small-scale embedded systems , 2016, MODULARITY.

[5]  Shriram Krishnamurthi,et al.  Embedding Dynamic Dataflow in a Call-by-Value Language , 2006, ESOP.

[6]  Wolfgang De Meuter,et al.  Handling partial failures in distributed reactive programming , 2017, REBLS@SPLASH.

[7]  Bernd Freisleben,et al.  Fault-tolerant Distributed Reactive Programming , 2018, ECOOP.

[8]  Wolfgang De Meuter,et al.  A survey on reactive programming , 2013, CSUR.

[9]  Alberto Leon-Garcia,et al.  Communication Networks: Fundamental Concepts and Key Architectures , 1999 .

[10]  Carlos Baquero,et al.  Quality-Aware Reactive Programming for the Internet of Things , 2017, FSEN.

[11]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[12]  Martin Odersky,et al.  Deprecating the Observer Pattern with Scala.React , 2012 .

[13]  Martin Odersky,et al.  Deprecating the Observer Pattern with Scala , 2012 .

[14]  Carmen Torres Lopez,et al.  Towards Advanced Debugging Support for Actor Languages Studying Concurrency Bugs in Actor-based Programs , 2016 .

[15]  Takuo Watanabe A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale Embedded Systems , 2018, COP@ECOOP.

[16]  Guido Salvaneschi,et al.  We have a DREAM: distributed reactive programming with consistency guarantees , 2014, DEBS '14.

[17]  Stephen Chong,et al.  Asynchronous functional reactive programming for GUIs , 2013, PLDI.

[18]  Philippe Dobbelaere,et al.  Kafka versus RabbitMQ: A comparative study of two industry reference publish/subscribe implementations: Industry Paper , 2017, DEBS.

[19]  Wolfgang De Meuter,et al.  Loosely-Coupled Distributed Reactive Programming in Mobile Ad Hoc Networks , 2010, TOOLS.

[20]  Guido Salvaneschi,et al.  On the Semantics of Distributed Reactive Programming: The Cost of Consistency , 2018, IEEE Transactions on Software Engineering.

[21]  Mira Mezini,et al.  REScala: bridging between object-oriented and functional style in reactive applications , 2014, MODULARITY.

[22]  Mira Mezini,et al.  Distributed REScala: an update algorithm for distributed reactive programming , 2014, OOPSLA 2014.

[23]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[24]  Towards an Integration of the Actor Model in an FRP Language for Small-Scale Embedded Systems , 2016 .