skip to main content
10.1145/2814270.2814280acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Disjointness domains for fine-grained aliasing

Published: 23 October 2015 Publication History

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.
[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.
[3]
ACM. ISBN 978-1-60558-768-4.
[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.
[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.
[6]
Robert Bocchino and Jonathan Aldrich. Reference Groups for Local Uniqueness. Technical report, Technical Report, CMUISR-14-100, to appear.
[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.
[8]
Chandrasekhar Boyapati. Safejava: A Unified Type System for Safe Programming. PhD thesis, MIT, 2004.
[9]
John Boyland. Alias Burying: Unique Variables Without Destructive Reads. Software - Practice and Experience, 31 (6):533–553, 2001. ISSN 00380644.
[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.
[11]
[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.
[13]
Elias Castegren, Johan Östlund, and Tobias Wrigstad. Refined Ownership: Fine-grained Controlled Internal Sharing. In Formal Methods for Multicore Programming. 2015.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[31]
Peter Müller and Arnd Poetzsch-Heffter. Universes: A Type System for Alias and Dependency Control. Technical Report 279, FernUniversität Hagen, 2001.
[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.
[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.
[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.
[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.
[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.
[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.

Cited By

View all
  • (2017)Development of dynamic protection against timing channelsInternational Journal of Information Security10.1007/s10207-016-0356-716:6(641-651)Online publication date: 1-Nov-2017
  • (2017)Development of dynamic protection against timing channelsInternational Journal of Information Security10.1007/s10207-016-0356-716:6(641-651)Online publication date: 1-Nov-2017

Recommendations

Comments

Information & Contributors

Information

Published In

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
  • 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
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 October 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Aliasing
  2. linear types
  3. mutable state
  4. type systems
  5. uniqueness

Qualifiers

  • Research-article

Conference

SPLASH '15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2017)Development of dynamic protection against timing channelsInternational Journal of Information Security10.1007/s10207-016-0356-716:6(641-651)Online publication date: 1-Nov-2017
  • (2017)Development of dynamic protection against timing channelsInternational Journal of Information Security10.1007/s10207-016-0356-716:6(641-651)Online publication date: 1-Nov-2017

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media