Behavioral interface description of an object-oriented language with futures and promises

This paper formalizes the observable interface behavior of a concurrent, object-oriented language with futures and promises. The calculus captures the core of Creol, a language, featuring in particular asynchronous method calls and, since recently, first-class futures. The focus of the paper are open systems and we formally characterize their behavior in terms of interactions at the interface between the program and its environment. The behavior is given by transitions between typing judgments, where the absent environment is represented abstractly by an assumption context. A particular challenge is the safe treatment of promises: The erroneous situation that a promise is fulfilled twice, i.e., bound to code twice, is prevented by a resource aware type system, enforcing linear use of the writepermission to a promise. We show subject reduction and the soundness of the abstract interface description.

[1]  M. Nivat Fiftieth volume of theoretical computer science , 1988 .

[2]  Henry Lieberman,et al.  Concurrent object-oriented programming in Act 1 , 1987 .

[3]  Languages Object-Oriented Programming Systems,et al.  OOPSLA'10 : proceedings of the 2010 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications, October 17-21, 2010, Reno/Tahoe, Nevada, USA , 2010 .

[4]  J. Girard,et al.  Proofs and types , 1989 .

[5]  Chris Hankin,et al.  Coordinatio Languages and Models , 2002, Lecture Notes in Computer Science.

[6]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[7]  Denis Caromel,et al.  Asynchronous and deterministic objects , 2004, POPL.

[8]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[9]  Dragos-Anton Manolescu,et al.  Workflow enactment with continuation and future objects , 2002, OOPSLA '02.

[10]  Bertrand Meyer,et al.  Systematic concurrent object-oriented programming , 1993, CACM.

[11]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[12]  Pierre America,et al.  Issues in the design of a parallel object-oriented language , 1989, Formal Aspects of Computing.

[13]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[14]  Julian Rathke,et al.  Java Jr: Fully Abstract Trace Semantics for a Core Java Language , 2005, ESOP.

[15]  Carolyn L. Talcott,et al.  Towards a Theory of Actor Computation , 1992, CONCUR.

[16]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[17]  Patrick Th. Eugster,et al.  SCOOP - Concurrency Made Easy , 2006, Research Results of the DICS Program.

[18]  Jong-Deok Choi,et al.  The Jalape�o Dynamic Optimizing Compiler for JavaTM , 1999, JAVA '99.

[19]  Akinori Yonezawa,et al.  ABCL: an object-oriented concurrent system , 1990 .

[20]  Erika Ábrahám,et al.  Heap-abstraction for an object-oriented calculus with thread classes , 2007, Software & Systems Modeling.

[21]  Denis Caromel,et al.  Towards seamless computing and metacomputing in Java , 1998 .

[22]  Einar Broch Johnsen,et al.  Creol: A type-safe object-oriented model for distributed concurrent systems , 2006, Theor. Comput. Sci..

[23]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[24]  Cédric Fournet,et al.  The Join Calculus: A Language for Distributed Mobile Programming , 2000, APPSEM.

[25]  Denis Caromel,et al.  A Theory of Distributed Objects , 2005 .

[26]  Rajeev R. Raje,et al.  Asynchronous Remote Method Invocation (ARMI) mechanism for Java , 1997 .

[27]  Matthias Felleisen,et al.  The semantics of future and an application , 1999, Journal of Functional Programming.

[28]  Suresh Jagannathan,et al.  Safe futures for Java , 2005, OOPSLA '05.

[29]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[30]  Satoshi Matsuoka,et al.  ABCL/f: A Future-Based Polymorphic Typed Concurrent Object-Oriented Language- Its Design and Implementation , 1994, Specification of Parallel Algorithms.

[31]  Henry Lieberman,et al.  A Preview of Act 1 , 1981 .

[32]  Leif Kornstaedt Alice in the Land of Oz - An Interoperability-based Implementation of a Functional Language on Top of a Relational Language , 2001, Electron. Notes Theor. Comput. Sci..

[33]  Jan Janecek,et al.  Optimizing remote method invocation in Java , 2002, Proceedings. 13th International Workshop on Database and Expert Systems Applications.

