External Uniqueness Is Unique Enough

  • Dave Clarke
  • Tobias Wrigstad
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2743)


External uniqueness is a surprising new way to add unique references to an OOPL. The idea is that an externally unique reference is the only reference into an aggregate from outside the aggregate. Internal references which do not escape the boundary of the aggregate are innocuous and therefore permitted. Based on ownership types, our proposal not only overcomes an abstraction problem from which existing uniqueness proposals suffer, it also enables many examples which are inherently not unique, such as a unique reference to a set of links in a doubly-linked list, without losing the benefits of uniqueness.


Object Graph Ownership Type Inside Owner Unique Reference Program Language Design 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aldrich, J., Kostadinov, V., Chambers, C.: Alias annotations for program understanding. In: OOPSLA Proceedings (November 2002)Google Scholar
  2. 2.
    Almeida, P.S.: Balloon Types: Controlling sharing of state in data types. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 32–59. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  3. 3.
    Bacon, D.F., Strom, R.E., Tarafdar, A.: Guava: a dialect of Java without data races. In: OOPSLA Proceedings, pp. 382–400 (2000)Google Scholar
  4. 4.
    Baker, H.G.: ‘Use-once’ variables and linear objects – storage management, reflection and multi-threading. ACM SIGPLAN Notices 30(1) (January 1995)Google Scholar
  5. 5.
    Banerjee, A., Naumann, D.A.: Representation independence, confinement, and access control. In: Proceedings of the 29th ACM Symposium on Principles of Programming Languages (POPL 2002), Portland, Oregon (January 2002)Google Scholar
  6. 6.
    Bollella, G., Gosling, J., Brosgol, B., Dibble, P., Furr, S., Turnbull, M.: The Real-Time Specification for Java. Addison-Wesley, Reading (2000)Google Scholar
  7. 7.
    Boyapati, C., Lee, R., Rinard, M.: Ownership types for safe programming: Preventing data races and deadlocks. In: OOPSLA Proceedings (November 2002)Google Scholar
  8. 8.
    Boyapati, C., Liskov, B., Shrira, L.: Ownership types and safe lazy upgrades in object-oriented databases. Technical Report MIT-LCSTR- 858, Laboratory for Computer Science, MIT (July 2002)Google Scholar
  9. 9.
    Boyapati, C., Rinard, M.: A parameterized type system for race-free Java programs. In: OOPSLA Proceedings (2001)Google Scholar
  10. 10.
    Boyapati, C., Salcianu, A., Beebee, W., Rinard, M.: Ownership types for safe region-based memory management in real-time java. In: ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation (PLDI) (June 2003)Google Scholar
  11. 11.
    Boyland, J.: Alias burying: Unique variables without destructive reads. Software – Practice and Experience 31(6), 533–553 (2001)zbMATHCrossRefGoogle Scholar
  12. 12.
    Boyland, J.: The interdependence of effects and uniqueness. In: 3rd Workshop on Formal Techniques for Java Programs (June 2001)Google Scholar
  13. 13.
    Boyland, J., Noble, J., Retert, W.: Capabilities for Sharing: A Generalization of Uniqueness and Read-Only. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 2. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  14. 14.
    Christiansen, M.V., Velschrow, P.: Region-based memory management in Java. Master’s thesis, Department of Computer Science (DIKU), University of Copenhagen (May 1998)Google Scholar
  15. 15.
    Clarke, D.: Object Ownership and Containment. PhD thesis, School of Computer Science and Engineering, University of New SouthWales, Sydney, Australia (2001)Google Scholar
  16. 16.
    Clarke, D., Drossopolou, S.: Ownership, encapsulation and the disjointness of type and effect. In: OOPSLA Proceedings (November 2002)Google Scholar
  17. 17.
    Clarke, D., Potter, J., Noble, J.: Ownership types for flexible alias protection. In: OOPSLA Proceedings (1998)Google Scholar
  18. 18.
    Clarke, D., Wrigstad, T.: External uniqueness. In: 10th Workshop on Foundations of Object-Oriented Languages (FOOL), New Orleans, LA (January 2003)Google Scholar
  19. 19.
    DeLine, R., Fähndrich, M.: Enforcing high-level protocols in lowlevel software. In: Proceedings of the ACM Conference on Programming Language Design and Implementation, June 2001, pp. 59–69 (2001)Google Scholar
  20. 20.
    Detlefs, D.L., Rustan, K., Leino, M., Nelson, G.: Wrestling with rep exposure. Technical Report SRC-RR-98-156, Compaq Systems Research Center (July 1998)Google Scholar
  21. 21.
    Fähndrich, M., De Line, R.: Adoption and focus: Practical linear types for imperative programming. In: Proceedings of the ACM Conference on Programming Language Design and Implementation (June 2002)Google Scholar
  22. 22.
    Fähndrich, M., Rustan, K., Leino, M.: Non-null types in an object-oriented language. In: Poll, E. (ed.) Formal Techniques for Java-like Programs, Mälaga, Spain (June 2002); Appears in Technical report NIII-R0204, Computing Science Department, University of Nijmegen (2002)Google Scholar
  23. 23.
    Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.: Design Patterns. Addison-Wesley, Reading (1994)Google Scholar
  24. 24.
    Gay, D., Aiken, A.: Language support for regions. In: ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI), Snowbird, Utah (June 2001)Google Scholar
  25. 25.
    Girard, J.-Y.: Linear logic. Theoretical Computer Science 50, 1–102 (1987)zbMATHCrossRefMathSciNetGoogle Scholar
  26. 26.
    Greenhouse, A., Boyland, J.: An object-oriented effects system. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, p. 205. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  27. 27.
    Grossman, D., Morrisett, G., Jim, T., Hicks, M., Wang, Y., Cheney, J.: Region-based memory management in Cyclone. In: Proceedings of the ACM Conference on Programming Language Design and Implementation (June 2002)Google Scholar
  28. 28.
    Grothoff, C., Palsberg, J., Vitek, J.: Encapsulating objects with confined types. In: OOPSLA Proceedings (2001)Google Scholar
  29. 29.
    Hogg, J.: Islands: Aliasing protection in object-oriented languages. In: OOPSLA Proceedings (November 1991)Google Scholar
  30. 30.
    Kim, W., Bertino, E., Garza, J.F.: Composite objects revisited. In: Proceedings of the 1989 ACM SIGMOD International Conference on Management of Data, Portland, Oregon, pp. 337–347 (1989)Google Scholar
  31. 31.
    Kobayashi, N.: Quasi-linear types. In: 26th ACM Symposium on Principles of Programming Languages (January 1999)Google Scholar
  32. 32.
    Lea, D.: Concurrent-Programming in Java: Design Principles and Patterns. Java Series. Addison-Wesley, Reading (1998)Google Scholar
  33. 33.
    Rustan, K., Leino, M., Poetzsch-Heffter, A., Zhou, Y.: Using data groups to specify and check side effects. In: Proceedings of the ACM Conference on Programming Language Design and Implementation (June 2002)Google Scholar
  34. 34.
    Rustan, K., Leino, M.: Raymie Stata. Virginity: A contribution to the specification of object-oriented software. Information Processing Letters 70(2), 99–105 (1999)zbMATHCrossRefGoogle Scholar
  35. 35.
    Minsky, N.: Towards alias-free pointers. In: Cointe, P. (ed.) ECOOP 1996. LNCS, vol. 1098, pp. 189–209. Springer, Heidelberg (1996)Google Scholar
  36. 36.
    Müller, 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, Fernuniversität Hagen (1999)Google Scholar
  37. 37.
    Noble, J., Vitek, J., Potter, J.: Flexible alias protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 158. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  38. 38.
    Potter, J., Noble, J., Clarke, D.: The ins and outs of objects. In: Australian Software Engineering Conference, Adelaide, Australia. IEEE Press, Los Alamitos (1998)Google Scholar
  39. 39.
    Talpin, J.-P., Jouvelot, P.: Polymorphic type, region, and effect inference. Journal of Functional Programming 2(3), 245–271 (1992)zbMATHCrossRefMathSciNetGoogle Scholar
  40. 40.
    Tofte, M., Talpin, J.-P.: Region-Based Memory Management. Information and Computation 132(2), 109–176 (1997)zbMATHCrossRefMathSciNetGoogle Scholar
  41. 41.
    Wadler, P.: Linear types can change the world! In: Broy, M., Jones, C.B. (eds.) IFIP TC 2 Working Conference on Programming Concepts and Methods, Sea of Gallilee, Israel, pp. 561–581. North-Holland, Amsterdam (1990)Google Scholar
  42. 42.
    Yates, B.N.: A type-and-effect system for encapsulating memory in Java. Master’s thesis, Department of Computer and Information Science and the Graduate School of the University of Oregon (August 1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Dave Clarke
    • 1
  • Tobias Wrigstad
    • 2
  1. 1.Institute of Information and Computing SciencesUtrecht UniversityUtrechtThe Netherlands
  2. 2.Department of Computer and Systems SciencesStockholm University/KTHStockholmSweden

Personalised recommendations