Award Abstract # 1116907
SHF :Small: Foundations of Permission-Based Object-Oriented Languages

NSF Org: CCF
Division of Computing and Communication Foundations
Recipient: CARNEGIE MELLON UNIVERSITY
Initial Amendment Date: July 27, 2011
Latest Amendment Date: July 27, 2011
Award Number: 1116907
Award Instrument: Standard Grant
Program Manager: Anindya Banerjee
abanerje@nsf.gov
 (703)292-7885
CCF
 Division of Computing and Communication Foundations
CSE
 Directorate for Computer and Information Science and Engineering
Start Date: August 1, 2011
End Date: July 31, 2015 (Estimated)
Total Intended Award Amount: $500,000.00
Total Awarded Amount to Date: $500,000.00
Funds Obligated to Date: FY 2011 = $500,000.00
History of Investigator:
  • Jonathan Aldrich (Principal Investigator)
    jonathan.aldrich@cs.cmu.edu
Recipient Sponsored Research Office: Carnegie-Mellon University
5000 FORBES AVE
PITTSBURGH
PA  US  15213-3815
(412)268-8746
Sponsor Congressional District: 12
Primary Place of Performance: Carnegie-Mellon University
5000 FORBES AVE
PITTSBURGH
PA  US  15213-3815
Primary Place of Performance
Congressional District:
12
Unique Entity Identifier (UEI): U3NKNFLNQ613
Parent UEI: U3NKNFLNQ613
NSF Program(s): Software & Hardware Foundation
Primary Program Source: 01001112DB NSF RESEARCH & RELATED ACTIVIT
Program Reference Code(s): 7923, 7943
Program Element Code(s): 779800
Award Agency Code: 4900
Fund Agency Code: 4900
Assistance Listing Number(s): 47.070

ABSTRACT

This research project is exploring a new way of writing computer
programs, based on a new programming language Plaid. Plaid is the first
programming language to incorporate "permissions" natively into the
language. These permissions allow the programming language to more
accurately model things that change--for example, a connection to a web
site that might be interrupted and then later reconnected. Such a
permission-based language helps engineers coordinate on a software
project, making engineers more productive, and reducing bugs that
end-users see.

On a technical level, the project integrates permissions such as
"unique," "immutable," and "shared" into the language via a new kind of
type system, based on linear logic. These permissions express aliasing
information, and this aliasing information can be leveraged to do many
things, including safely changing the representation of objects at run
time and automatically parallelizing code. The project is investigating
the design of a single permission system that can address multiple such
concerns; investigating how models of inheritance, composition,
sub typing, casts, and polymorphism must be adapted to handle
permissions; and what design choices can best make such a language
practical for writing programs of significant scale and design complexity.

PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH

Note:  When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external site maintained by the publisher. Some full text articles may not yet be available without a charge during the embargo (administrative interval).

Some links on this page may take you to non-federal websites. Their policies may differ from this site.

Jonathan Aldrich "The Power of Interoperability: Why Objects Are Inevitable" Onward! Essays , 2013 10.1145/2509578.2514738
Joshua Sunshine, Karl Naden, Sven Stork, Jonathan Aldrich, and Eric Tanter "First-Class State Change in Plaid" Proceedings of Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '11) , 2011 , p.713 10.1145/2048066.2048122
Karl Naden, Robert Bocchino, Kevin Bierhoff, Jonathan Aldrich "A Type System for Borrowing Permissions" Proceedings of Principles of Programming Languages (POPL '12) , 2012 , p.557 10.1145/2103656.2103722
Ligia Nistor, Jonathan Aldrich, Stephanie Balzer and Hannes Mehnert "Object Propositions" Proc. of Formal Methods , 2014 10.1007/978-3-319-06410-9_34
Mehnert, Hannes; Aldrich, Jonathan; Furia, CA; Nanz, S "Verification of Snapshotable Trees Using Access Permissions and Typestate" OBJECTS, MODELS, COMPONENTS, PATTERNS, TOOLS 2012 , v.7304 , 2012 , p.187-201
Pradel, Michael; Jaspan, Ciera; Aldrich, Jonathan; Gross, Thomas R.; Glinz, M; Murphy, G; Pezze, M "Statically Checking API Protocol Conformance with Mined Multi-Object Specifications" 2012 34TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE) , 2012 , p.925-935
Ronald Garcia, Éric Tanter, Roger Wolff, and Jonathan Aldrich "Foundations of Typestate-Oriented Programming" ACM Transactions on Programming Languages and Systems (TOPLAS) , v.36 , 2014 , p.12 10.1145/2629609
Sven Stork, Karl Naden, Joshua Sunshine, ManuelMohr, Alcides Fonseca, Paulo Marques, and Jonathan Aldrich "Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach" ACM Transactions on Programming Languages and Systems (TOPLAS) , v.36 , 2014 , p.2:1 10.1145/2543920

