External Uniqueness Is Unique Enough

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.

[1]  Martin Odersky,et al.  A Statically Safe Alternative to Virtual Types , 1998, ECOOP.

[2]  Sophia Drossopoulou,et al.  Ownership, encapsulation and the disjointness of type and effect , 2002, OOPSLA '02.

[3]  Jens Palsberg,et al.  Encapsulating objects with confined types , 2001, OOPSLA 2001.

[4]  Peter M Uller,et al.  Universes: a type system for controlling representation exposure , 1999 .

[5]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[6]  Martin C. Rinard,et al.  Ownership types for safe region-based memory management in real-time Java , 2003, PLDI '03.

[7]  Morten V. Christiansen,et al.  Region-Based Memory Management in Java , 1998 .

[8]  K. Rustan M. Leino,et al.  Using data groups to specify and check side effects , 2002, PLDI '02.

[9]  Elisa Bertino,et al.  Composite objects revisited , 1989, SIGMOD '89.

[10]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[11]  John Tang Boyland,et al.  Alias burying: Unique variables without destructive reads , 2001, Softw. Pract. Exp..

[12]  James Noble,et al.  The ins and outs of objects , 1998, Proceedings 1998 Australian Software Engineering Conference (Cat. No.98EX233).

[13]  Paulo Sérgio Almeida Balloon Types: Controlling Sharing of State in Data Types , 1997, ECOOP.

[14]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.

[15]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[16]  Martin C. Rinard,et al.  A parameterized type system for race-free Java programs , 2001, OOPSLA '01.

[17]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[18]  Naoki Kobayashi Quasi-linear types , 1999, POPL '99.

[19]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[20]  David F. Bacon,et al.  Guava: a dialect of Java without data races , 2000, OOPSLA '00.

[21]  Pierre Cointe ECOOP ’96 — Object-Oriented Programming , 1996, Lecture Notes in Computer Science.

[22]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[23]  Robert DeLine,et al.  Adoption and focus: practical linear types for imperative programming , 2002, PLDI '02.

[24]  John Hogg,et al.  Islands: aliasing protection in object-oriented languages , 1991, OOPSLA '91.

[25]  James Cheney,et al.  Region-based memory management in cyclone , 2002, PLDI '02.

[26]  Naftaly H. Minsky Towards Alias-Free Pointers , 1996, ECOOP.

[27]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[28]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.

[29]  David Gerard Clarke,et al.  Object ownership and containment , 2003 .

[30]  Greg Nelson,et al.  Wrestling with rep exposure , 1998 .

[31]  K. Rustan M. Leino,et al.  Non-null types in an object-oriented language , 2002 .

[32]  Tobias Wrigstad,et al.  External Uniqueness , 2003 .

[33]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[34]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[35]  Rachid Guerraoui,et al.  ECOOP’ 99 — Object-Oriented Programming , 1999, Lecture Notes in Computer Science.

[36]  Aaron Greenhouse,et al.  An Object-Oriented Effects System , 1999, ECOOP.

[37]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[38]  Henry G. Baker,et al.  “Use-once” variables and linear objects: storage management, reflection and multi-threading , 1995, SIGP.

[39]  David Gay,et al.  Language support for regions , 2001, PLDI '01.

[40]  Bennett Norton Yates A Type-And-Effect System For Encapsulating Memory In Java , 1999 .

[41]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[42]  M. Nivat Fiftieth volume of theoretical computer science , 1988 .

[43]  Anindya Banerjee,et al.  Representation independence, confinement and access control [extended abstract] , 2002, POPL '02.

[44]  K. Rustan M. Leino,et al.  Virginity: A Contribution to the Specification of Object-Oriented Software , 1999, Inf. Process. Lett..

[45]  Liuba Shrira,et al.  Ownership Types and Safe Lazy Upgrades in Object-Oriented Databases , 2002 .

[46]  John Tang Boyland,et al.  Capabilities for Sharing: A Generalisation of Uniqueness and Read-Only , 2001, ECOOP.