ABSTRACT
Linear 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, including information hiding, protocol checking, concurrency, security, and memory management.
We propose the concept of a permission-based programming language - a language whose object model, type system, and runtime are all co-designed with permissions in mind. This approach supports an object model in which the structure of an object can change over time, a type system that tracks changing structure in addition to addressing the other concerns above, and a runtime system that can dynamically check permission assertions and leverage permissions to parallelize code. We sketch the design of the permission-based programming language Plaid, and argue that the approach may provide significant software engineering benefits.
- J. Aldrich, J. Sunshine, D. Saini, and Z. Sparks. Typestate-Oriented Programming. In Proc. Onward!, 2009. Google ScholarDigital Library
- H. G. Baker. 'Use-once' variables and linear objects - storage management, reflection, and multi-threading. ACM SIGPLAN Notices, 30(1):45--52, 1995. Google ScholarDigital Library
- N. Beckman. Types for Correct Concurrent API Usage. PhD thesis, Carnegie Mellon University, 2010. Google ScholarDigital Library
- K. Bierhoff and J. Aldrich. Modular typestate verification of aliased objects. In Object-Oriented Programming, Systems, Languages, and Applications, 2007. Google ScholarDigital Library
- B. Bokowski and J. Vitek. Confined Types. In Object-Oriented Programming, Systems, Languages, and Applications, November 1999. Google ScholarDigital Library
- C. Boyapati, R. Lee, and M. Rinard. Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In Object-Oriented Programming, Systems, Languages, and Applications, November 2002. Google ScholarDigital Library
- J. Boyland, J. Noble, and W. Retert. Capabilities for sharing: A generalization of uniqueness and read-only. In European Conference on Object-Oriented Programming, 2001. Google ScholarDigital Library
- R. DeLine and M. Fähndrich. Enforcing high-level protocols in low-level software. In Programming Language Design and Implementation, 2001. Google ScholarDigital Library
- A. Greenhouse and W. L. Scherlis. Assuring and evolving concurrent programs: annotations and policy. In International Conference on Software Engineering, 2002. Google ScholarDigital Library
- D. Grossman, G. Morrisett, T. Jim, M. Hicks, Y. Wang, and J. Cheney. Region-based memory management in cyclone. In Programming Language Design and Implementation, 2002. Google ScholarDigital Library
- J. Hogg. Islands: Aliasing Protection in Object-Oriented Languages. In Object-Oriented Programming, Systems, Languages, and Applications, October 1991. Google ScholarDigital Library
- J. Noble, J. Vitek, and J. Potter. Flexible Alias Protection. In European Conference on Object-Oriented Programming, 1998. Google ScholarDigital Library
- R. Plasmeijer and M. van Eekelen. Keep it Clean: A unique approach to functional programming. In ACM Sigplan Notices, 1999. Google ScholarDigital Library
- S. Stork, P. Marques, and J. Aldrich. Concurrency by Default: Using Permissions to Express Dataflow in Stateful Programs. In Proc. Onward!, 2009. Google ScholarDigital Library
- J. A. Tov and R. Pucella. Practical affine types. In Principles of Programming Languages, 2011. Google ScholarDigital Library
- P. Wadler. Linear types can change the world! In Working Conference on Programming Concepts and Methods, 1990.Google Scholar
- D. Walker, K. Crary, and G. Morrisett. Typed memory management via static capabilities. ACM Trans. Program. Lang. Syst., 22(4):701--771, 2000. Google ScholarDigital Library
Index Terms
- Permission-based programming languages (NIER track)
Recommendations
Plaid: a permission-based programming language
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionAccess 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, ...
Permission based granular access control pattern
PLoP '14: Proceedings of the 21st Conference on Pattern Languages of ProgramsEnterprise applications are designed to address specific business needs and are generally run within the internal corporate networks. Access to enterprise applications is controlled by various corporate policies, based on numerous widely accepted ...
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