Abstract
Reactive programming improves the design of reactive applications by relocating the logic for managing dependencies between dependent values away from the application logic to the language implementation. Many distributed applications are reactive. Yet, existing change propagation algorithms are not suitable in a distributed setting.
We propose Distributed REScala, a reactive language with a change propagation algorithm that works without centralized knowledge about the topology of the dependency structure among reactive values and avoids unnecessary propagation of changes, while retaining safety guarantees (glitch freedom). Distributed REScala enables distributed reactive programming, bringing the benefits of reactive programming to distributed applications. We demonstrate the enabled design improvements by a case study. We also empirically evaluate the performance of our algorithm in comparison to other algorithms in a simulated distributed setting.
- U. A. Acar, A. Ahmed, and M. Blume. Imperative self-adjusting computation. In Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 309--322, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- U. A. Acar, G. E. Blelloch, and R. Harper. Adaptive functional programming. ACM Transactions on Programming Languages and Systems (TOPLAS), 28(6):990--1034, Nov. 2006. Google Scholar
Digital Library
- E. Bainomugisha, A. L. Carreton, T. v. Cutsem, S. Mostinckx, and W. d. Meuter. A survey on reactive programming. ACM Computing Surveys, 45(4):52:1--52:34, Aug. 2013. Google Scholar
Digital Library
- G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. Science of computer programming, 19(2):87--152, 1992. Google Scholar
Digital Library
- P. Bhatotia, A. Wieder, R. Rodrigues, U. A. Acar, and R. Pasquin. Incoop: MapReduce for incremental computations. In Proceedings of the 2nd ACM Symposium on Cloud Computing, pages 7:1--7:14, New York, NY, USA, 2011. ACM. Google Scholar
Digital Library
- K. Burchett, G. H. Cooper, and S. Krishnamurthi. Lowering: a static optimization technique for transparent functional reactivity. In Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, pages 71--80, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. LUSTRE: a declarative language for real-time programming. In Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, pages 178--188, New York, NY, USA, 1987. ACM. Google Scholar
Digital Library
- G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In Programming Languages and Systems, pages 294--308. Springer, 2006. Google Scholar
Digital Library
- E. Czaplicki and S. Chong. Asynchronous functional reactive programming for GUIs. In Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation, pages 411--422. ACM, 2013. Google Scholar
Digital Library
- J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107--113, Jan. 2008. Google Scholar
Digital Library
- C. Demetrescu, I. Finocchi, and A. Ribichini. Reactive imperative programming with dataflow constraints. In Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, pages 407--426, New York, NY, USA, 2011. ACM. Google Scholar
Digital Library
- E. W. Dijkstra and C. S. Scholten. Termination detection for diffusing computations. Information Processing Letters, 11(1):1--4, 1980.Google Scholar
Cross Ref
- C. Elliott and P. Hudak. Functional reactive animation. In Proceedings of the second ACM SIGPLAN international conference on Functional programming, pages 263--273, New York, NY, USA, 1997. ACM. Google Scholar
Digital Library
- D. Garlan and D. Notkin. Formalizing design spaces: Implicit invocation mechanisms. In Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume I: Conference Contributions - Volume I, pages 31--44, London, UK, 1991. Springer-Verlag. Google Scholar
Digital Library
- T. Gautier, P. Le Guernic, and L. Besnard. SIGNAL: A declarative language for synchronous programming of real-time systems. In Functional programming languages and computer architecture, pages 257--277, London, UK, 1987. Springer-Verlag. Google Scholar
Cross Ref
- A. Jeffrey. Functional reactive programming with liveness guarantees. In Proceedings of the 18th ACM SIGPLAN international conference on Functional programming, pages 233--244, New York, NY, USA, 2013. ACM. Google Scholar
Digital Library
- N. R. Krishnaswami. Higher-order functional reactive programming without spacetime leaks. In Proceedings of the 18th ACM SIGPLAN international conference on Functional programming, pages 221--232, New York, NY, USA, 2013. ACM. Google Scholar
Digital Library
- N. R. Krishnaswami, N. Benton, and J. Hoffmann. Higher-order functional reactive programming in bounded space. In Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 45--58, New York, NY, USA, 2012. ACM. Google Scholar
Digital Library
- A. Lombide Carreton, S. Mostinckx, T. Cutsem, and W. Meuter. Loosely-coupled distributed reactive programming in mobile ad hoc networks. In J. Vitek, editor, TOOLS, volume 6141 of Lecture Notes in Computer Science, pages 41--60. Springer Berlin Heidelberg, 2010. Google Scholar
Digital Library
- B. T. Loo, T. Condie, M. Garofalakis, D. E. Gay, J. M. Hellerstein, P. Maniatis, R. Ramakrishnan, T. Roscoe, and I. Stoica. Declarative networking. Communications of the ACM, 52(11):87--95, 2009. Google Scholar
Digital Library
- I. Maier and M. Odersky. Deprecating the Observer Pattern with Scala.react. Technical report, EPFL, 2012.Google Scholar
- L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: a programming language for Ajax applications. In Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, pages 1--20, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- G. Salvaneschi, J. Drechsler, and M. Mezini. Towards distributed reactive programming. In R. Nicola and C. Julien, editors, Coordination Models and Languages, volume 7890 of Lecture Notes in Computer Science, pages 226--235. Springer Berlin Heidelberg, 2013.Google Scholar
Cross Ref
- G. Salvaneschi, G. Hintz, and M. Mezini. REScala: Bridging between object-oriented and functional style in reactive applications. In Proceedings of the 13th annual international conference on Aspect-oriented software development, New York, NY, USA, 2014. ACM. Google Scholar
Digital Library
- G. Salvaneschi and M. Mezini. Towards reactive programming for object-oriented applications. In S. Chiba, É. Tanter, E. Bodden, S. Maoz, and J. Kienzle, editors, Transactions on Aspect-Oriented Software Development XI, volume 8400 of Lecture Notes in Computer Science, pages 227--261. Springer Berlin Heidelberg, 2014.Google Scholar
Cross Ref
- Scala.rx Web site. https://github.com/lihaoyi/scala.rx.Google Scholar
- B. T. Vander Zanden, R. Halterman, B. A. Myers, R. McDaniel, R. Miller, P. Szekely, D. A. Giuse, and D. Kosbie. Lessons learned about one-way, dataflow constraints in the garnet and amulet graphical toolkits. ACM Transactions on Programming Languages and Systems (TOPLAS), 23(6):776--796, 2001. Google Scholar
Digital Library
Index Terms
Distributed REScala: an update algorithm for distributed reactive programming
Recommendations
Distributed REScala: an update algorithm for distributed reactive programming
OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & ApplicationsReactive programming improves the design of reactive applications by relocating the logic for managing dependencies between dependent values away from the application logic to the language implementation. Many distributed applications are reactive. Yet, ...
Reactive programming experience with REScala
Programming '18: Companion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of ProgrammingReactive programming is a recent programming paradigm that specifically targets reactive applications. Over the years, a number of reactive languages have been proposed, with different combinations of features, and various target domains.
...
REScala: bridging between object-oriented and functional style in reactive applications
MODULARITY '14: Proceedings of the 13th international conference on ModularityTraditionally, object-oriented software adopts the Observer pattern to implement reactive behavior. Its drawbacks are well-documented and two families of alternative approaches have been proposed, extending object-oriented languages with concepts from ...







Comments