Hostname: page-component-8448b6f56d-qsmjn Total loading time: 0 Render date: 2024-04-23T14:09:30.477Z Has data issue: false hasContentIssue false

Typed dataspace actors

Published online by Cambridge University Press:  24 August 2020

SAM CALDWELL
Affiliation:
Northeastern University, Boston, MA 02115, USA (e-mails: samc@ccs.neu.edu, tonyg@leastfixedpoint.com, matthias@ccs.neu.edu)
TONY GARNOCK-JONES
Affiliation:
Northeastern University, Boston, MA 02115, USA (e-mails: samc@ccs.neu.edu, tonyg@leastfixedpoint.com, matthias@ccs.neu.edu)
MATTHIAS FELLEISEN
Affiliation:
Northeastern University, Boston, MA 02115, USA (e-mails: samc@ccs.neu.edu, tonyg@leastfixedpoint.com, matthias@ccs.neu.edu)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Actors collaborate via message exchanges to reach a common goal. Experience has shown, however, that pure message-based communication is limiting and forces developers to use design patterns. The recently introduced dataspace actor model borrows ideas from the tuple space realm. It offers a tightly controlled, shared storage facility for groups of actors. In this model, actors assert facts that they wish to share and interests in such assertions. The dataspace notifies interested parties of changes to the set of assertions that they are interested in. Although it is straightforward to add the dataspace model to untyped languages, adding a typed interface is both necessary and challenging. Without restrictions on exchanged data, a faulty actor may propagate erroneous data through a malformed assertion, causing an otherwise well-behaved actor to crash—violating the key principle of failure isolation. A properly designed type system can prevent this scenario and rule out other kinds of uncooperative actors. This paper presents the first structural type system for the dataspace model of actors; it does not address the question of behavioral types for assertion-oriented protocols.

Video Abstract

Type
Research Article
Copyright
© The Author(s), 2020. Published by Cambridge University Press

References

