skip to main content
research-article
Open Access

A fault-tolerant programming model for distributed interactive applications

Published:10 October 2019Publication History
Skip Abstract Section

Abstract

Ubiquitous connectivity of web, mobile, and IoT computing platforms has fostered a variety of distributed applications with decentralized state. These applications execute across multiple devices with varying reliability and connectivity. Unfortunately, there is no declarative fault-tolerant programming model for distributed interactive applications with an inherently decentralized system model.

We present a novel approach to automating fault tolerance using high-level programming abstractions tailored to the needs of distributed interactive applications. Specifically, we propose a calculus that enables formal reasoning about applications' dataflow within and across individual devices. Our calculus reinterprets the functional reactive programming model to seamlessly integrate its automated state change propagation with automated crash recovery of device-local dataflow and disconnection-tolerant distribution with guaranteed automated eventual consistency semantics based on conflict-free replicated datatypes. As a result, programmers are relieved of handling intricate details of distributing change propagation and coping with distribution failures in the presence of interactivity. We also provides proofs of our claims, an implementation of our calculus, and an empirical evaluation using a common interactive application.

Skip Supplemental Material Section

Supplemental Material

a144-mogk

Presentation at OOPSLA '19

References

  1. Gul Agha. 1986. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge, MA, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Akka. 2019a. Distributed Data Clusters. https://doc.akka.io/docs/akka/current/distributed- data.html .Google ScholarGoogle Scholar
  3. Akka. 2019b. Documentation. http://akka.io/docs .Google ScholarGoogle Scholar
  4. Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl, Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias J. Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas, and Daniel Warneke. 2014. The Stratosphere platform for big data analytics. The VLDB Journal 23, 6 (01 Dec 2014), 939–964. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Paulo Sérgio Almeida, Ali Shoker, and Carlos Baquero. 2018. Delta state replicated data types. J. Parallel and Distrib. Comput. 111 (2018), 162 – 173. Google ScholarGoogle Scholar
  6. Joe Armstrong. 2010. Erlang. Commun. ACM (Sept. 2010). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Robert Atkey. 2017. Observed Communication Semantics for Classical Processes. In Programming Languages and Systems, Hongseok Yang (Ed.). Springer, Berlin, Heidelberg, 56–82.Google ScholarGoogle Scholar
  8. Hagit Attiya, Alexey Gotsman, Sandeep Hans, and Noam Rinetzky. 2013. A Programming Language Perspective on Transactional Memory Consistency. In Proceedings of the 2013 ACM Symposium on Principles of Distributed Computing (PODC ’13). ACM, New York, NY, USA, 309–318. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Bernstein, Sergey Bykov, Alan Geller, Gabriel Kliot, and Jorgen Thelin. 2014. Orleans: Distributed Virtual Actors for Programmability and Scalability. Technical Report. (MSR-TR-2014-41, 24). http://aka.ms/YkyqftGoogle ScholarGoogle Scholar
  10. Philip A. Bernstein, Sebastian Burckhardt, Sergey Bykov, Natacha Crooks, Jose M. Faleiro, Gabriel Kliot, Alok Kumbhare, Muntasir Raihan Rahman, Vivek Shah, Adriana Szekeres, and Jorgen Thelin. 2017. Geo-distribution of Actor-based Services. Proc. ACM Program. Lang. 1, OOPSLA, Article 107 (Oct. 2017), 26 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Gérard Berry and Georges Gonthier. 1992. The Esterel Synchronous Programming Language: Design, Semantics, Implementation. Sci. Comput. Program. 19, 2 (Nov. 1992). Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Oliver Bračevac, Sebastian Erdweg, Guido Salvaneschi, and Mira Mezini. 2016. CPL: A Core Language for Cloud Computing. In Proceedings of the 15th International Conference on Modularity (MODULARITY 2016). ACM, New York, NY, USA, 94–105. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sebastian Burckhardt and Tim Coppieters. 2018. Reactive Caching for Composed Services: Polling at the Speed of Push. Proc. ACM Program. Lang. 2, OOPSLA, Article 152 (Oct. 2018), 28 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Sebastian Burckhardt, Manuel Fähndrich, Daan Leijen, and Benjamin P. Wood. 2012. Cloud Types for Eventual Consistency. In ECOOP 2012 – Object-Oriented Programming, James Noble (Ed.). Springer, Berlin, Heidelberg, 283–307. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Sebastian Burckhardt, Daan Leijen, Jonathan Protzenko, and Manuel Fähndrich. 2015. Global Sequence Protocol: A Robust Abstraction for Replicated Shared State. In 29th European Conference on Object-Oriented Programming (ECOOP 2015) (Leibniz International Proceedings in Informatics (LIPIcs)), John Tang Boyland (Ed.), Vol. 37. Schloss Dagstuhl–LeibnizZentrum fuer Informatik, Dagstuhl, Germany, 568–590. Google ScholarGoogle ScholarCross RefCross Ref
  16. Luís Caires and Jorge A. Pérez. 2017. Linearity, Control Effects, and Behavioral Types. In Programming Languages and Systems, Hongseok Yang (Ed.). Springer, Berlin, Heidelberg, 229–259. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Paris Carbone, Gyula Fóra, Stephan Ewen, Seif Haridi, and Kostas Tzoumas. 2015. Lightweight Asynchronous Snapshots for Distributed Dataflows. CoRR abs/1506.08603 (2015). arXiv: 1506.08603 http://arxiv.org/abs/1506.08603Google ScholarGoogle Scholar
  18. Luca Cardelli and Andrew D. Gordon. 1999. Types for Mobile Ambients. In Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’99). ACM, New York, NY, USA, 79–92. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Craig Chambers, Ashish Raniwala, Frances Perry, Stephen Adams, Robert R. Henry, Robert Bradshaw, and Nathan Weizenbaum. 2010. FlumeJava: Easy, Efficient Data-parallel Pipelines. In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’10). ACM, New York, NY, USA, 363–375. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Neil Conway, William R. Marczak, Peter Alvaro, Joseph M. Hellerstein, and David Maier. 2012. Logic and Lattices for Distributed Programming. In Proceedings of the Third ACM Symposium on Cloud Computing (SoCC ’12). ACM, New York, NY, USA, Article 1, 14 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Gregory H. Cooper and Shriram Krishnamurthi. 2006. Embedding Dynamic Dataflow in a Call-by-value Language. In Proceedings of the 15th European Conference on Programming Languages and Systems (ESOP’06). Springer-Verlag, Berlin, Heidelberg, 294–308. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Evan Czaplicki and Stephen Chong. 2013. Asynchronous Functional Reactive Programming for GUIs. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’13). ACM, New York, NY, USA, 411–422. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Ugo Dal Lago, Marc de Visme, Damiano Mazza, and Akira Yoshimizu. 2019. Intersection Types and Runtime Errors in the Pi-calculus. Proc. ACM Program. Lang. 3, POPL, Article 7 (Jan. 2019), 29 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified Data Processing on Large Clusters. Commun. ACM 51, 1 (Jan. 2008), 107–113. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Joscha Drechsler, Ragnar Mogk, Guido Salvaneschi, and Mira Mezini. 2018. Thread-safe Reactive Programming. Proc. ACM Program. Lang. 2, OOPSLA, Article 107 (Oct. 2018), 30 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Joscha Drechsler, Guido Salvaneschi, Ragnar Mogk, and Mira Mezini. 2014. Distributed REScala: An Update Algorithm for Distributed Reactive Programming. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’14). ACM, New York, NY, USA, 361–376. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Jan Dzik, Nick Palladinos, Konstantinos Rontogiannis, Eirik Tsarpalis, and Nikolaos Vathis. 2013. MBrace: Cloud Computing with Monads. Proceedings of the Seventh Workshop on Programming Languages and Operating Systems (2013). Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Conal Elliott and Paul Hudak. 1997. Functional Reactive Animation. In Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming (ICFP ’97). ACM, New York, NY, USA, 263–273. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. V. Enes, P. S. Almeida, C. Baquero, and J. Leitão. 2019. Efficient Synchronization of State-Based CRDTs. In 2019 IEEE 35th International Conference on Data Engineering (ICDE). 148–159. Google ScholarGoogle ScholarCross RefCross Ref
  30. Matthias Felleisen and Robert Hieb. 1992. The Revised Report on the Syntactic Theories of Sequential Control and State. Theor. Comput. Sci. 103, 2 (Sept. 1992), 235–271. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Ivana Filipović, Peter O’Hearn, Noam Rinetzky, and Hongseok Yang. 2010. Abstraction for concurrent objects. Theoretical Computer Science 411, 51 (2010), 4379 – 4398. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Spencer P. Florence, Shu-Hung You, Jesse A. Tov, and Robert Bruce Findler. 2019. A Calculus for Esterel: If Can, Can. If No Can, No Can. Proc. ACM Program. Lang. 3, POPL, Article 61 (Jan. 2019), 29 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Cédric Fournet and Georges Gonthier. 1996. The Reflexive CHAM and the Join-calculus. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’96). ACM, New York, NY, USA, 372–385. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Seth Gilbert and Nancy Lynch. 2002. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-tolerant Web Services. ACM SIGACT News 33, 2 (June 2002). Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Jonathan Goldstein, Ahmed Abdelhamid, Mike Barnett, Sebastian Burckhardt, Badrish Chandramouli, Darren Gehring, Niel Lebeck, Umar Farooq Minhas, Ryan Newton, Rahee Ghosh Peshawaria, Tal Zaccai, and Irene Zhang. 2018. A.M.B.R.O.S.I.A: Providing Performant Virtual Resiliency for Distributed Applications. Technical Report. https://www.microsoft.com/enus/research/publication/a- m- b- r- o- s- i- a- providing- performant- virtual- resiliency- for- distributed- applications/Google ScholarGoogle Scholar
  36. Alexey Gotsman and Sebastian Burckhardt. 2017. Consistency Models with Global Operation Sequencing and their Composition. In 31st International Symposium on Distributed Computing (DISC 2017) (Leibniz International Proceedings in Informatics (LIPIcs)), Andréa W. Richa (Ed.), Vol. 91. Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 23:1–23:16. Google ScholarGoogle ScholarCross RefCross Ref
  37. Philipp Haller, Heather Miller, and Normen Mueller. 2018. A programming model and foundation for lineage-based distributed computation. Journal of Functional Programming 28 (2018), e7. Google ScholarGoogle ScholarCross RefCross Ref
  38. Joseph M. Hellerstein. 2010. The Declarative Imperative: Experiences and Conjectures in Distributed Logic. SIGMOD Rec. 39, 1 (Sept. 2010), 5–19. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Joseph M. Hellerstein and Peter Alvaro. 2019. Keeping CALM: When Distributed Consistency is Easy. CoRR abs/1901.01930 (2019). arXiv: 1901.01930 http://arxiv.org/abs/1901.01930Google ScholarGoogle Scholar
  40. C. A. R. Hoare. 1978. Communicating Sequential Processes. Commun. ACM 21, 8 (Aug. 1978), 666–677. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. William A Howard. 1980. The formulae-as-types notion of construction.Google ScholarGoogle Scholar
  42. Michael Isard and Yuan Yu. 2009. Distributed Data-parallel Computing Using a High-level Programming Language. In Proceedings of the 2009 ACM SIGMOD International Conference on Management of Data (SIGMOD ’09). ACM, New York, NY, USA, 987–994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Radha Jagadeesan and James Riely. 2018. Eventual Consistency for CRDTs. In Programming Languages and Systems, Amal Ahmed (Ed.). Springer International Publishing, Cham, 968–995. Google ScholarGoogle ScholarCross RefCross Ref
  44. Y. Jarraya, A. Eghtesadi, M. Debbabi, Y. Zhang, and M. Pourzandi. 2012. Cloud calculus: Security verification in elastic cloud computing platform. In 2012 International Conference on Collaboration Technologies and Systems (CTS). 447–454. Google ScholarGoogle ScholarCross RefCross Ref
  45. Alan Jeffrey. 2013a. Causality for Free!: Parametricity Implies Causality for Functional Reactive Programs. In Proceedings of the 7th Workshop on Programming Languages Meets Program Verification (PLPV ’13). ACM, New York, NY, USA, 57–68. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Alan Jeffrey. 2013b. Functional Reactive Programming with Liveness Guarantees. In Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming (ICFP ’13). ACM, New York, NY, USA, 233–244. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Alan Jeffrey. 2014. Functional Reactive Types. In Proceedings of the Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS) (CSL-LICS ’14). ACM, New York, NY, USA, Article 54, 9 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Tetsuo Kamina and Tomoyuki Aotani. 2018. Harmonizing Signals and Events with a Lightweight Extension to Java. Programming Journal 2, 3 (2018), 5.Google ScholarGoogle ScholarCross RefCross Ref
  49. Rajesh K. Karmani and Gul Agha. 2011. Actors. In Encyclopedia of Parallel Computing. Google ScholarGoogle ScholarCross RefCross Ref
  50. Martin Kleppmann, Adam Wiggins, Peter van Hardenberg, and Mark McGranaghan. 2019. Local-first software: You own your data, in spite of the cloud. Web Publication. Ink & Switch. https://www.inkandswitch.com/local- first.htmlGoogle ScholarGoogle Scholar
  51. Jay Kreps, Neha Narkhede, and Jun Rao. 2011. Kafka: A distributed messaging system for log processing. In Proceedings of 6th International Workshop on Networking Meets Databases (NetDB), Athens, Greece.Google ScholarGoogle Scholar
  52. Lindsey Kuper and Ryan R. Newton. 2013. LVars: Lattice-based Data Structures for Deterministic Parallelism. In Proceedings of the 2Nd ACM SIGPLAN Workshop on Functional High-performance Computing (FHPC ’13). ACM, New York, NY, USA, 71–84. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Lindsey Kuper and Ryan R. Newton. 2014. Joining Forces Toward a Unified Account of LVars and Convergent Replicated Data Types. WoDet (2014).Google ScholarGoogle Scholar
  54. Ralf Lämmel. 2008. Google’s MapReduce programming model — Revisited. Science of Computer Programming 70, 1 (2008), 1 – 30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. P. J. Landin. 1966. The Next 700 Programming Languages. Commun. ACM 9, 3 (March 1966), 157–166. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Alessandro Margara and Guido Salvaneschi. 2014. We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees. In Proceedings of the 8th ACM International Conference on Distributed Event-Based Systems (DEBS ’14). ACM, New York, NY, USA, 142–153. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Alexandro Margara and Guido Salvaneschi. 2018. On the Semantics of Distributed Reactive Programming: The Cost of Consistency. IEEE Transactions on Software Engineering 44, 7 (July 2018), 689–711. Google ScholarGoogle ScholarCross RefCross Ref
  58. Christopher Meiklejohn and Peter Van Roy. 2015a. The Implementation and Use of a Generic Dataflow Behaviour in Erlang. In Proceedings of the 14th ACM SIGPLAN Workshop on Erlang (Erlang 2015). ACM, New York, NY, USA, 39–45. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Christopher Meiklejohn and Peter Van Roy. 2015b. Lasp: A Language for Distributed, Coordination-free Programming. In Proceedings of the 17th International Symposium on Principles and Practice of Declarative Programming (PPDP ’15). ACM, New York, NY, USA, 184–195. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Christopher S. Meiklejohn. 2017. On the Design of Distributed Programming Models. In Proceedings of the Programming Models and Languages for Distributed Computing (PMLDC ’17). ACM, New York, NY, USA, Article 1, 6 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Heather Miller, Philipp Haller, Normen Müller, and Jocelyn Boullier. 2016. Function Passing: A Model for Typed, Distributed Functional Programming. In Proceedings of the ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!). Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Mark S. Miller, E. Dean Tribble, and Jonathan Shapiro. 2005. Concurrency Among Strangers. In Proc. Int. Symp. on Trustworthy Global Computing. Google ScholarGoogle ScholarCross RefCross Ref
  63. R. Milner. 1982. A Calculus of Communicating Systems. Springer-Verlag, Berlin, Heidelberg.Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Robin Milner, Joachim Parrow, and David Walker. 1992. A Calculus of Mobile Processes, I. Inf. Comput. 100, 1 (Sept. 1992), 1–40. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Ragnar Mogk, Lars Baumgärtner, Guido Salvaneschi, Bernd Freisleben, and Mira Mezini. 2018. Fault-tolerant Distributed Reactive Programming. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018) (Leibniz International Proceedings in Informatics (LIPIcs)), Todd Millstein (Ed.), Vol. 109. Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 1:1–1:26. Google ScholarGoogle ScholarCross RefCross Ref
  66. Florian Myter, Tim Coppieters, Christophe Scholliers, and Wolfgang De Meuter. 2016. I Now Pronounce You Reactive and Consistent: Handling Distributed and Replicated State in Reactive Programming. In Proceedings of the 3rd International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2016). ACM, New York, NY, USA, 1–8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Florian Myter, Christophe Scholliers, and Wolfgang De Meuter. 2018. A CAPable Distributed Programming Model. In Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward! 2018). ACM, New York, NY, USA, 88–98. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Christopher Olston, Benjamin Reed, Utkarsh Srivastava, Ravi Kumar, and Andrew Tomkins. 2008. Pig Latin: A Not-so-foreign Language for Data Processing. In Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data (SIGMOD ’08). ACM, New York, NY, USA, 1099–1110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging Between Object-oriented and Functional Style in Reactive Applications. In Proceedings of the 13th International Conference on Modularity (MODULARITY ’14). ACM, New York, NY, USA, 25–36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Guido Salvaneschi, Sebastian Proksch, Sven Amann, Sarah Nadi, and Mira Mezini. 2017. On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study. IEEE Trans. Softw. Eng. 43, 12 (Dec. 2017), 1125–1143. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Marc Shapiro, Annette Bieniusa, Nuno M. Preguiça, Valter Balegas, and Christopher Meiklejohn. 2018. Just-Right Consistency: reconciling availability and safety. CoRR abs/1801.06340 (2018). arXiv: 1801.06340 http://arxiv.org/abs/1801.06340Google ScholarGoogle Scholar
  72. Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. 2011a. A comprehensive study of Convergent and Commutative Replicated Data Types. Research Report RR-7506. Inria – Centre Paris-Rocquencourt ; INRIA. 50 pages. https://hal.inria.fr/inria- 00555588Google ScholarGoogle Scholar
  73. Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. 2011b. Conflict-Free Replicated Data Types. In Stabilization, Safety, and Security of Distributed Systems, Xavier Défago, Franck Petit, and Vincent Villain (Eds.). Springer, Berlin, Heidelberg, 386–400. Google ScholarGoogle Scholar
  74. Klaus v. Gleissenthall, Rami Gökhan Kıcı, Alexander Bakst, Deian Stefan, and Ranjit Jhala. 2019. Pretend Synchrony: Synchronous Verification of Asynchronous Distributed Programs. Proc. ACM Program. Lang. 3, POPL, Article 59 (Jan. 2019), 30 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Tom Van Cutsem, Elisa Gonzalez Boix, Christophe Scholliers, Andoni Lombide Carreton, Dries Harnie, Kevin Pinte, and Wolfgang De Meuter. 2014. AmbientTalk: Programming Responsive Mobile Peer-to-peer Applications with Actors. Computer Languages, Systems & Structures 40, 3-4 (Oct. 2014). Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. Malte Viering, Tzu-Chun Chen, Patrick Eugster, Raymond Hu, and Lukasz Ziarek. 2018. A Typing Discipline for Statically Verified Crash Failure Handling in Distributed Systems. In Programming Languages and Systems, Amal Ahmed (Ed.). Springer International Publishing, Cham, 799–826. Google ScholarGoogle ScholarCross RefCross Ref
  77. Chao Wang, Constantin Enea, Suha Orhun Mutluergil, and Gustavo Petri. 2019. Replication-aware Linearizability. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2019). ACM, New York, NY, USA, 980–993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Pascal Weisenburger, Mirko Köhler, and Guido Salvaneschi. 2018. Distributed System Development with ScalaLoci. Proc. ACM Program. Lang. 2, OOPSLA, Article 129 (Oct. 2018), 30 pages. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. W. Yu, F. Liang, X. He, W. G. Hatcher, C. Lu, J. Lin, and X. Yang. 2018. A Survey on the Edge Computing for the Internet of Things. IEEE Access 6 (2018), 6900–6919. Google ScholarGoogle ScholarCross RefCross Ref
  80. Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael J. Franklin, Scott Shenker, and Ion Stoica. 2012. Resilient Distributed Datasets: A Fault-tolerant Abstraction for In-memory Cluster Computing. In Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation (NSDI). https://www.usenix.org/system/files/conference/nsdi12/nsdi12- final138.pdfGoogle ScholarGoogle Scholar
  81. Irene Zhang, Adriana Szekeres, Dana Van Aken, Isaac Ackerman, Steven D. Gribble, Arvind Krishnamurthy, and Henry M. Levy. 2014. Customizable and Extensible Deployment for Mobile/Cloud Applications. In 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI 14). USENIX Association, Broomfield, CO, 97–112. https: //www.usenix.org/conference/osdi14/technical- sessions/presentation/zhangGoogle ScholarGoogle Scholar

Index Terms

  1. A fault-tolerant programming model for distributed interactive applications

        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 Proceedings of the ACM on Programming Languages
          Proceedings of the ACM on Programming Languages  Volume 3, Issue OOPSLA
          October 2019
          2077 pages
          EISSN:2475-1421
          DOI:10.1145/3366395
          Issue’s Table of Contents

          Copyright © 2019 Owner/Author

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 10 October 2019
          Published in pacmpl Volume 3, Issue OOPSLA

          Permissions

          Request permissions about this article.

          Request Permissions

          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!