Simple Loose Ownership Domains

Ownership Domains generalize ownership types. They support programming patterns like iterators that are not possible with ordinary ownership types. However, they are still too restrictive for cases in which an object X wants to access the public domains of an arbitrary number of other objects, which often happens in observer scenarios. To overcome this restriction, we developed so-called loose domains which abstract over several precise domains. That is, similar to the relation between supertypes and subtypes we have a relation between loose and precise domains. In addition, we simplified ownership domains by reducing the number of domains per object to two and hard-wiring the access permissions between domains. We formalized the resulting type system for an OO core language and proved type soundness and a fundamental accessibility property.

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

[2]  Liuba Shrira,et al.  Ownership types for object encapsulation , 2003, POPL '03.

[3]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  David Gerard Clarke,et al.  Object ownership and containment , 2003 .

[6]  John Hogg,et al.  Islands: aliasing protection in object-oriented languages , 1991, OOPSLA '91.

[7]  Jan Vitek,et al.  Confined types in Java , 2001, Softw. Pract. Exp..

[8]  Richard C. Holt,et al.  The Geneva convention on the treatment of object aliasing , 1992, OOPS.

[9]  James Noble,et al.  Generic ownership for generic Java , 2006, OOPSLA '06.

[10]  Greg Nelson,et al.  Wrestling with rep exposure , 1998 .

[11]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[12]  Martin C. Rinard,et al.  A parameterized type system for race-free Java programs , 2001, OOPSLA '01.

[13]  Martin Rinard,et al.  Safe Runtime Downcasts With Ownership Types , 2002 .

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

[15]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[16]  Martin Rinard,et al.  Safejava: a unified type system for safe programming , 2004 .

[17]  Sophia Drossopoulou,et al.  Ownership, encapsulation and the disjointness of type and effect , 2002, OOPSLA '02.

[18]  Jonathan Aldrich,et al.  Permission-based ownership: encapsulating state in higher-order typed languages , 2005, PLDI '05.

[19]  James Noble,et al.  Iterators and encapsulation , 2000, Proceedings 33rd International Conference on Technology of Object-Oriented Languages and Systems TOOLS 33.

[20]  Craig Chambers,et al.  Ownership Domains: Separating Aliasing Policy from Mechanism , 2004, ECOOP.

[21]  Matthew J. Smith Towards an Effects System for Ownership Domains ? , 2005 .

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

[23]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[24]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[25]  James Noble,et al.  Featherweight Generic Ownership , 2004 .

[26]  Paulo Sérgio Almeida Balloon Types: Controlling Sharing of State in Data Types , 1997, ECOOP.

[27]  Peter M Uller,et al.  Universes: a type system for controlling representation exposure , 1999 .

[28]  Peter Müller,et al.  Modular Specification and Verification of Object-Oriented Programs , 2002, Lecture Notes in Computer Science.

[29]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[30]  M. Rinard,et al.  A parameterized type system for race-free Java programs , 2001, OOPSLA '01.

[31]  John Tang Boyland,et al.  Alias burying: Unique variables without destructive reads , 2001, Softw. Pract. Exp..