The Plaid Programming Language

NOTE: the Plaid project is currently inactive. See what our current group is doing on the Wyvern programming language!

See the Game of Life written in Plaid. The source code to the Game of Life is available. You can also get the source code to Plaid at our open source repository.

Plaid is a radical new programming language designed for the nascent age of concurrent, component-based computing (overview document). Plaid's characteristics include:

Typestate-Oriented Programming, a paradigm that extends object-oriented programming with typestates . A typestate is like a class, in that it has its own interface (a set of method signatures), representation (fields), and behavior (method implementations). However, the typestate of an object can change over time, and Plaid's type system helps track these changes.

. A typestate is like a class, in that it has its own interface (a set of method signatures), representation (fields), and behavior (method implementations). However, the typestate of an object can change over time, and Plaid's type system helps track these changes. Concurrency by Default, a programming paradigm in which programmers specify dependencies between operations using permissions rather than specify the order of execution in the program. The run time system is therefore free to execute the program concurrently up to the expressed dependencies. Concurrency by Default brings the concurrency benefits of dataflow and functional programming to stateful programs.

rather than specify the order of execution in the program. The run time system is therefore free to execute the program concurrently up to the expressed dependencies. Concurrency by Default brings the concurrency benefits of dataflow and functional programming to stateful programs. A simple and clean object model that supports first-class composable traits, diamond-free multiple inheritance, and convenient functional programming.

A linear type system that tracks state changes dynamically using access permissions, supports strict information hiding, provides integrated structural and nominal types, and supports type members.

Gradual Typing, which allows programmers to mix statically and dynamically typed code in the programs they write. Plaid will be among the first (if not the first) serious implementation of a gradual type system. In addition, it breaks new ground in supporting gradual typestate and permissions and in ensuring that dynamically typed code cannot break modularity guarantees.

We hope to innovate in other areas as well, including better language support for distributed and web programming, new verification approaches that leverage Plaid's permissions, and better language support for common software framework designs.

Plaid-related publications include:

We are also working on a draft specification for the dynamically typed core of Plaid.

Two recent presentations covering the Plaid language design are:

One more publication just for fun (SIGBOVIK is an April Fool's conference):

Holy States Can Save the World! Brother Jonathan Aldrich, High Monk of the Plaid Brotherhood. In Proceedings of the 9th Biarennial Workshop about Symposium on Robot Dance Party of Conference in Celebration of Harry Q. Bovik's 0x40th Birthday, April 1, 2010. (presentation and source code)

The Plaid project was supported by NSF grant #CCF-1116907, Foundations of Permission-Based Object-Oriented Languages.