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.