Gigaspaces (2017). Gigaspaces. Accessed October 19, 2017. Available at: https://www.gigaspaces.com.Google Scholar
Javaspaces service specification (2017). Javaspaces service specification, version 2.3. Accessed January 24, 2017. Available at: https://river.apache.org/release-doc/current/specs/html/js-spec.html.Google Scholar
Agha, G. (1986) Actors: A Model of Concurrent Computation in Distributed Systems. Massachusetts: MIT.Google Scholar
Armstrong, J. (1994) Programming Erlang. The Pragmatic Programmers.Google Scholar
Armstrong, J. (2003) Making Reliable Distributed Systems in the Presence of Software Errors. PhD dissertation, Stockholm: Royal Institute of Technology.Google Scholar
Caires, L. & Vieira, H. T. (2009) Conversation types. In ESOP, pp. 285300.CrossRefGoogle Scholar
Carriero, N. J., Gelernter, D., Mattson, T. G. & Sherman, A. H. (1994) The Linda alternative to message-passing systems. Parallel Comput. 20(4), 633655.Google Scholar
Chang, S., Knauth, A. & Greenman, B. (2017) Type systems as macros. In POPL, pp. 694705.Google Scholar
Clebsch, S., Drossopoulou, S., Blessing, S. & McNeil, A. (2015) Deny capabilities for safe, fast actors. In International Workshop on Programming Based on Actors, Agents, and Decentralized Control. AGERE! 2015.Google Scholar
Clocksin, W. F. & Mellish, C. S. (1981) Programming in Prolog. Springer.Google Scholar
Crafa, S. (2012) Behavioural Types for Actor Systems. Technical report.Google Scholar
de’Liguoro, U. & Padovani, L. (2018) Mailbox types for unordered interactions. In ECOOP.Google Scholar
Dotty Compiler Team. (2019) Union types - more details. Accessed December 13, 2019. Available at: https://dotty.epfl.ch/docs/reference/new-types/union-types-spec.html.Google Scholar
ECMA. (2015) ECMA-262: ECMAScript 2015 Language Specification, 6th ed. ECMA International.Google Scholar
Englemore, R. & Morgan, A. (eds). (1988) Blackboard Systems. Addison-Wesley.Google Scholar
Eugster, P. Th., Felber, P. A., Guerraoui, R. & Kermarrec, A.-M. (2003) The many faces of publish/subscribe. ACM Comput. Surv. 35(2), 114131.Google Scholar
Felleisen, M., Findler, R. B. & Flatt, M. (2009) Semantics Engineering with PLT Redex. MIT.Google Scholar
Flatt, M., Culpepper, R., Darais, D & Findler, R. B. (2012) Macros that work together: Compile-time bindings, partial expansion, and definition contexts. J. Funct. Program. 22(2), 181216.Google Scholar
Flatt, M. & PLT. (2010) Reference: Racket. Technical report PLT-TR-2010-1. PLT Inc. http://racket-lang.org/tr1/.Google Scholar
Garnock-Jones, T. (2017). Conversational Concurrency. PhD dissertation, Northeastern University.Google Scholar
Garnock-Jones, T. & Felleisen, M. (2016) Coordinated concurrent programming in Syndicate. In ESOP, pp. 310336.CrossRefGoogle Scholar
Garnock-Jones, T., Tobin-Hochstadt, S. & Felleisen, M. (2014) The network as a language construct. In ESOP, pp. 473492.Google Scholar
Gelernter, D. (1985) Generative communication in Linda. ACM Trans. Program. Lang. Syst. Google Scholar
Girard, J.-Y. (1971) Une extension de l’interpretation de Gödel a l’analyse, et son application a l’elimination des coupures dans l’analyse et la theorie des types. Stud. Logic Foundat. Math. 63, 6392.CrossRefGoogle Scholar
Haller, P. & Loiko, A (2016) LaCasa: Lightweight affinity and object capabilities in Scala. In OOPSLA, pp. 272291.CrossRefGoogle Scholar
He, J., Wadler, P. & Trinder, P. (2014) Typecasting actors: From Akka to TAkka. In Proceedings of the Fifth Annual Scala Workshop, pp. 2333.Google Scholar
Hewitt, C., Bishop, P. B., Greif, I., Smith, B. C., Matson, T. & Steiger, R. (1973) Actor induction and meta-evaluation. In POPL.Google Scholar
Hoffmann, J. & Shao, Z. (2015) Automatic static cost analysis for parallel programs. In ESOP, pp. 132157.CrossRefGoogle Scholar
Honda, K., Vasconcelos, V. T. & Kubo, M. (1998) Language primitives and type discipline for structured communication-based programming. In ESOP, pp. 122138.Google Scholar
Honda, K., Yoshida, N. & Carbone, M. (2008) Multiparty asynchronous session types. In POPL’08, pp. 273284.Google Scholar
Jeuring, J. (1995) Polytypic pattern matching. In FPCA’95, pp. 238248.Google Scholar
Leivant, D. (2001) Termination proofs and complexity certification. In Theoretical Aspects of Computer Software, pp. 183–200.Google Scholar
Miller, M. S., Tribble, E. D. & Shapiro, J. (2005) Concurrency among strangers. In International Symposium on Trustworthy Global Computing, pp. 195229.CrossRefGoogle Scholar
Milner, R. (1999) Communicating and Mobile Systems: The PI Calculus. Cambridge University.Google Scholar
Mostinckx, S., Scholliers, C., Philips, E., Herzeel, C. & De Meuter, W. (2007) Fact spaces: Coordination in the face of disconnection. In Proceedings of COORDINATION 2007, pp. 268285.Google Scholar
Mostrous, D. & Vasconcelos, V. T. (2011) Session typing for a featherweight erlang. In COORDINATION, pp. 95109.CrossRefGoogle Scholar
Murphy, A. L., Picco, G. P. & Roman, G.-C. (2006) Lime: A coordination model and middleware supporting mobility of hosts and agents. ACM Trans. Soft. Eng. Method. 15(3), 279328.Google Scholar
Newell, A. & Simon, H. A. (1972) Human Problem Solving. Prentice Hall.Google Scholar
Picco, G. P., Balzarotti, D. & Costa, P. (2005) LighTS: A lightweight, customizable tuple space supporting context-aware applications. In Proceedings of SAC’05, pp. 413419.CrossRefGoogle Scholar
Pierce, B. C. (1991) Programming with Intersection Types, Union Types, and Polymorphism. Technical report CMU-CS-91-106, Carnegie Mellon University.Google Scholar
Pierce, B. C. & Turner, D. N. (1998) Local type inference. In POPL, pp. 252265.CrossRefGoogle Scholar
Scholliers, C., Harnie, D., Tanter, E., De Meuter, W. & D’Hondt, T. (2011) Ambient contracts: Verifying and enforcing ambient object compositions à la carte. Personal Ubiquitous Comput. 15(4), 341351.CrossRefGoogle Scholar
Srinivasan, S. & Mycroft, A. (2008) Kilim: Isolation-typed actors for Java. In ECOOP, pp. 104128.CrossRefGoogle Scholar
Strom, R. E. & Yemini, S. (1986) Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Soft. Eng., 157–171.CrossRefGoogle Scholar
Summers, A. J. & Müller, P. (2016) Actor services: Modular verification of message passing programs. In ESOP.Google Scholar
Tasharofi, S., Dinges, P. & Johnson, R. E. (2013) Why do scala developers mix the actor model with other concurrency models? In ECOOP.Google Scholar
Tobin-Hochstadt, S. & Felleisen, M. (2008) The design and implementation of Typed Scheme. In POPL, pp. 395406.Google Scholar
Toninho, B., Caires, L. & Pfenning, F. (2011) Dependent session types via intuitionistic linear type theory. In PPDP.Google Scholar
Van Cutsem, T., Gonzalez Boix, E., Scholliers, C., Lombide Carreton, A., Harnie, D., Pinte, K. & De Meuter, W. (2014) AmbientTalk: Programming responsive mobile peer-to-peer applications with actors. Comput. Lang. Syst. Struct. 40(3–4), 112136.Google Scholar
van der Goot, R. (2000) High Performance Linda Using a Class Library. PhD dissertation, Erasmus University Rotterdam.Google Scholar
Vieira, H. T., Caires, L. & Seco, J. C. (2008) The conversation calculus: A model of service-oriented computation. In ESOP, pp. 269283.Google Scholar
Wright, A. K. & Felleisen, M. (1994) A syntactic approach to type soundness. Inf. Comput. 115(1), 3894.CrossRefGoogle Scholar
Wyckoff, P., McLaughry, S. W., Lehman, T. J. & Ford, D. A. (1998) T Spaces. IBM Syst. J. 37(3), 454474.CrossRefGoogle Scholar
Submit a response

Discussions

No Discussions have been published for this article.