Advertisement

Ownership Domains: Separating Aliasing Policy from Mechanism

  • Jonathan Aldrich
  • Craig Chambers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3086)

Abstract

Ownership types promise to provide a practical mechanism for enforcing stronger encapsulation by controlling aliasing in object-oriented languages. However, previous ownership type proposals have tied the aliasing policy of a system to the mechanism of ownership. As a result, these proposals are too weak to express many important aliasing constraints, yet also so restrictive that they prohibit many useful programming idioms.

In this paper, we propose ownership domains, which decouple encapsulation policy from the mechanism of ownership in two key ways. First, developers can specify multiple ownership domains for each object, permitting a fine-grained control of aliasing compared to systems that provide only one ownership domain for each object. Second, developers can specify the permitted aliasing between each pair of domains in the system, providing more flexibility compared to systems that enforce a fixed policy for inter-domain aliasing. Because it decouples policy from mechanism, our alias control system is both more precise and more flexible than previous ownership type systems.

Keywords

Domain Parameter Ownership Type External Domain Abstract Data Type Access Domain 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Aldrich, J.: Using Types to Enforce Architectural Structure. PhD thesis, University of Washington (August 2003)Google Scholar
  2. 2.
    Aldrich, J., Chambers, C.: Ownership Domains: Separating Aliasing Policy from Mechanism. Carnegie Mellon Technical Report CMU-ISRI-04-110 (April 2004), available at http://www.cs.cmu.edu/~aldrich/papers/
  3. 3.
    Aldrich, J., Chambers, C., Notkin, D.: Architectural Reasoning with ArchJava. In: European Conference on Object-Oriented Programming (June 2002)Google Scholar
  4. 4.
    Aldrich, J., Kostadinov, V., Chambers, C.: Alias Annotations for Program Understanding. In: Object-Oriented Programming Systems, Languages, and Applications (November 2002)Google Scholar
  5. 5.
    Almeida, P.S.: Balloon Types: Controlling Sharing of State in Data Types. In: European Conference on Object-Oriented Programming (June 1997)Google Scholar
  6. 6.
    Banerjee, A., Naumann, D.A.: Representation Independence, Confinement, and Access Control. In: Principles of Programming Languages (January 2002)Google Scholar
  7. 7.
    Bokowski, B., Vitek, J.: Confined Types. In: Object-Oriented Programming Systems, Languages, and Applications (November 1999)Google Scholar
  8. 8.
    Boyapati, C., Lee, R., Rinard, M.: Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In: Object-Oriented Programming Systems, Languages, and Applications (November 2002)Google Scholar
  9. 9.
    Boyapati, C., Salcianu, A., William Beebee, J., Rinard, M.: Ownership Types for Safe Region-Based Memory Mangement in Real-Time Java. In: Programming Language Design and Implementation (June 2003)Google Scholar
  10. 10.
    Clarke, D.: Object Ownership & Containment. PhD thesis, University of New South Wales (July 2001)Google Scholar
  11. 11.
    Clarke, D., Drossopoulou, S.: Ownership, Encapsulation, and the Disjointness of Type and Effect. In: Object-Oriented Programming Systems, Languages, and Applications (November 2002)Google Scholar
  12. 12.
    Clarke, D., Wrigstad, T.: External Uniqueness is Unique Enough. In: European Conference on Object-Oriented Programming (July 2003)Google Scholar
  13. 13.
    Clarke, D.G., Potter, J.M., Noble, J.: Ownership Types for Flexible Alias Protection. In: Object-Oriented Programming Systems, Languages, and Applications (October 1998)Google Scholar
  14. 14.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1994)Google Scholar
  15. 15.
    Garlan, D., Shaw, M.: An Introduction to Software Architecture. In: Ambriola, V., Tortora, G. (eds.) Advances in Software Engineering and Knowledge Engineering, I (1993)Google Scholar
  16. 16.
    Greenhouse, A., Boyland, J.: An Object-Oriented Effects System. In: European Conference on Object-Oriented Programming (June 1999)Google Scholar
  17. 17.
    Hogg, J.: Islands: Aliasing Protection in Object-Oriented Languages. In: Object- Oriented Programming Systems, Languages, and Applications (October 1991)Google Scholar
  18. 18.
    Igarashi, A., Pierce, B., Wadler, P.: Featherwieght Java: a Minimal Core Calculus for Java and GJ. In: Object-Oriented Programming Systems, Languages, and Applications (November 1999)Google Scholar
  19. 19.
    Lam, P., Rinard, M.: A Type System and Analysis for the Automatic Extraction and Enforcement of Design Information. In: European Conference on Object-Oriented Programming (July 2003)Google Scholar
  20. 20.
    Leino, K.R.M., Poetzsch-Heffter, A., Zhou, Y.: Using Data Groups to Specify and Check Side Effects. In: Programming Language Design and Implementation (June 2002)Google Scholar
  21. 21.
    Muller, P., Poetzsch-Heffter, A.: Universes: A Type System for Controlling Representation Exposure. In: Poetzsch-Heffter, A., Meyer, J. (eds.) Programming Languages and Fundamentals of Programming (1999)Google Scholar
  22. 22.
    Noble, J., Biddle, R., Tempero, E., Potanin, A., Clarke, D.: Towards a Model of Encapsulation. In: Intercontinental Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming (July 2003)Google Scholar
  23. 23.
    Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: European Conference on Object-Oriented Programming (1998)Google Scholar
  24. 24.
    Potanin, A., Noble, J., Clarke, D., Biddle, R.: Featherweight Generic Confinement. In: Foundations of Object-Oriented Languages (January 2004)Google Scholar
  25. 25.
    Reynolds, J.C.: Separation Logic: a Logic for Shared Mutable Data Structures. In: Logic in Computer Science (July 2002)Google Scholar
  26. 26.
    Sullivan, K., Notkin, D.: Reconciling Environment Integration and Software Evolution. Transactions on Software Engineering and Methodology 1(3) (July 1992)Google Scholar
  27. 27.
    Walker, D., Morrisett, G.: Alias Types for Recursive Data Structures. In: International Workshop on Types in Compilation (September 2000)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Jonathan Aldrich
    • 1
  • Craig Chambers
    • 2
  1. 1.Carnegie Mellon UniversityPittsburghUSA
  2. 2.University of WashingtonSeattleUSA

Personalised recommendations