A Complete Guide to the Future

We present the semantics and proof system for an object-oriented language with active objects, asynchronous method calls, and futures. The language, based on Creol, distinguishes itself in that unlike active object models, it permits more than one thread of control within an object, though, unlike Java, only one thread can be active within an object at a given time and rescheduling occurs only at specific release points. Consequently, reestablishing an object's monitor invariant is possible at specific well-defined points in the code. The resulting proof system shows that this approach to concurrency is simpler for reasoning than, say, Java's multithreaded concurrency model. From a methodological perspective, we identify constructs which admit a simple proof system and those which require, for example, interference freedom tests.

[1]  Carl Hewitt,et al.  Actors: A Conceptual Foundation for Concurrent Object-Oriented Programming , 1987, Research Directions in Object-Oriented Programming.

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

[3]  Per Brinch Hansen,et al.  Java's insecure parallelism , 1999, SIGP.

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

[5]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[6]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[7]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, SEFM.

[8]  Willem P. de Roever,et al.  A Proof System for Concurrent ADA Programs , 1984, Sci. Comput. Program..

[9]  Matthias Felleisen,et al.  The Semantics of Future and an Application , 1999, J. Funct. Program..

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

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

[12]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

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

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

[15]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[16]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

[17]  Frank S. de Boer,et al.  A WP-calculus for OO , 1999, FoSSaCS.

[18]  Matthias Felleisen,et al.  A Programmer's Reduction Semantics for Classes and Mixins , 1999, Formal Syntax and Semantics of Java.

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

[20]  Peter Van Roy,et al.  Concepts, Techniques, and Models of Computer Programming , 2004 .

[21]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[22]  Johan Dovland,et al.  Verification of concurrent objects with asynchronous method calls , 2005, IEEE International Conference on Software - Science, Technology & Engineering (SwSTE'05).

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

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

[25]  Denis Caromel,et al.  Asynchronous and deterministic objects , 2004, POPL '04.

[26]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[27]  Frank S. de Boer,et al.  An assertion-based proof system for multithreaded Java , 2005, Theor. Comput. Sci..

[28]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[29]  Carlos H. C. Duarte,et al.  Proof-theoretic foundations for the design of actor systems , 1999, Mathematical Structures in Computer Science.

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