skip to main content
10.1145/1297027.1297060acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Multiple ownership

Published:21 October 2007Publication History

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.

References

  1. Marwan Abi-Antoun and Jonathan Aldrich. Ownership domains in the real world. In IWACO workshop at ECOOP, 2007.Google ScholarGoogle Scholar
  2. Jonathan Aldrich and Craig Chambers. Ownership domains: Separating aliasing policy from mechanism. In ECOOP, 2004.Google ScholarGoogle Scholar
  3. Christopher Alexander. A city is not a tree. Design, (206), 1966.Google ScholarGoogle Scholar
  4. Paulo Sérgio Almeida. Balloon types: Controlling sharing of state in data types. In ECOOP, 1997.Google ScholarGoogle Scholar
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. Boris Bokowski and Jan Vitek. Confined types. In OOPSLA, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Chandrasekhar Boyapati, Robert Lee, and Martin Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In OOPSLA, November 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. John Boyland and William Retert. Connecting effects and uniqueness with adoption. In POPL, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Nicholas Cameron, Erik Ernst, and Sophia Drossopoulou. Towards an existential types model for Java with wildcards. In FTfJP workshop at ECOOP, 2007.Google ScholarGoogle Scholar
  12. Dave Clarke. Object Ownership and Containment. PhD thesis, UNSW, Australia, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Dave Clarke and Sophia Drossopoulou. Ownership, Encapsulation, and the Disjointness of Type and Effect. In OOPSLA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. David Clarke, John Potter, and James Noble. Ownership types for flexible alias protection. In OOPSLA, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Curtis Clifton. A design discipline and language features for modular reasoning in aspect-oriented programs. PhD thesis, Iowa State, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Curtis Clifton, Gary T. Leavens, and James Noble. Ownership and effects for more effective reasoning about aspects. In ECOOP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Gilles Deleuze and Félix Guattari. A Thousand Plateaus: Capitalism and Schizophrenia. U. Minnesota, 1987.Google ScholarGoogle Scholar
  18. Werner Dietl, Sophia Drossopoulou, and Peter Müller. Generic universe types. In ECOOP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Sophia Drossopoulou. The benefits of putting objects into boxes. ESOP, 2006. Invited Talk.Google ScholarGoogle Scholar
  20. Cormac Flanagan, Stephen N. Freund, and Marina Lifshin. Type inference for atomicity. In TLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Joseph Gil, John Howse, and Stuart Kent. Towards a formalization of constraint diagrams. In HCC, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Aaron Greenhouse and John Boyland. An objectoriented effects system. In ECOOP, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Christian Grothoff, Jens Palsberg, and Jan Vitek. Encapsulating Objects with Confined Types. In OOPSLA, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ralf Hinze. The Fun of Programming, chapter Fun with Phantom Types, pages 245--262. Palgrave Macmillan, 2003.Google ScholarGoogle Scholar
  25. John Hogg. Islands: Aliasing protection in objectoriented languages. In OOPSLA, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In OOPSLA, November 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Daniel Jackson. Aspect: Detecting bugs with abstract dependences. ACM ToSEM, 4(2), 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Neel Krishnaswami and Jonathan Aldrich. Permissionbased ownership: Encapsulating state in higher-order typed languages. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. K. R. M. Leino and P. Müller. Object invariants in dynamic contexts. In ECOOP, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  30. K. Rustan M. Leino. Data groups: Specifying the modification of extended state. In OOPSLA, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Yi Lu and John Potter. Protecting representation with effect encapsulation. In POPL, pages 359--371, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Yi Lu and John Potter. Object invariants and effects. In ECOOP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. John M. Lucassen and David K. Gifford. Polymorphic effect systems. In POPL, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Nick Mitchell. The runtime structure of object ownership. In ECOOP, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Peter Müller. Modular Specification and Verification of Object-Oriented Programs, volume 2262 of Lecture Notes in Computer Science. Springer-Verlag, 2002.Google ScholarGoogle Scholar
  36. Peter Müller. Reasoning about object structures using ownership. In Verified Software: Theories, Tools, Experiments, LNCS. Springer-Verlag, 2007.Google ScholarGoogle Scholar
  37. James Noble, Robert Biddle, Ewan Tempero, Alex Potanin, and Dave Clarke. Towards a model of encapsulation. In IWACO workshop at ECOOP, 2003.Google ScholarGoogle Scholar
  38. James Noble, Jan Vitek, and John Potter. Flexible alias protection. In ECOOP, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Martin Odersky and Matthias Zenger. Scalable component abstractions. In OOPSLA'05, pages 41--57, New York, NY, USA, 2005. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Matthew Parkinson and Gavin Bierman. Separation logic and abstraction. In POPL, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Alex Potanin. Generic Ownership-A Practical Approach to Ownership and Confinement in OO Programming Languages. PhD thesis, 2007.Google ScholarGoogle Scholar
  42. Alex Potanin, James Noble, Dave Clarke, and Robert Biddle. Generic ownership for generic Java. In OOPSLA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Alex Potanin, James Noble, Marcus Frean, and Robert Biddle. Scale-free geometry in object-oriented programs. Communications of the ACM, May 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. John C. Reynolds. Syntactic control of interference. In POPL, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Frederick Smith, David Walker, and Greg Morrisett. Alias types. In ESOP, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Matthew Smith. Effects system for ownership domains. In FTfJP workshop at ECOOP, 2005.Google ScholarGoogle Scholar
  47. Matthew Smith. A Model of Effects with an application to Ownership Types. PhD thesis, Imperial College, 2007.Google ScholarGoogle Scholar
  48. Mads Tofte and Jean-Pierre Talpin. Region-Based Memory Management. Information and Computation, 132(2):109--176, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. Tobias Wrigstad and Dave Clarke. Existential owners for ownership types. JOT, 2007.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Multiple ownership

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!