[34]  Brian Postow Book review: A Theory of Objects by Martin Abadi and Luca Cardelli (Springer-Verlag, 1996): Series--Monographs in Computer Science , 1999, SIGA.

[35]  Bertrand Meyer,et al.  Dependable Systems: Software, Computing, Networks, Research Results of the DICS Program , 2006, Research Results of the DICS Program.

[36]  Martin Odersky,et al.  Actors That Unify Threads and Events , 2007, COORDINATION.

[37]  Joachim Niehren,et al.  Observational Semantics for a Concurrent Lambda Calculus with Reference Cells and Futures , 2007, MFPS.

[38]  Gul A. Agha,et al.  Concurrent object-oriented programming , 1993, CACM.

[39]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[40]  Denis Caromel,et al.  A theory of distributed objects - asynchrony, mobility, groups, components , 2005 .

[41]  G. Stewart Von Itzstein,et al.  Applications of Join Java , 2002 .

[42]  Mario Tokoro,et al.  Concurrent programming in concurrent Smalltalk , 1987 .

[43]  Anoop Gupta,et al.  COOL: a language for parallel programming , 1990 .

[44]  Julian Rathke,et al.  A fully abstract may testing semantics for concurrent objects , 2005, Theor. Comput. Sci..

[45]  Joachim Niehren,et al.  A concurrent lambda calculus with futures , 2006, Theor. Comput. Sci..

[46]  D. Andrews A Small Programming Language , 1997 .

[47]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA '03.

[48]  Martin Odersky,et al.  Programming in Scala , 2008 .

[49]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[50]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[51]  Erika Ábrahám,et al.  Abstract Interface Behavior of Object-Oriented Languages with Monitors , 2006, FMOODS.

[52]  Gert Smolka,et al.  Alice through the looking glass , 2021, Trends in Functional Programming.

[53]  Mario Tokoro,et al.  Object-oriented concurrent programming , 1987 .

[54]  Denis Caromel,et al.  Asynchronous sequential processes , 2009, Inf. Comput..

[55]  Matthias Felleisen,et al.  The Semantics of Future , 1994 .

[56]  Erika Ábrahám,et al.  Abstract Interface Behavior of Object-Oriented Languages with Monitors , 2007, Theory of Computing Systems.

[57]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[58]  Keshav Pingali,et al.  I-structures: data structures for parallel computing , 1986, Graph Reduction.

[59]  Matthias Felleisen,et al.  The Semantics of Futures , 1994 .

[60]  Rohit Chandra,et al.  The COOL parallel programming language: design, implementation, and performance , 1995 .

[61]  João Saraiva,et al.  Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures , 2000 .

[62]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[63]  Luc Moreau,et al.  The semantics of Scheme with future , 1996, ICFP '96.

[64]  Joachim Niehren,et al.  A concurrent lambda calculus with futures , 2005, Theor. Comput. Sci..

[65]  Denis Caromel,et al.  Towards Seamless Computing and Metacomputing in Java , 1998, Concurr. Pract. Exp..

[66]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[67]  Polyvios Pratikakis,et al.  Transparent proxies for java futures , 2004, OOPSLA.

[68]  Denis Caromel,et al.  Toward a method of object-oriented concurrent programming , 1993, CACM.

[69]  Frank S. de Boer,et al.  Java Test Driver Generation from Object-Oriented Interaction Traces , 2009, Electron. Notes Theor. Comput. Sci..

[70]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

[71]  Akinori Yonezawa,et al.  Modelling and programming in an object-oriented concurrent language ABCL/1 , 1987 .

[72]  Alexander Aiken,et al.  A theory of type qualifiers , 1999, PLDI '99.

[73]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[74]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977 .

[75]  I. Naturwissenschaftlich-TechnischeFakultat A Concurrent -Calculus with Promises and Futures , 2002 .

[76]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[77]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[78]  Michael James Compton,et al.  SCOOP An Investigation of Concurrency in Eiffel , 2000 .

[79]  Arnd Poetzsch-Heffter,et al.  A Representation-Independent Behavioral Semantics for Object-Oriented Components , 2007, FMOODS.

[80]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA 2003.