I Brazilian Conference on Software: Theory and Practice

SBLP - Keynote

Plaid: Centering a Language Design around Resources
Jonathan Aldrich (Carnegie Mellon University, USA)


Plaid: Centering a Language Design around Resources
Jonathan Aldrich (Carnegie Mellon University, USA)

Abstract

As programming moves beyond algorithms and towards component composition and interaction with the world, managing software resources becomes increasingly difficult. Resources are objects whose use is constrained in some way. Example constraints include initializing resources before use, cleaning up resources when they are no longer needed, or following protocols such as checking for permission before performing an action on a resource.

This talk describes how the Plaid programming language is designed to facilitate programming with resources. Rather than being an instance of a fixed class, every object in Plaid is in a state that is changeable. Like a class, each state has its own interface, representation, and behavior, allowing the source code to naturally model the conceptual evolution of objects.

In order to help the programmer reason about resources, Plaid's permission-based type system tracks the state of objects and their aliases. Types are optional, and cast-like permission assertions enable the dynamic recovery of aliasing knowledge. Aliasing information in the type system allows Plaid programs to execute concurrently whenever operations are provably noninterfering. Together, these features support cleaner modeling of resource constraints, effective support in checking them, and efficient parallel execution on emerging multicore processors.