skip to main content
research-article

Disjointness domains for fine-grained aliasing

Published:23 October 2015Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. ACM. ISBN 978-1-60558-768-4.Google ScholarGoogle Scholar
  4. 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 ScholarGoogle Scholar
  5. 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 ScholarGoogle Scholar
  6. Robert Bocchino and Jonathan Aldrich. Reference Groups for Local Uniqueness. Technical report, Technical Report, CMUISR-14-100, to appear.Google ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. Chandrasekhar Boyapati. Safejava: A Unified Type System for Safe Programming. PhD thesis, MIT, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. John Boyland. Alias Burying: Unique Variables Without Destructive Reads. Software - Practice and Experience, 31 (6):533–553, 2001. ISSN 00380644. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Springer.Google ScholarGoogle Scholar
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. Elias Castegren, Johan Östlund, and Tobias Wrigstad. Refined Ownership: Fine-grained Controlled Internal Sharing. In Formal Methods for Multicore Programming. 2015.Google ScholarGoogle Scholar
  14. 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 ScholarGoogle ScholarCross RefCross Ref
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle Scholar
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. Peter Müller and Arnd Poetzsch-Heffter. Universes: A Type System for Alias and Dependency Control. Technical Report 279, FernUniversität Hagen, 2001.Google ScholarGoogle Scholar
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle Scholar
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle Scholar
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Disjointness domains for fine-grained aliasing

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 50, Issue 10
        OOPSLA '15
        October 2015
        953 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2858965
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          OOPSLA 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications
          October 2015
          953 pages
          ISBN:9781450336895
          DOI:10.1145/2814270

        Copyright © 2015 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 23 October 2015

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!