ABSTRACT
Access permissions (permissions for short) are a lightweight way to specify how an object may be aliased and whether aliases allow mutation. Prior work has demonstrated the value of permissions for addressing many software engineering concerns, including information hiding, protocol checking, concurrency, security, and memory management.
We propose a permission-based programming language: that is, a language whose object model, type system, and runtime are all co-designed with permissions in mind. The key elements of such a language are (1) an object model in which the structure of an object can change over time; (2) a type system that tracks changing structure in addition to addressing concerns such as those listed above; and (3) a runtime system that dynamically checks permission assertions and leverages permissions to parallelize code. We sketch the design of the permission-based programming language Plaid and argue that the approach promises significant software engineering benefits.
- J. Aldrich et al. Permission-based programming languages. In ICSE (NIER track), 2011. Google ScholarDigital Library
- J. Aldrich, J. Sunshine, D. Saini, and Z. Sparks. Typestate-Oriented Programming. In Onward!, 2009. Google ScholarDigital Library
- J. Boyland, J. Noble, and W. Retert. Capabilities for sharing: A generalization of uniqueness and read-only. In ECOOP, 2001. Google ScholarDigital Library
- S. Stork, P. Marques, and J. Aldrich. Concurrency by Default: Using Permissions to Express Dataflow in Stateful Programs. In Onward!, 2009. Google ScholarDigital Library
Index Terms
- Plaid: a permission-based programming language
Recommendations
Foundations of Typestate-Oriented Programming
Typestate reflects how the legal operations on imperative objects can change at runtime as their internal state changes. A typestate checker can statically ensure, for instance, that an object method is only called when the object is in a state for which ...
Permission-based programming languages (NIER track)
ICSE '11: Proceedings of the 33rd International Conference on Software EngineeringLinear permissions have been proposed as a lightweight way to specify how an object may be aliased, and whether those aliases allow mutation. Prior work has demonstrated the value of permissions for addressing many software engineering concerns, ...
A type system for borrowing permissions
POPL '12: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesIn object-oriented programming, unique permissions to object references are useful for checking correctness properties such as consistency of typestate and noninterference of concurrency. To be usable, unique permissions must be borrowed --- for example,...
Comments