skip to main content
10.1145/2660193.2660240acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Distributed REScala: an update algorithm for distributed reactive programming

Published: 15 October 2014 Publication History

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.

References

[1]
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.
[2]
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.
[3]
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.
[4]
G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. Science of computer programming, 19(2):87--152, 1992.
[5]
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.
[6]
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.
[7]
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.
[8]
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.
[9]
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.
[10]
J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107--113, Jan. 2008.
[11]
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.
[12]
E. W. Dijkstra and C. S. Scholten. Termination detection for diffusing computations. Information Processing Letters, 11(1):1--4, 1980.
[13]
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.
[14]
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.
[15]
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.
[16]
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.
[17]
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.
[18]
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.
[19]
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.
[20]
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.
[21]
I. Maier and M. Odersky. Deprecating the Observer Pattern with Scala.react. Technical report, EPFL, 2012.
[22]
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.
[23]
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.
[24]
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.
[25]
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.
[26]
Scala.rx Web site. https://github.com/lihaoyi/scala.rx.
[27]
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.

Cited By

View all
  • (2024)Following the Writer’s Path to the Dynamically Coalescing Reactive Chains Design PatternAlgorithms10.3390/a1702005617:2(56)Online publication date: 25-Jan-2024
  • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
  • (2023)Developing Distributed Systems with Multiparty Functional Reactive ProgrammingProceedings of the 2023 5th World Symposium on Software Engineering10.1145/3631991.3632000(61-66)Online publication date: 22-Sep-2023
  • Show More Cited By

Index Terms

  1. Distributed REScala: an update algorithm for distributed reactive programming

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications
    October 2014
    946 pages
    ISBN:9781450325851
    DOI:10.1145/2660193
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 49, Issue 10
      OOPSLA '14
      October 2014
      907 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2714064
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 15 October 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. distributed programming
    2. reactive programming
    3. scala

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    SPLASH '14
    Sponsor:

    Acceptance Rates

    OOPSLA '14 Paper Acceptance Rate 52 of 186 submissions, 28%;
    Overall Acceptance Rate 268 of 1,244 submissions, 22%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)28
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 27 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Following the Writer’s Path to the Dynamically Coalescing Reactive Chains Design PatternAlgorithms10.3390/a1702005617:2(56)Online publication date: 25-Jan-2024
    • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
    • (2023)Developing Distributed Systems with Multiparty Functional Reactive ProgrammingProceedings of the 2023 5th World Symposium on Software Engineering10.1145/3631991.3632000(61-66)Online publication date: 22-Sep-2023
    • (2023)Thorium: A Language for Bounded Verification of Dynamic Reactive ObjectsProceedings of the 10th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3623506.3623574(1-13)Online publication date: 19-Oct-2023
    • (2020)Trident: Toward Distributed Reactive SDN Programming With Consistent UpdatesIEEE Journal on Selected Areas in Communications10.1109/JSAC.2020.299965438:7(1322-1334)Online publication date: Jul-2020
    • (2020)ARx: Reactive Programming for Synchronous ConnectorsCoordination Models and Languages10.1007/978-3-030-50029-0_3(39-56)Online publication date: 10-Jun-2020
    • (2019)A fault-tolerant programming model for distributed interactive applicationsProceedings of the ACM on Programming Languages10.1145/33605703:OOPSLA(1-29)Online publication date: 10-Oct-2019
    • (2019)An approach for persistent time-varying valuesProceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3359591.3359730(17-31)Online publication date: 23-Oct-2019
    • (2019)Smart Street Lights and Mobile Citizen Apps for Resilient Communication in a Digital City2019 IEEE Global Humanitarian Technology Conference (GHTC)10.1109/GHTC46095.2019.9033134(1-8)Online publication date: Oct-2019
    • (2019)Issues on Performance of Reactive Programming in the Java Ecosystem with Persistent Data SourcesMan-Machine Interactions 610.1007/978-3-030-31964-9_24(249-258)Online publication date: 22-Sep-2019
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media