Website | Source | Specification
Not currently under development; moved on to Wyvern.
Publications:
 * First-Class State Change in Plaid
 * Gradual Typestate
 * Permission-Based Programming Languages
 * Typestate-Oriented Programming
 * Concurrency by Default: Using Permissions to Express Dataflow in Stateful Programs
Typestate:
state File {
  public final String filename;
}
state OpenFile extends File {
  private CFilePtr filePtr;
  public int read() { ... }
  public void close() [OpenFile>>ClosedFile]
  { ... }
}
state ClosedFile extends File {
  public void open() [ClosedFile>>OpenFile]
  { ... }
}
Last modified 17 October 2025