ABSTRACT
Existing ownership type systems require objects to have precisely one primary owner, organizing the heap into an ownership tree. Unfortunately, a tree structure is too restrictive for many programs, and prevents many common design patterns where multiple objects interact.
Multiple Ownership is an ownership type system where objects can have more than one owner, and the resulting ownership structure forms a DAG. We give a straightforward model for multiple ownership, focusing in particular on how multiple ownership can support a powerful effects system that determines when two computations interfere-in spite of the DAG structure.
We present a core programming language MOJO, Multiple ownership for Java-like Objects, including a type and effects system, and soundness proof. In comparison to other systems, MOJO imposes absolutely no restrictions on pointers, modifications or programs' structure, but in spite of this, MOJO's effects can be used to reason about or describe programs' behaviour.
- Marwan Abi-Antoun and Jonathan Aldrich. Ownership domains in the real world. In IWACO workshop at ECOOP, 2007.Google Scholar
- Jonathan Aldrich and Craig Chambers. Ownership domains: Separating aliasing policy from mechanism. In ECOOP, 2004.Google Scholar
- Christopher Alexander. A city is not a tree. Design, (206), 1966.Google Scholar
- Paulo Sérgio Almeida. Balloon types: Controlling sharing of state in data types. In ECOOP, 1997.Google Scholar
- Chris Andreae, Yvonne Coady, Celina Gibbs, James Noble, Jan Vitek, and Tian Zhao. Scoped types and aspects for real-time java. In ECOOP, 2006. Google Scholar
Digital Library
- Gareth Baxter, Marcus R. Frean, James Noble, Mark Rickerby, Hayden Smith, Matt Visser, Hayden Melton, and Ewan D. Tempero. Understanding the shape of Java software. In OOPSLA, 2006. Google Scholar
Digital Library
- Boris Bokowski and Jan Vitek. Confined types. In OOPSLA, 1999. Google Scholar
Digital Library
- Chandrasekhar Boyapati, Robert Lee, and Martin Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, November 2002. Google Scholar
Digital Library
- Chandrasekhar Boyapati and Martin Rinard. A Parameterized Type System for Race-Free Java Programs. In OOPSLA, pages 56--69, Tampa Bay, FL, USA, 2001. Google Scholar
Digital Library
- John Boyland and William Retert. Connecting effects and uniqueness with adoption. In POPL, 2005. Google Scholar
Digital Library
- Nicholas Cameron, Erik Ernst, and Sophia Drossopoulou. Towards an existential types model for Java with wildcards. In FTfJP workshop at ECOOP, 2007.Google Scholar
- Dave Clarke. Object Ownership and Containment. PhD thesis, UNSW, Australia, 2002. Google Scholar
Digital Library
- Dave Clarke and Sophia Drossopoulou. Ownership, Encapsulation, and the Disjointness of Type and Effect. In OOPSLA, 2002. Google Scholar
Digital Library
- David Clarke, John Potter, and James Noble. Ownership types for flexible alias protection. In OOPSLA, 1998. Google Scholar
Digital Library
- Curtis Clifton. A design discipline and language features for modular reasoning in aspect-oriented programs. PhD thesis, Iowa State, 2005. Google Scholar
Digital Library
- Curtis Clifton, Gary T. Leavens, and James Noble. Ownership and effects for more effective reasoning about aspects. In ECOOP, 2007. Google Scholar
Digital Library
- Gilles Deleuze and Félix Guattari. A Thousand Plateaus: Capitalism and Schizophrenia. U. Minnesota, 1987.Google Scholar
- Werner Dietl, Sophia Drossopoulou, and Peter Müller. Generic universe types. In ECOOP, 2007. Google Scholar
Digital Library
- Sophia Drossopoulou. The benefits of putting objects into boxes. ESOP, 2006. Invited Talk.Google Scholar
- Cormac Flanagan, Stephen N. Freund, and Marina Lifshin. Type inference for atomicity. In TLDI, 2005. Google Scholar
Digital Library
- Joseph Gil, John Howse, and Stuart Kent. Towards a formalization of constraint diagrams. In HCC, 2001. Google Scholar
Digital Library
- Aaron Greenhouse and John Boyland. An objectoriented effects system. In ECOOP, 1999. Google Scholar
Digital Library
- Christian Grothoff, Jens Palsberg, and Jan Vitek. Encapsulating Objects with Confined Types. In OOPSLA, 2001. Google Scholar
Digital Library
- Ralf Hinze. The Fun of Programming, chapter Fun with Phantom Types, pages 245--262. Palgrave Macmillan, 2003.Google Scholar
- John Hogg. Islands: Aliasing protection in objectoriented languages. In OOPSLA, 1991. Google Scholar
Digital Library
- Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In OOPSLA, November 1999. Google Scholar
Digital Library
- Daniel Jackson. Aspect: Detecting bugs with abstract dependences. ACM ToSEM, 4(2), 1995. Google Scholar
Digital Library
- Neel Krishnaswami and Jonathan Aldrich. Permissionbased ownership: Encapsulating state in higher-order typed languages. In PLDI, 2005. Google Scholar
Digital Library
- K. R. M. Leino and P. Müller. Object invariants in dynamic contexts. In ECOOP, 2004.Google Scholar
Cross Ref
- K. Rustan M. Leino. Data groups: Specifying the modification of extended state. In OOPSLA, 1998. Google Scholar
Digital Library
- Yi Lu and John Potter. Protecting representation with effect encapsulation. In POPL, pages 359--371, 2006. Google Scholar
Digital Library
- Yi Lu and John Potter. Object invariants and effects. In ECOOP, 2007. Google Scholar
Digital Library
- John M. Lucassen and David K. Gifford. Polymorphic effect systems. In POPL, 1988. Google Scholar
Digital Library
- Nick Mitchell. The runtime structure of object ownership. In ECOOP, 2006. Google Scholar
Digital Library
- Peter Müller. Modular Specification and Verification of Object-Oriented Programs, volume 2262 of Lecture Notes in Computer Science. Springer-Verlag, 2002.Google Scholar
- Peter Müller. Reasoning about object structures using ownership. In Verified Software: Theories, Tools, Experiments, LNCS. Springer-Verlag, 2007.Google Scholar
- James Noble, Robert Biddle, Ewan Tempero, Alex Potanin, and Dave Clarke. Towards a model of encapsulation. In IWACO workshop at ECOOP, 2003.Google Scholar
- James Noble, Jan Vitek, and John Potter. Flexible alias protection. In ECOOP, 1998. Google Scholar
Digital Library
- Martin Odersky and Matthias Zenger. Scalable component abstractions. In OOPSLA'05, pages 41--57, New York, NY, USA, 2005. ACM Press. Google Scholar
Digital Library
- Matthew Parkinson and Gavin Bierman. Separation logic and abstraction. In POPL, 2005. Google Scholar
Digital Library
- Alex Potanin. Generic Ownership-A Practical Approach to Ownership and Confinement in OO Programming Languages. PhD thesis, 2007.Google Scholar
- Alex Potanin, James Noble, Dave Clarke, and Robert Biddle. Generic ownership for generic Java. In OOPSLA, 2006. Google Scholar
Digital Library
- Alex Potanin, James Noble, Marcus Frean, and Robert Biddle. Scale-free geometry in object-oriented programs. Communications of the ACM, May 2005. Google Scholar
Digital Library
- John C. Reynolds. Syntactic control of interference. In POPL, 1978. Google Scholar
Digital Library
- Frederick Smith, David Walker, and Greg Morrisett. Alias types. In ESOP, 2000. Google Scholar
Digital Library
- Matthew Smith. Effects system for ownership domains. In FTfJP workshop at ECOOP, 2005.Google Scholar
- Matthew Smith. A Model of Effects with an application to Ownership Types. PhD thesis, Imperial College, 2007.Google Scholar
- Mads Tofte and Jean-Pierre Talpin. Region-Based Memory Management. Information and Computation, 132(2):109--176, 1997. Google Scholar
Digital Library
- Mads Torgersen, Christian Plesner Hansen, Erik Ernst, Peter von der Ahé, Gilad Bracha, and Neal Gafter. Adding wildcards to the Java programming language. In SAC'04, pages 1289--1296, 2004. Google Scholar
Digital Library
- Tobias Wrigstad and Dave Clarke. Existential owners for ownership types. JOT, 2007.Google Scholar
Cross Ref
Index Terms
Multiple ownership
Recommendations
Multiple ownership
Proceedings of the 2007 OOPSLA conferenceExisting ownership type systems require objects to have precisely one primary owner, organizing the heap into an ownership tree. Unfortunately, a tree structure is too restrictive for many programs, and prevents many common design patterns where ...
Tribal ownership
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsTribal Ownership unifies class nesting and object ownership. Tribal Ownership is based on Tribe, a language with nested classes and object families. In Tribal Ownership, a program's runtime object ownership structure is characterised by the lexical ...
Permission-based ownership: encapsulating state in higher-order typed languages
PLDI '05: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementationToday's module systems do not effectively support information hiding in the presence of shared mutable objects, causing serious problems in the development and evolution of large software systems. Ownership types have been proposed as a solution to this ...







Comments