skip to main content
research-article

Distributed REScala: an update algorithm for distributed reactive programming

Authors Info & Claims
Published:15 October 2014Publication History
Skip Abstract Section

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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. G. Berry and G. Gonthier. The Esterel synchronous programming language: design, semantics, implementation. Science of computer programming, 19(2):87--152, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107--113, Jan. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. E. W. Dijkstra and C. S. Scholten. Termination detection for diffusing computations. Information Processing Letters, 11(1):1--4, 1980.Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. I. Maier and M. Odersky. Deprecating the Observer Pattern with Scala.react. Technical report, EPFL, 2012.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  26. Scala.rx Web site. https://github.com/lihaoyi/scala.rx.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      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
      • 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

      Copyright © 2014 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 15 October 2014

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!