Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Aldrich, J., Kostadinov, V., Chambers, C.: Alias annotations for program understanding. In: OOPSLA Proceedings (November 2002)
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)
Bacon, D.F., Strom, R.E., Tarafdar, A.: Guava: a dialect of Java without data races. In: OOPSLA Proceedings, pp. 382–400 (2000)
Baker, H.G.: ‘Use-once’ variables and linear objects – storage management, reflection and multi-threading. ACM SIGPLAN Notices 30(1) (January 1995)
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)
Bollella, G., Gosling, J., Brosgol, B., Dibble, P., Furr, S., Turnbull, M.: The Real-Time Specification for Java. Addison-Wesley, Reading (2000)
Boyapati, C., Lee, R., Rinard, M.: Ownership types for safe programming: Preventing data races and deadlocks. In: OOPSLA Proceedings (November 2002)
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)
Boyapati, C., Rinard, M.: A parameterized type system for race-free Java programs. In: OOPSLA Proceedings (2001)
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)
Boyland, J.: Alias burying: Unique variables without destructive reads. Software – Practice and Experience 31(6), 533–553 (2001)
Boyland, J.: The interdependence of effects and uniqueness. In: 3rd Workshop on Formal Techniques for Java Programs (June 2001)
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)
Christiansen, M.V., Velschrow, P.: Region-based memory management in Java. Master’s thesis, Department of Computer Science (DIKU), University of Copenhagen (May 1998)
Clarke, D.: Object Ownership and Containment. PhD thesis, School of Computer Science and Engineering, University of New SouthWales, Sydney, Australia (2001)
Clarke, D., Drossopolou, S.: Ownership, encapsulation and the disjointness of type and effect. In: OOPSLA Proceedings (November 2002)
Clarke, D., Potter, J., Noble, J.: Ownership types for flexible alias protection. In: OOPSLA Proceedings (1998)
Clarke, D., Wrigstad, T.: External uniqueness. In: 10th Workshop on Foundations of Object-Oriented Languages (FOOL), New Orleans, LA (January 2003)
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)
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)
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)
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)
Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.: Design Patterns. Addison-Wesley, Reading (1994)
Gay, D., Aiken, A.: Language support for regions. In: ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI), Snowbird, Utah (June 2001)
Girard, J.-Y.: Linear logic. Theoretical Computer Science 50, 1–102 (1987)
Greenhouse, A., Boyland, J.: An object-oriented effects system. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, p. 205. Springer, Heidelberg (1999)
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)
Grothoff, C., Palsberg, J., Vitek, J.: Encapsulating objects with confined types. In: OOPSLA Proceedings (2001)
Hogg, J.: Islands: Aliasing protection in object-oriented languages. In: OOPSLA Proceedings (November 1991)
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)
Kobayashi, N.: Quasi-linear types. In: 26th ACM Symposium on Principles of Programming Languages (January 1999)
Lea, D.: Concurrent-Programming in Java: Design Principles and Patterns. Java Series. Addison-Wesley, Reading (1998)
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)
Rustan, K., Leino, M.: Raymie Stata. Virginity: A contribution to the specification of object-oriented software. Information Processing Letters 70(2), 99–105 (1999)
Minsky, N.: Towards alias-free pointers. In: Cointe, P. (ed.) ECOOP 1996. LNCS, vol. 1098, pp. 189–209. Springer, Heidelberg (1996)
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)
Noble, J., Vitek, J., Potter, J.: Flexible alias protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 158. Springer, Heidelberg (1998)
Potter, J., Noble, J., Clarke, D.: The ins and outs of objects. In: Australian Software Engineering Conference, Adelaide, Australia. IEEE Press, Los Alamitos (1998)
Talpin, J.-P., Jouvelot, P.: Polymorphic type, region, and effect inference. Journal of Functional Programming 2(3), 245–271 (1992)
Tofte, M., Talpin, J.-P.: Region-Based Memory Management. Information and Computation 132(2), 109–176 (1997)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Clarke, D., Wrigstad, T. (2003). External Uniqueness Is Unique Enough. In: Cardelli, L. (eds) ECOOP 2003 – Object-Oriented Programming. ECOOP 2003. Lecture Notes in Computer Science, vol 2743. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45070-2_9
Download citation
DOI: https://doi.org/10.1007/978-3-540-45070-2_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40531-3
Online ISBN: 978-3-540-45070-2
eBook Packages: Springer Book Archive