PROJECT OUTCOMES REPORT

Disclaimer

This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.

We developed a theory of permissions that supports delegation-based reuse, as opposed to the inheritance-based reuse present in earlier versions of Plaid. This model is both cleaner and more flexible. The model was published in FTfJP '15.

We developed a model of statically-typed object-oriented languages that support dynamic creation of class hierarchies, including mixin composition, along with a match construct that generalizes instanceof checks and casts. We started with an extensible tag construct motivated by type theory, and adapted it to support static reasoning about class hierarchy and the tags supported by each object. The implementation of the Wyvern language leverages this theory. This work was published in ECOOP '15. 

We carried out a series of three studies evaluating the concrete benefits of the documentation and checking that is enabled by that paradigm. One study appeared in ECOOP '14 and the other's are in ICPC '15. The results strongly suggest that protocols represent significant barriers in real-world developer tasks, and that interventions related to Plaid's typestate checking system and supporting documentation can significantly improve performance on these tasks.

We revised our Gradual Typestate paper (ECOOP '11) for journal publication and it has been published in ACM TOPLAS. This work investigates a theory that provides run-time support for typestate and permissions, allowing a flexible mix of static and dynamic checks to ensure that the program is safe. Our revision work has focused on refining the core model of the language, more cleanly separating out the core static theory from the extensions necessary to provide gradual typechecking. This should solidify the foundations of permission-based languages (especially Plaid) while also opening the door to more general future research mixing static and dynamic checking for permissions.

We published a description of ÆMINIUM, the concurrent-by-default extension of Plaid, at ACM TOPLAS. ÆMINIUM expresses dependencies using permissions, which are used by the type system to automatically parallelize the application. The ÆMINIUM approach provides a modular and composable mechanism for writing concurrent applications, preventing data races in a provable way.

We developed a substructural type system outfitted with a novel lightweight interference control mechanism, rely-guarantee protocols, that enables controlled aliasing of shared resources. By assigning each alias separate roles, encoded in a novel protocol abstraction in the spirit of rely-guarantee reasoning, our type system ensures that challenging uses of shared state will never interfere in an unsafe fashion. In particular, rely-guarantee protocols ensure that each alias will never observe an unexpected value, or type, when inspecting shared memory regardless of how the changes to that shared state (originating from potentially unknown program contexts) are interleaved at run-time. This work was published at ECOOP '14.
We developed a modular verification approach based on the novel abstraction of object propositions, which combine predicates and information about object aliasing. In our methodology, even if shared data is modified, we know that an object invariant specified by a client holds. Our permission system allows verification using a mixture of linear and nonlinear reasoning. We thus offer an alternative to separation logic verification approaches. Object propositions can be more modular in some cases than separation logic because they can more effectively hide the exact aliasing relationships within a module. We validate the practicality of our approach by verifying an instance of the composite pattern. We implement our methodology in the intermediate verification language Boogie (of Microsoft Research), for the composite pattern example. This work was published in the Inte...

Please report errors in award information by writing to: awardsearch@nsf.gov.

Print this page

Back to Top of page