Abstract
Aliasing is crucial for supporting useful implementation patterns, but it makes reasoning about programs difficult. To deal with this problem, numerous type-based aliasing control mechanisms have been proposed, expressing properties such as uniqueness. Uniqueness, however, is black-and-white: either a reference is unique or it can be arbitrarily aliased; and global: excluding aliases throughout the entire system, making code brittle to changing requirements. Disjointness domains, a new approach to alias control, address this problem by enabling more graduations between uniqueness and arbitrary reference sharing. They allow expressing aliasing constraints local to a certain set of variables (either stack variables or fields) for instance that no aliasing occurs between variables within some set of variables but between such sets or the opposite, that aliasing occurs within that set but not between different sets. A hierarchy of disjointness domains controls the flow of references through a program, helping the programmer reason about disjointness and enforce local alias invariants. The resulting system supports fine-grained control of aliasing between both variables and objects, making aliasing explicit to programmers, compilers, and tooling. This paper presents a formal account of disjointness domains along with examples. Disjointness domains provide novel means of expressing may-alias kinds of constraints, which may prove useful in compiler optimisation and verification.
- Jonathan Aldrich, Valentin Kostadinov, and Craig Chambers. Alias Annotations for Program Understanding. In Objectoriented Programming, Systems, Languages, and Applications, pages 311–330. ACM Press, 2002. Google Scholar
Digital Library
- Jonathan Aldrich, Joshua Sunshine, Darpan Saini, and Zachary Sparks. Typestate-Oriented Programming. In Proceedings of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications, OOPSLA ’09, pages 1015–1022, New York, NY, USA, 2009. Google Scholar
Digital Library
- ACM. ISBN 978-1-60558-768-4.Google Scholar
- Paulo Sérgio Almeida. Balloon Types: Controlling Sharing of State in Data Types. In Mehmet Ak¸sit and Satoshi Matsuoka, editors, ECOOP’97 — Object-Oriented Programming, volume 1241 of Lecture Notes in Computer Science, pages 32–59. Springer Berlin Heidelberg, 1997. ISBN 978-3-540-63089- 0.Google Scholar
- Brian Anderson, Lars Bergstrom, David Herman, Josh Matthews, Keegan McAllister, Manish Goregaokar, Jack Moffitt, and Simon Sapin. Experience Report: Developing the Servo Web Browser Engine using Rust. CoRR, abs/1505.07383, 2015.Google Scholar
- Robert Bocchino and Jonathan Aldrich. Reference Groups for Local Uniqueness. Technical report, Technical Report, CMUISR-14-100, to appear.Google Scholar
- Robert L. Bocchino, Jr., Vikram S. Adve, Danny Dig, Sarita V. Adve, Stephen Heumann, Rakesh Komuravelli, Jeffrey Overbey, Patrick Simmons, Hyojin Sung, and Mohsen Vakilian. A Type and Effect System for Deterministic Parallel Java. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA ’09, pages 97–116, New York, NY, USA, 2009. ACM. ISBN 978-1-60558-766-0. Google Scholar
Digital Library
- Chandrasekhar Boyapati. Safejava: A Unified Type System for Safe Programming. PhD thesis, MIT, 2004. Google Scholar
Digital Library
- John Boyland. Alias Burying: Unique Variables Without Destructive Reads. Software - Practice and Experience, 31 (6):533–553, 2001. ISSN 00380644. Google Scholar
Digital Library
- John Boyland. Checking Interference with Fractional Permissions. In R. Cousot, editor, Static Analysis: 10th International Symposium, volume 2694 of Lecture Notes in Computer Science, pages 55–72, Berlin, Heidelberg, New York, 2003. Google Scholar
Digital Library
- Springer.Google Scholar
- John Boyland, James Noble, and William Retert. Capabilities for Aliasing: A Generalisation of Uniqueness and Read-Only. In Jørgen Lindskov Knudsen, editor, ECOOP 2001 — Object-Oriented Programming, 15th European Conference, number 2072 in Lecture Notes in Computer Science, pages 2–27, Berlin, Heidelberg, New York, 2001. Springer. Google Scholar
Digital Library
- Elias Castegren, Johan Östlund, and Tobias Wrigstad. Refined Ownership: Fine-grained Controlled Internal Sharing. In Formal Methods for Multicore Programming. 2015.Google Scholar
- Dave Clarke and Tobias Wrigstad. External Uniqueness Is Unique Enough. In Luca Cardelli, editor, ECOOP 2003 – Object-Oriented Programming, volume 2743 of Lecture Notes in Computer Science, pages 176–200. Springer Berlin Heidelberg, 2003. ISBN 978-3-540-40531-3.Google Scholar
Cross Ref
- Dave Clarke, Johan Östlund, Ilya Sergey, and Tobias Wrigstad. Ownership Types: A Survey. In Dave Clarke, James Noble, and Tobias Wrigstad, editors, Aliasing in Object-Oriented Programming. Types, Analysis and Verification, volume 7850 of Lecture Notes in Computer Science, pages 15–58. Springer Berlin Heidelberg, 2013. ISBN 978-3-642-36945-2. Google Scholar
Digital Library
- David G. Clarke, John M. Potter, and James Noble. Ownership Types for Flexible Alias Protection. In In Object-Oriented Programming, Systems, Languages, and Applications, pages 48–64. ACM Press, 1998. Google Scholar
Digital Library
- Sylvan Clebsch and Sophia Drossopoulou. Fully Concurrent Garbage Collection of Actors on Many-Core Machines. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA 2013, part of SPLASH 2013, Indianapolis, IN, USA, October 26-31, 2013, pages 553––570, 2013. Google Scholar
Digital Library
- Robert DeLine and Manuel Fähndrich. The Fugue protocol checker: Is your software Baroque? Technical report, Technical Report MSR-TR-2004-07, Microsoft Research, 2004.Google Scholar
- Mariangiola Dezani-ciancaglini, Dimitris Mostrous, Nobuko Yoshida, and Sophia Drossopoulou. Session Types for Object-Oriented Languages. In In Proceedings of ECOOP’06, LNCS, pages 328–352. Springer, 2006. Google Scholar
Digital Library
- Sophia Drossopoulou, Ferruccio Damiani, Mariangiola Dezani-Ciancaglini, and Paola Giannini. Fickle: Dynamic Object Reclassification. In Jørgen Lindskov Knudsen, editor, ECOOP 2001 — Object-Oriented Programming, volume 2072 of Lecture Notes in Computer Science, pages 130–149. Springer Berlin Heidelberg, 2001. ISBN 978-3-540-42206-8. Google Scholar
Digital Library
- Manuel Fähndrich and Robert DeLine. Adoption and Focus: Practical Linear Types for Imperative Programming. In Proceedings of the 2002 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 13–24. ACM, May 2002. Google Scholar
Digital Library
- Colin S. Gordon, Matthew J. Parkinson, Jared Parsons, Aleks Bromfield, and Joe Duffy. Uniqueness and Reference Immutability for Safe Parallelism. SIGPLAN Not., 47(10):21–40, October 2012. ISSN 0362-1340. Google Scholar
Digital Library
- Aaron Greenhouse and John Boyland. An Object-Oriented Effects System. In ECOOP’99 — Object-Oriented Programming, 13th European Conference, number 1628 in Lecture Notes in Computer Science, pages 205–229, Berlin, Heidelberg, New York, 1999. Springer. Google Scholar
Digital Library
- Philipp Haller and Martin Odersky. Capabilities for Uniqueness and Borrowing. In Theo D’Hondt, editor, ECOOP 2010 – Object-Oriented Programming, volume 6183 of Lecture Notes in Computer Science, pages 354–378. Springer Berlin Heidelberg, 2010. ISBN 978-3-642-14106-5. Google Scholar
Digital Library
- D.E. Harms and B.W. Weide. Copying and Swapping: Influences on the Design of Reusable Software Components. Software Engineering, IEEE Transactions on, 17(5):424–435, May 1991. ISSN 0098-5589. Google Scholar
Digital Library
- Stefan Heule, K. Rustan M. Leino, Peter Müller, and Alexander J. Summers. Abstract Read Permissions: Fractional Permissions without the Fractions. In Roberto Giacobazzi, Josh Berdine, and Isabella Mastroeni, editors, Verification, Model Checking, and Abstract Interpretation, volume 7737 of Lecture Notes in Computer Science, pages 315–334. Springer Berlin Heidelberg, 2013. ISBN 978-3-642-35872-2. Google Scholar
Digital Library
- John Hogg. Islands: Aliasing Protection in Object-Oriented Languages. In Conference Proceedings on Object-oriented Programming Systems, Languages, and Applications, OOPSLA ’91, pages 271–285, New York, NY, USA, 1991. ACM. ISBN 0-201-55417-8. Google Scholar
Digital Library
- John Hogg, Doug Lea, Alan Wills, Dennis de Champeaux, and Richard Holt. The Geneva Convention on the Treatment of Object Aliasing. SIGPLAN OOPS Mess., 3(2):11–16, April 1992. ISSN 1055-6400. Google Scholar
Digital Library
- Naftaly H. Minsky. Towards Alias-Free Pointers. In Pierre Cointe, editor, ECOOP ’96 — Object-Oriented Programming, volume 1098 of Lecture Notes in Computer Science, pages 189–209. Springer Berlin Heidelberg, 1996. ISBN 978-3-540- 61439-5. Google Scholar
Digital Library
- Greg Morrisett, Karl Crary, Neal Glew, and David Walker. Stack-Based Typed Assembly Language. In Journal of Functional Programming, pages 28–52. Springer-Verlag, 1998. Google Scholar
Digital Library
- Peter Müller and Arnd Poetzsch-Heffter. Universes: A Type System for Alias and Dependency Control. Technical Report 279, FernUniversität Hagen, 2001.Google Scholar
- James Noble, Jan Vitek, and John Potter. Flexible Alias Protection. In Eric Jul, editor, ECOOP’98 — Object-Oriented Programming, volume 1445 of Lecture Notes in Computer Science, pages 158–185. Springer Berlin Heidelberg, 1998. ISBN 978-3-540-64737-9. Google Scholar
Digital Library
- Johan Östlund, Stephan Brandauer, and Tobias Wrigstad. The Joelle Programming Language: Evolving Java Programs Along Two Axes of Parallel Eval. International Workshop on Languages for the Multi-core Era 2012, 2012.Google Scholar
- Alex Potanin, James Noble, and Robert Biddle. Checking Ownership and Confinement. Concurrency and Computation: Practice and Experience, 16(7):671–687, 2004. ISSN 1532- 0634. Google Scholar
Digital Library
- François Pottier and Jonathan Protzenko. Programming with Permissions in Mezzo. In Proceedings of the 2013 ACM SIGPLAN International Conference on Functional Programming (ICFP’13), pages 173–184, September 2013. Google Scholar
Digital Library
- Marco Servetto, David J. Pearce, Lindsay Groves, and Alex Potanin. Balloon Types for Safe Parallelisation over Arbitrary Object Graphs. In Proceedings of the Workshop on Determinism and Correctness in Parallel Programming, 2013.Google Scholar
- R.E. Strom and S. Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. Software Engineering, IEEE Transactions on, SE-12(1):157–171, Jan 1986. ISSN 0098-5589. Google Scholar
Digital Library
Index Terms
Disjointness domains for fine-grained aliasing
Recommendations
Disjointness domains for fine-grained aliasing
OOPSLA 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and ApplicationsAliasing is crucial for supporting useful implementation patterns, but it makes reasoning about programs difficult. To deal with this problem, numerous type-based aliasing control mechanisms have been proposed, expressing properties such as uniqueness. ...
Inferring aliasing and encapsulation properties for java
Proceedings of the 2007 OOPSLA conferenceThere are many proposals for language techniques to control aliasing and encapsulation in object oriented programs, typically based on notions of object ownership and pointer uniqueness. Most of these systems require extensive manual annotations, and ...






Comments